dsh-skill-hub 0.3.7 → 0.3.8

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 (109) hide show
  1. package/README.md +40 -50
  2. package/README.zh.md +38 -48
  3. package/lib/client.js +2209 -1820
  4. package/lib/client.js.map +1 -1
  5. package/lib/index.js +653 -419
  6. package/lib/types/client/SkillHubSettingsCard.d.ts +1 -0
  7. package/lib/types/client/api.d.ts +12 -6
  8. package/lib/types/client/helpers.d.ts +0 -1
  9. package/lib/types/client/locales/common.d.ts +52 -0
  10. package/lib/types/client/locales/detail.d.ts +16 -0
  11. package/lib/types/client/locales/market.d.ts +73 -0
  12. package/lib/types/client/locales/settings.d.ts +41 -0
  13. package/lib/types/client/locales/skills.d.ts +65 -0
  14. package/lib/types/client/locales/sources.d.ts +35 -0
  15. package/lib/types/client/locales.d.ts +124 -118
  16. package/lib/types/client/panel/MarketSourceRow.d.ts +12 -0
  17. package/lib/types/client/panel/MarketView.d.ts +1 -0
  18. package/lib/types/client/panel/RepoScanCard.d.ts +10 -0
  19. package/lib/types/client/panel/hooks/shared.d.ts +72 -0
  20. package/lib/types/client/panel/hooks/useCatalogFlow.d.ts +62 -0
  21. package/lib/types/client/panel/hooks/useGroupFlow.d.ts +41 -0
  22. package/lib/types/client/panel/hooks/useMarketFlow.d.ts +73 -0
  23. package/lib/types/client/panel/hooks/useMetaFlow.d.ts +18 -0
  24. package/lib/types/client/panel/hooks/useSourceFlow.d.ts +44 -0
  25. package/lib/types/client/panel/market-format.d.ts +6 -0
  26. package/lib/types/client/panel/useSkillHub.d.ts +45 -73
  27. package/lib/types/client/settings-card.d.ts +20 -0
  28. package/lib/types/client/settings-form.d.ts +6 -0
  29. package/lib/types/protocol/api.d.ts +38 -0
  30. package/lib/types/protocol/catalog.d.ts +155 -0
  31. package/lib/types/protocol/config.d.ts +113 -0
  32. package/lib/types/protocol/groups.d.ts +95 -0
  33. package/lib/types/protocol/market.d.ts +94 -0
  34. package/lib/types/protocol/repo.d.ts +107 -0
  35. package/lib/types/protocol/sources.d.ts +139 -0
  36. package/lib/types/protocol/stats.d.ts +46 -0
  37. package/lib/types/protocol.d.ts +13 -743
  38. package/lib/types/repo/github-client.d.ts +42 -0
  39. package/lib/types/repo.d.ts +6 -17
  40. package/lib/types/routes/catalog.d.ts +7 -0
  41. package/lib/types/routes/config.d.ts +7 -0
  42. package/lib/types/routes/groups.d.ts +7 -0
  43. package/lib/types/routes/helpers.d.ts +145 -0
  44. package/lib/types/routes/market.d.ts +8 -0
  45. package/lib/types/routes/repo-import.d.ts +7 -0
  46. package/lib/types/routes/route-state.d.ts +55 -0
  47. package/lib/types/routes/sources.d.ts +8 -0
  48. package/lib/types/routes.d.ts +5 -34
  49. package/lib/types/stats.d.ts +3 -2
  50. package/lib/types/store/errors.d.ts +10 -0
  51. package/lib/types/store/migrate.d.ts +44 -0
  52. package/lib/types/store/paths.d.ts +32 -0
  53. package/lib/types/store/store.d.ts +133 -0
  54. package/lib/types/store.d.ts +7 -146
  55. package/package.json +28 -27
  56. package/src/client/SkillHubSettingsCard.tsx +17 -3
  57. package/src/client/api.ts +101 -195
  58. package/src/client/helpers.ts +10 -1
  59. package/src/client/locales/common.ts +102 -0
  60. package/src/client/locales/detail.ts +30 -0
  61. package/src/client/locales/market.ts +144 -0
  62. package/src/client/locales/settings.ts +80 -0
  63. package/src/client/locales/skills.ts +128 -0
  64. package/src/client/locales/sources.ts +68 -0
  65. package/src/client/locales.ts +26 -512
  66. package/src/client/panel/MarketSourceRow.tsx +108 -0
  67. package/src/client/panel/MarketView.tsx +12 -253
  68. package/src/client/panel/RepoScanCard.tsx +171 -0
  69. package/src/client/panel/hooks/shared.ts +81 -0
  70. package/src/client/panel/hooks/useCatalogFlow.ts +211 -0
  71. package/src/client/panel/hooks/useGroupFlow.ts +240 -0
  72. package/src/client/panel/hooks/useMarketFlow.ts +421 -0
  73. package/src/client/panel/hooks/useMetaFlow.ts +58 -0
  74. package/src/client/panel/hooks/useSourceFlow.ts +193 -0
  75. package/src/client/panel/market-format.ts +22 -0
  76. package/src/client/panel/useSkillHub.ts +141 -1032
  77. package/src/client/settings-card.tsx +51 -0
  78. package/src/client/settings-form.ts +18 -0
  79. package/src/index.ts +14 -4
  80. package/src/protocol/api.ts +38 -0
  81. package/src/protocol/catalog.ts +168 -0
  82. package/src/protocol/config.ts +145 -0
  83. package/src/protocol/groups.ts +106 -0
  84. package/src/protocol/market.ts +100 -0
  85. package/src/protocol/repo.ts +104 -0
  86. package/src/protocol/sources.ts +146 -0
  87. package/src/protocol/stats.ts +42 -0
  88. package/src/protocol.ts +83 -809
  89. package/src/repo/github-client.ts +131 -0
  90. package/src/repo.test.ts +24 -1
  91. package/src/repo.ts +50 -170
  92. package/src/routes/catalog.ts +309 -0
  93. package/src/routes/config.ts +119 -0
  94. package/src/routes/groups.ts +133 -0
  95. package/src/routes/helpers.ts +489 -0
  96. package/src/routes/market.ts +255 -0
  97. package/src/routes/repo-import.ts +267 -0
  98. package/src/routes/route-state.ts +89 -0
  99. package/src/routes/sources.ts +318 -0
  100. package/src/routes.test.ts +20 -0
  101. package/src/routes.ts +21 -1699
  102. package/src/stats.test.ts +58 -3
  103. package/src/stats.ts +45 -16
  104. package/src/store/errors.ts +14 -0
  105. package/src/store/migrate.ts +272 -0
  106. package/src/store/paths.ts +43 -0
  107. package/src/store/store.ts +532 -0
  108. package/src/store.test.ts +18 -0
  109. package/src/store.ts +7 -737
@@ -20,6 +20,7 @@ export interface SkillHubSettingsState extends CardShell {
20
20
  showGroupSummary: FieldState;
21
21
  statsWindowDays: FieldState;
22
22
  statsScanMinutes: FieldState;
23
+ githubToken: FieldState;
23
24
  }
24
25
  /** The business face the card's slot registration injects. */
25
26
  export interface SkillHubSettingsCardFace {
@@ -2,13 +2,17 @@
2
2
  * Browser-side API client for the /api/skill-hub route family. The only
3
3
  * data access path the panel uses — plain fetch, same origin.
4
4
  */
5
- import { type CatalogResponse, type CollectionGroup, type ConfigRequest, type ConfigResponse, type CreateRequest, type CreateResponse, type MarketCheckResponse, type MarketSourcesResponse, type MarketSourceVersionsResponse, type MarketSyncResponse, type RepoDiscoverResponse, type RepoImportCancelResponse, type RepoImportProgressResponse, type RepoImportResponse, type SkillDetail, type SkillDeleteResponse, type SkillTag, type SourceCheckResponse, type SourceDeleteResponse, type SourceRestoreResponse, type SourceTrashClearResponse, type SourcesResponse, type SourceSyncResponse, type StatsResponse, type ToggleBatchResponse, type UpdateCheckResponse } from '../protocol.ts';
5
+ import { type CatalogResponse, type CollectionGroup, type ConfigRequest, type ConfigResponse, type CreateRequest, type CreateResponse, type DiagnosticFixResponse, type GroupsResponse, type MarketCheckResponse, type MarketSourcesResponse, type MarketSourceVersionsResponse, type MarketStatsResponse, type MarketSyncResponse, type RepoDiscoverResponse, type RepoImportCancelResponse, type RepoImportProgressResponse, type RepoImportResponse, type SkillDetail, type SkillDeleteResponse, type SkillTag, type SourceCheckResponse, type SourceDeleteResponse, type SourceRestoreResponse, type SourceTrashClearResponse, type SourcesResponse, type SourceSyncResponse, type StatsResponse, type TagSaveRequest, type ToggleBatchResponse, type UpdateCheckResponse } from '../protocol.ts';
6
6
  /** Error carrying the route's JSON error message. */
7
7
  export declare class SkillHubApiError extends Error {
8
8
  constructor(message: string);
9
9
  }
10
10
  /** The browser half's only data entry point. */
11
11
  export declare class SkillHubApi {
12
+ /** One GET round trip (query already encoded by the caller). */
13
+ private get;
14
+ /** One POST round trip (body omitted for routes that take none). */
15
+ private post;
12
16
  /** Catalog lookup options (cwd selects a workspace's project skills). */
13
17
  catalog(options?: {
14
18
  cwd?: string;
@@ -31,6 +35,8 @@ export declare class SkillHubApi {
31
35
  addMarketSource(repo: string): Promise<MarketSourcesResponse>;
32
36
  /** Remove a market source repo; resolves with the fresh list. */
33
37
  removeMarketSource(repo: string): Promise<MarketSourcesResponse>;
38
+ /** Stars + downloads per market source (hourly server-side cache; refresh=1 refetches stale entries). */
39
+ marketStats(refresh?: boolean): Promise<MarketStatsResponse>;
34
40
  /** Check every market source for updates (throttled server-side). */
35
41
  marketCheck(): Promise<MarketCheckResponse>;
36
42
  /** Align a market source to its pinned ref; resolves with tracked skills. */
@@ -54,13 +60,13 @@ export declare class SkillHubApi {
54
60
  /** Patch the hub's runtime config (null clears a saved override). */
55
61
  saveConfig(patch: ConfigRequest): Promise<ConfigResponse>;
56
62
  /** 用户 tag 分组 + 系统集合组 + origin 映射。 */
57
- groups(): Promise<import('../protocol.ts').GroupsResponse>;
63
+ groups(): Promise<GroupsResponse>;
58
64
  /** 新建(无 id)或重命名(带 id)一个 tag 分组;返回全部 tag。 */
59
- saveTag(payload: import('../protocol.ts').TagSaveRequest): Promise<import('../protocol.ts').SkillTag[]>;
65
+ saveTag(payload: TagSaveRequest): Promise<SkillTag[]>;
60
66
  /** 删除一个 tag 分组;返回全部 tag。 */
61
- deleteTag(id: string): Promise<import('../protocol.ts').SkillTag[]>;
67
+ deleteTag(id: string): Promise<SkillTag[]>;
62
68
  /** 直接设置某 tag 的完整成员列表;返回全部 tag。 */
63
- setTagMembers(id: string, skillNames: string[]): Promise<import('../protocol.ts').SkillTag[]>;
69
+ setTagMembers(id: string, skillNames: string[]): Promise<SkillTag[]>;
64
70
  /** 拖拽重排场景分组 */
65
71
  reorderTags(orderedIds: string[]): Promise<SkillTag[]>;
66
72
  /** 拖拽重排来源集合 */
@@ -80,5 +86,5 @@ export declare class SkillHubApi {
80
86
  /** Permanently delete every skill currently in the trash. */
81
87
  clearTrash(): Promise<SourceTrashClearResponse>;
82
88
  /** Auto-fix a fixable diagnostic (e.g. unquoted colon). */
83
- fixDiagnostic(path: string): Promise<import('../protocol.ts').DiagnosticFixResponse>;
89
+ fixDiagnostic(path: string): Promise<DiagnosticFixResponse>;
84
90
  }
@@ -3,7 +3,6 @@
3
3
  * based, family precedent) plus a small error-message extractor.
4
4
  */
5
5
  import { type HubKey, type TranslateValues } from './locales.ts';
6
- /** Active dictionary, picked by the document language at call time. */
7
6
  export declare function dictionary(): Record<string, string>;
8
7
  /** Translate a key with optional {name} template params (current language). */
9
8
  export declare function tt(key: HubKey, values?: TranslateValues): string;
@@ -0,0 +1,52 @@
1
+ /** 面板框架与通用:入口/视图切换/面板/图例/报错/更新检查/新建表单/诊断修复。从 locales.ts 按前缀拆出,键集合不变。 */
2
+ export declare const zhCommon: {
3
+ readonly 'entry.label': "技能";
4
+ readonly 'entry.tooltip': "技能中枢:浏览、分组与同步管理本地技能";
5
+ readonly 'view.sources': "来源";
6
+ readonly 'view.scenes': "场景";
7
+ readonly 'view.market': "市场";
8
+ readonly 'view.flat': "平铺";
9
+ readonly 'view.grouped': "分组";
10
+ readonly 'panel.title': "技能中枢";
11
+ readonly 'panel.count': "共 {count} 个技能";
12
+ readonly 'panel.disabledCount': "已禁用 {count}";
13
+ readonly 'panel.new': "新建技能";
14
+ readonly 'panel.search': "搜索技能…";
15
+ readonly 'legend.model': "模型可调 — Agent 可自动调用";
16
+ readonly 'legend.user': "用户可调 — 仅显式点名时触发";
17
+ readonly 'legend.hint': "每个技能最多一个圆点;无圆点 = 不可被调用。";
18
+ readonly 'panel.enabled': "已启用";
19
+ readonly 'panel.disabled': "已禁用";
20
+ readonly 'panel.diagnostics': "发现诊断";
21
+ readonly 'panel.empty': "没有匹配的技能。";
22
+ readonly 'panel.emptyAll': "本地还没有技能。点击「新建技能」创建第一个。";
23
+ readonly 'panel.loading': "读取中…";
24
+ readonly 'panel.incomplete': "(目录可能不完整)";
25
+ readonly 'panel.workspacePlaceholder': "工作区路径(回车应用)";
26
+ readonly 'panel.workspaceHint': "填写项目路径后,面板同时显示该项目 .dsh/skills 与 .agents/skills 下的技能(只读);留空回车恢复用户级视图。";
27
+ readonly 'panel.workspaceClear': "清除工作区";
28
+ readonly 'update.check': "检查更新";
29
+ readonly 'update.checking': "检查中…";
30
+ readonly 'update.upToDate': "已是最新版本 v{version}";
31
+ readonly 'update.available': "发现新版本 v{version}(当前 v{current})";
32
+ readonly 'update.newVersion': "新版本 v{version}";
33
+ readonly 'update.viewRelease': "查看发布";
34
+ readonly 'update.error': "检查更新失败:{error}";
35
+ readonly 'update.unavailable': "暂无可用的发布版本";
36
+ readonly 'diag.fix': "修复";
37
+ readonly 'diag.fixing': "修复中…";
38
+ readonly 'diag.fixed': "已修复";
39
+ readonly 'diag.fixConfirm': "用自动修复重写以下文件的 frontmatter?建议先备份:{path}";
40
+ readonly 'form.capabilityHint': "能力怎么选:重复方法 → 技能;外部系统 → MCP;长期资料 → 知识库。";
41
+ readonly 'form.descPlaceholder': "一句话说明用途(含触发词),Agent 靠它自动激活技能";
42
+ readonly 'form.name': "技能名(kebab-case,如 code-review)";
43
+ readonly 'form.desc': "描述(一句话路由说明)";
44
+ readonly 'form.root': "目标目录";
45
+ readonly 'form.submit': "创建";
46
+ readonly 'form.cancel': "取消";
47
+ readonly 'form.busy': "创建中…";
48
+ readonly 'form.success': "已创建:";
49
+ readonly 'form.error': "创建失败:";
50
+ readonly 'err.dismiss': "知道了";
51
+ };
52
+ export declare const enCommon: Record<keyof typeof zhCommon, string>;
@@ -0,0 +1,16 @@
1
+ /** 技能详情。从 locales.ts 按前缀拆出,键集合不变。 */
2
+ export declare const zhDetail: {
3
+ readonly 'detail.copyMention': "复制 $mention";
4
+ readonly 'detail.copyPath': "复制路径";
5
+ readonly 'detail.copied': "已复制";
6
+ readonly 'detail.back': "返回列表";
7
+ readonly 'detail.provider': "提供者";
8
+ readonly 'detail.addedAt': "添加时间";
9
+ readonly 'detail.updatedAt': "更新时间";
10
+ readonly 'detail.path': "路径";
11
+ readonly 'detail.whenToUse': "适用场景";
12
+ readonly 'detail.uses': "调用次数";
13
+ readonly 'detail.groups': "所属场景";
14
+ readonly 'detail.loading': "读取技能正文…";
15
+ };
16
+ export declare const enDetail: Record<keyof typeof zhDetail, string>;
@@ -0,0 +1,73 @@
1
+ /** 市场与仓库扫描导入。从 locales.ts 按前缀拆出,键集合不变。 */
2
+ export declare const zhMarket: {
3
+ readonly 'market.addPlaceholder': "owner/repo 或 https://github.com/…";
4
+ readonly 'market.addSource': "添加源";
5
+ readonly 'market.noSources': "还没有市场源。从下方内置市场添加,或输入一个 GitHub 仓库。";
6
+ readonly 'market.title': "市场";
7
+ readonly 'market.catalogHint': "精选技能仓库,添加后即可扫描安装,并持续检查更新。";
8
+ readonly 'market.catalog.anthropics': "Anthropic 官方技能合集(Claude Skills)";
9
+ readonly 'market.catalog.superpowers': "Superpowers 社区技能合集";
10
+ readonly 'market.catalog.mattpocock': "Matt Pocock 技能集";
11
+ readonly 'market.catalog.openDesign': "设计技能合集(design-templates)";
12
+ readonly 'market.add': "添加";
13
+ readonly 'market.installed': "已装 {count}";
14
+ readonly 'market.updatable': "可更新 {count}";
15
+ readonly 'market.deletedUpstream': "上游已删 {count}";
16
+ readonly 'market.checkAll': "检查全部";
17
+ readonly 'market.updateAll': "全部更新";
18
+ readonly 'market.updateAllConfirmTitle': "批量更新全部技能?";
19
+ readonly 'market.updateAllConfirmText': "将把以下来源的可更新技能更新到上游最新版本(覆盖本地修改):";
20
+ readonly 'market.updateAllItem': "{repo}({count} 个技能)";
21
+ readonly 'market.updateAllDone': "已更新 {count} 个来源";
22
+ readonly 'market.deleteSource': "移除源";
23
+ readonly 'market.scan': "扫描";
24
+ readonly 'market.scanning': "扫描中…";
25
+ readonly 'market.check': "检查";
26
+ readonly 'market.checkUpdate': "检查更新";
27
+ readonly 'market.checking': "检查中…";
28
+ readonly 'market.upToDate': "已是最新";
29
+ readonly 'market.update': "更新";
30
+ readonly 'market.updateCount': "更新 {count} 个";
31
+ readonly 'market.sync': "同步";
32
+ readonly 'market.syncing': "同步中…";
33
+ readonly 'market.updated': "有更新";
34
+ readonly 'market.newRelease': "新版本 v{version}";
35
+ readonly 'market.branchTitle': "选择分支";
36
+ readonly 'market.branchHint': "该仓库没有正式发布,选择要跟踪的分支(默认为 main):";
37
+ readonly 'market.branchConfirm': "确定";
38
+ readonly 'market.versionTitle': "切换跟踪版本";
39
+ readonly 'market.versionText': "选择 {repo} 要跟踪的版本,切换后建议重新扫描并同步已装技能";
40
+ readonly 'market.versionCurrent': "当前 {ref}";
41
+ readonly 'market.versionReleases': "发布版";
42
+ readonly 'market.versionBranches': "分支";
43
+ readonly 'market.versionCustom': "自定义(tag / 分支 / commit)";
44
+ readonly 'market.versionConfirm': "切换到 {ref}";
45
+ readonly 'market.versionHint': "点击切换跟踪版本";
46
+ readonly 'market.unpinned': "未定版";
47
+ readonly 'market.starsHint': "GitHub 星标 {count} 个";
48
+ readonly 'market.downloadsHint': "发布附件累计下载 {count} 次";
49
+ readonly 'market.syncTitle': "同步本地技能";
50
+ readonly 'market.syncText': "市场源已对齐到 {ref},要同步更新以下本地技能吗?";
51
+ readonly 'market.syncNone': "该来源还没有导入本地技能。";
52
+ readonly 'market.syncCancel': "跳过";
53
+ readonly 'market.removeHint': "移除源不影响已安装的技能。";
54
+ readonly 'repo.ready': "发现 {count} 个可导入技能";
55
+ readonly 'repo.truncated': "⚠ 仓库过大,仅展示部分技能(GitHub 截断),可缩小仓库或指定子目录";
56
+ readonly 'repo.empty': "没有找到可导入技能。";
57
+ readonly 'repo.selectAll': "全选";
58
+ readonly 'repo.clearAll': "清空";
59
+ readonly 'repo.import': "导入所选 ({count})";
60
+ readonly 'repo.importing': "导入中…";
61
+ readonly 'repo.existing': "已存在";
62
+ readonly 'repo.files': "{count} 个文件 · {size}";
63
+ readonly 'repo.imported': "导入成功 {count} 个";
64
+ readonly 'repo.skippedExisting': "跳过已存在 {count} 个";
65
+ readonly 'repo.failed': "失败 {count} 个";
66
+ readonly 'repo.cancel': "取消";
67
+ readonly 'repo.cancelled': "已取消 · 已导入 {imported}/{total} 已保留,临时文件已清理";
68
+ readonly 'repo.importingCurrent': "正在导入: {name} ({done}/{total})";
69
+ readonly 'repo.root.skills': "技能 skills";
70
+ readonly 'repo.root.designTemplates': "模板 design-templates";
71
+ readonly 'repo.root.generic': "{root}";
72
+ };
73
+ export declare const enMarket: Record<keyof typeof zhMarket, string>;
@@ -0,0 +1,41 @@
1
+ /** 设置卡。从 locales.ts 按前缀拆出,键集合不变。 */
2
+ export declare const zhSettings: {
3
+ readonly 'settings.title': "技能中枢";
4
+ readonly 'settings.description': "管理 dsh 本地技能目录:浏览、分组、来源同步与新建。";
5
+ readonly 'settings.enabled': "启用插件";
6
+ readonly 'settings.enabledHint': "关闭后技能中枢的路由、入口与公告全部下线。";
7
+ readonly 'settings.announceToAgent': "向 Agent 公告";
8
+ readonly 'settings.announceToAgentHint': "在系统提示中加入本插件说明,用户提到技能管理时 Agent 知道如何协作。";
9
+ readonly 'settings.dotModelColor': "模型可调圆点颜色";
10
+ readonly 'settings.dotModelColorHint': "技能行/聊天 / 菜单中「模型可调」蓝色圆点的颜色(#rrggbb)。";
11
+ readonly 'settings.dotUserColor': "用户可调圆点颜色";
12
+ readonly 'settings.dotUserColorHint': "技能行/聊天 / 菜单中「仅用户可调」绿色圆点的颜色(#rrggbb)。";
13
+ readonly 'settings.showUseCount': "显示调用次数";
14
+ readonly 'settings.showUseCountHint': "在技能名旁显示琥珀色调用次数。";
15
+ readonly 'settings.showUseTime': "显示最近调用时间";
16
+ readonly 'settings.showUseTimeHint': "在技能名行右侧显示相对时间(如「3 天前」)。";
17
+ readonly 'settings.showGroupSummary': "显示分组汇总";
18
+ readonly 'settings.showGroupSummaryHint': "在分组标题后汇总调用次数与最近调用时间。";
19
+ readonly 'settings.statsWindowDays': "统计窗口(天)";
20
+ readonly 'settings.statsWindowDaysHint': "只统计最近 N 天的使用次数,默认 14 天;0 = 全部历史。改动立即生效。";
21
+ readonly 'settings.statsScanMinutes': "自动统计间隔(分钟)";
22
+ readonly 'settings.statsScanMinutesHint': "后台扫描会话日志的间隔,最小 1 分钟;扫描耗时会自动拉长间隔。";
23
+ readonly 'settings.githubToken': "GitHub Token";
24
+ readonly 'settings.githubTokenHint': "市场/来源走 GitHub API,匿名每小时 60 次,填 token 后 5000 次。细粒度 token 无需任何权限。明文存本地设置,仅回环可读;留空即匿名(或跟随 GITHUB_TOKEN 环境变量)。";
25
+ readonly 'settings.githubTokenPlaceholder': "ghp_… / github_pat_…(留空为匿名)";
26
+ readonly 'settings.inherit': "继承";
27
+ readonly 'settings.on': "开";
28
+ readonly 'settings.off': "关";
29
+ readonly 'settings.overridden': "已覆盖";
30
+ readonly 'settings.reset': "恢复默认";
31
+ readonly 'settings.unsaved': "未保存";
32
+ readonly 'settings.save': "保存";
33
+ readonly 'settings.saving': "保存中…";
34
+ readonly 'settings.discard': "放弃修改";
35
+ readonly 'settings.saveFailed': "本部署没有接受这些值,已保留供你修改。";
36
+ readonly 'settings.readOnly': "本部署的设置为只读。";
37
+ readonly 'settings.notExposed': "本部署没有挂载该设置命名空间。";
38
+ readonly 'settings.collapse': "收起设置";
39
+ readonly 'settings.expand': "展开设置";
40
+ };
41
+ export declare const enSettings: Record<keyof typeof zhSettings, string>;
@@ -0,0 +1,65 @@
1
+ /** 技能浏览:行徽章/分组/场景/过滤排序/相对时间。从 locales.ts 按前缀拆出,键集合不变。 */
2
+ export declare const zhSkills: {
3
+ readonly 'group.project-dsh': "项目 .dsh/skills";
4
+ readonly 'group.project-agents': "项目 .agents/skills";
5
+ readonly 'group.custom': "自定义目录";
6
+ readonly 'group.runtime': "运行时";
7
+ readonly 'group.user-dsh': "用户 ~/.dsh/skills";
8
+ readonly 'group.user-agents': "用户 ~/.agents/skills";
9
+ readonly 'group.bundled': "内置";
10
+ readonly 'group.other': "其他来源";
11
+ readonly 'groups.new': "新建场景";
12
+ readonly 'groups.namePlaceholder': "场景名";
13
+ readonly 'groups.edit': "编辑";
14
+ readonly 'groups.rename': "保存名称";
15
+ readonly 'groups.delete': "删除场景";
16
+ readonly 'groups.saveMembers': "保存成员";
17
+ readonly 'groups.membersHint': "勾选技能加入此场景(含已禁用)。";
18
+ readonly 'groups.empty': "还没有场景。先新建一个,再把技能归类。";
19
+ readonly 'groups.noCollections': "暂无来源组。从市场导入技能后自动按来源聚合。";
20
+ readonly 'groups.personal': "个人";
21
+ readonly 'groups.project': "项目级";
22
+ readonly 'groups.subdivide': "细分";
23
+ readonly 'groups.merge': "合并";
24
+ readonly 'groups.noWritable': "该组没有可写技能(只读技能无法由中枢开关)";
25
+ readonly 'groups.closeAll': "全部关闭";
26
+ readonly 'groups.keepOn': "保留开启";
27
+ readonly 'groups.conflictTitle': "关闭此组?";
28
+ readonly 'groups.conflictText': "以下技能也在其他组中开启,关闭它们会影响那些组:";
29
+ readonly 'filter.allSources': "全部来源";
30
+ readonly 'filter.private': "个人";
31
+ readonly 'sort.name': "按名称";
32
+ readonly 'sort.added': "按添加时间";
33
+ readonly 'sort.uses': "按调用次数";
34
+ readonly 'time.justNow': "刚刚";
35
+ readonly 'time.minutesAgo': "{value} 分钟前";
36
+ readonly 'time.hoursAgo': "{value} 小时前";
37
+ readonly 'time.daysAgo': "{value} 天前";
38
+ readonly 'time.weeksAgo': "{value} 周前";
39
+ readonly 'badge.source.project-dsh': "项目 .dsh";
40
+ readonly 'badge.source.project-agents': "项目 .agents";
41
+ readonly 'badge.source.custom': "自定义";
42
+ readonly 'badge.source.runtime': "运行时";
43
+ readonly 'badge.source.user-dsh': "用户 .dsh";
44
+ readonly 'badge.source.user-agents': "用户 .agents";
45
+ readonly 'badge.source.bundled': "内置";
46
+ readonly 'row.readonly': "只读";
47
+ readonly 'row.disable': "禁用";
48
+ readonly 'row.enable': "启用";
49
+ readonly 'row.delete': "移入回收站";
50
+ readonly 'row.open': "查看 {name} 详情(回车)";
51
+ readonly 'row.duplicate': "重名";
52
+ readonly 'row.duplicateHint': "同名技能存在多个来源,当前显示为优先级最高的版本";
53
+ readonly 'row.copy': "复制";
54
+ readonly 'row.copyMention': "复制 $mention";
55
+ readonly 'row.copied': "已复制";
56
+ readonly 'row.copyPath': "复制路径";
57
+ readonly 'filter.invocation': "调用";
58
+ readonly 'filter.invocationAll': "全部调用";
59
+ readonly 'filter.modelOnly': "模型可调";
60
+ readonly 'filter.userOnly': "用户可调";
61
+ readonly 'filter.showing': "显示 {shown}/{total}(已启用){filtered}";
62
+ readonly 'filter.filteredSuffix': " · 已筛选";
63
+ readonly 'filter.shortened': "短描述 {count} 条,悬浮看全文";
64
+ };
65
+ export declare const enSkills: Record<keyof typeof zhSkills, string>;
@@ -0,0 +1,35 @@
1
+ /** 来源跟踪与回收站(含删除确认)。从 locales.ts 按前缀拆出,键集合不变。 */
2
+ export declare const zhSources: {
3
+ readonly 'delete.confirmTitle': "移入回收站?";
4
+ readonly 'delete.confirmText': "确定把「{name}」移入回收站吗?可随时恢复。";
5
+ readonly 'delete.confirm': "移入回收站";
6
+ readonly 'source.private': "个人技能(未绑定上游,不检查更新)";
7
+ readonly 'source.commit': "已同步版本";
8
+ readonly 'source.unverified': "尚未核对上游";
9
+ readonly 'source.check': "检查更新";
10
+ readonly 'source.checkHint': "点击检查上游更新";
11
+ readonly 'source.checking': "检查中…";
12
+ readonly 'source.upToDate': "已是最新";
13
+ readonly 'source.updated': "有更新 {count} 个";
14
+ readonly 'source.deleted': "上游已删除 {count} 个";
15
+ readonly 'source.error': "检查失败";
16
+ readonly 'source.throttled': "刚刚检查过";
17
+ readonly 'source.sync': "同步";
18
+ readonly 'source.syncing': "同步中…";
19
+ readonly 'source.syncConfirmTitle': "同步技能?";
20
+ readonly 'source.syncConfirmText': "将用上游最新版本覆盖本地对以下技能的所有修改:";
21
+ readonly 'source.followDelete': "跟进删除";
22
+ readonly 'source.deleteConfirmTitle': "跟进上游删除?";
23
+ readonly 'source.deleteConfirmText': "以下技能已从上游仓库移除,本地目录将移入回收站(可恢复):";
24
+ readonly 'source.deleteGroup': "删除整组";
25
+ readonly 'source.deleteGroupHint': "删除该分组下的全部 {count} 个技能";
26
+ readonly 'source.deleteGroupTitle': "删除整组?";
27
+ readonly 'source.deleteGroupText': "将把分组“{name}”下的全部 {count} 个技能移入回收站(可恢复),只读技能会跳过:";
28
+ readonly 'source.trash': "回收站";
29
+ readonly 'source.restore': "恢复";
30
+ readonly 'source.clearTrash': "清空回收站";
31
+ readonly 'source.clearTrashConfirmTitle': "清空回收站?";
32
+ readonly 'source.clearTrashConfirmText': "回收站里的技能会被永久删除,无法恢复。此操作不可撤销。";
33
+ readonly 'source.clearTrashConfirm': "永久删除";
34
+ };
35
+ export declare const enSources: Record<keyof typeof zhSources, string>;