@serviceme/devtools-shared 1.0.0 → 2.0.1

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.
package/dist/index.js CHANGED
@@ -64,6 +64,7 @@ __export(index_exports, {
64
64
  isGitHubLocalEmail: () => isGitHubLocalEmail,
65
65
  isProviderCacheControlAware: () => isProviderCacheControlAware,
66
66
  isValidCanonicalSlug: () => isValidCanonicalSlug,
67
+ isWholePackageInstall: () => isWholePackageInstall,
67
68
  listPresetModelGroups: () => listPresetModelGroups,
68
69
  lookupModelMetadata: () => lookupModelMetadata,
69
70
  normalizeCanonicalSlug: () => normalizeCanonicalSlug,
@@ -71,6 +72,7 @@ __export(index_exports, {
71
72
  normalizeGitUrl: () => normalizeGitUrl,
72
73
  parsePayload: () => parsePayload,
73
74
  protocolForBaseUrl: () => protocolForBaseUrl,
75
+ registrationIdFromPackageId: () => registrationIdFromPackageId,
74
76
  resolvePrimaryEmail: () => resolvePrimaryEmail,
75
77
  safeJson: () => safeJson,
76
78
  unionProviderModelWithPreset: () => unionProviderModelWithPreset
@@ -575,6 +577,53 @@ var PRIMARY_METADATA = {
575
577
  maxInputTokens: 1e6,
576
578
  maxOutputTokens: 128e3
577
579
  },
580
+ // GLM-5.3-Flash (2026-08-26) — GLM-5 系列首个原生多模态模型,
581
+ // 320B 总参 / 18B 激活,稀疏+线性注意力混合架构,1M 上下文。
582
+ // 视觉能力原生融入 Coding 循环(自动观察 UI 渲染/交互反馈并迭代)。
583
+ // 比 GLM-5.3 attention 计算量与 KV 缓存分别降低 3.01× / 4.44×。
584
+ // Source:
585
+ // https://docs.bigmodel.cn/cn/guide/start/model-overview
586
+ // https://z.ai/blog/glm-5.3-flash
587
+ // https://bigmodel.cn/pricing (screenshot 2026-08-26 — 截图列
588
+ // 出了限时免费期内的价格,带「5 折限时 2 周」角标,正常定价未
589
+ // 公开列在定价页)。
590
+ // 截图定价(screenshot 2026-08-26,原价):
591
+ // 上下文: 1M
592
+ // 输入: ¥0.4 / M tokens(原文"0.4 元",灰显 0.8 元)
593
+ // 输出: ¥1.4 / M tokens(原文"1.4 元",灰显 2.8 元)
594
+ // 缓存存储: 限时免费(写时按"百万 tokens/小时",我们的
595
+ // `ModelPricing` schema 没有缓存存储字段,忽略)
596
+ // 缓存命中: ¥0.115 / M tokens(原文"0.115 元",灰显 0.23 元)
597
+ // 灰显数字是 5 折限时的折后价,不是新价。优惠结束后回到 0.4/1.4/0.115。
598
+ // USD 按项目的 CNY/7 镜像取两位小数,与 glm-5.2 / glm-5.3 风格保持一致。
599
+ "glm-5.3-flash": {
600
+ detail: "GLM-5.3 Flash \u2014 320B/18B \u6FC0\u6D3B,\u7A00\u758F+\u7EBF\u6027\u6CE8\u610F\u529B\u6DF7\u5408\u67B6\u6784,\u539F\u751F\u591A\u6A21\u6001\u89C6\u89C9 Coding,1M \u4E0A\u4E0B\u6587",
601
+ // 原生多模态:支持图片 / 视频 / 文件 / 文本(imageInput=true)。
602
+ imageInput: true,
603
+ toolCalling: true,
604
+ // 思考模式:`thinking.type` 仅支持 `enabled`(不支持关闭),
605
+ // 控制深度靠 `reasoning_effort`(low/high/max)。与 glm-5.3
606
+ // 共用同一 schema。
607
+ thinkingSchema: "reasoningEffort",
608
+ supportsReasoningEffort: true,
609
+ // CNY 直接取截图数字(¥0.4 / ¥1.4 / ¥0.115);USD = CNY/7
610
+ // 镜像取两位小数:
611
+ // 0.4 / 7 = 0.0571... → 0.057
612
+ // 1.4 / 7 = 0.2
613
+ // 0.115 / 7 = 0.01643... → 0.0164
614
+ // 这与 glm-5.2 (¥8/¥28/¥2 → $1.12/$3.92/$0.28) 的
615
+ // 四舍五入风格保持一致;glm-5.3 用的 USD 国际独立价
616
+ // ($1.4/$4.4/$0.26) 不适用于本条目 — 截图明确是 CNY
617
+ // 国内口径。
618
+ pricingUSD: { input: 0.057, output: 0.2, cacheRead: 0.0164 },
619
+ pricingCNY: { input: 0.4, output: 1.4, cacheRead: 0.115 },
620
+ priceCategory: "low",
621
+ maxInputTokens: 1e6,
622
+ // 官方未单独发布 5.3-Flash 的 max output。按 GLM-5.3 系列
623
+ // 共识取 128K(与 glm-5.2 / glm-5.3 同),保守留 buffer
624
+ // 给输入。
625
+ maxOutputTokens: 128e3
626
+ },
578
627
  // GLM-5.1-HighSpeed (2026-05) — production-grade high-throughput
579
628
  // variant of GLM-5.1. Same 200K context + 128K output, but optimised
580
629
  // via Zhipu's TileRT inference engine for 400 TPS output (~2× the
@@ -1313,16 +1362,8 @@ var BUILTIN_PROVIDER_PRESETS = {
1313
1362
  // (otherwise the user's added model never shows up in the
1314
1363
  // Copilot Chat picker).
1315
1364
  models: [
1316
- buildPresetModel(
1317
- "MiniMax-M3",
1318
- "MiniMax-M3",
1319
- "https://api.minimaxi.com/anthropic"
1320
- ),
1321
- buildPresetModel(
1322
- "MiniMax-M2.7",
1323
- "MiniMax-M2.7",
1324
- "https://api.minimaxi.com/anthropic"
1325
- ),
1365
+ buildPresetModel("MiniMax-M3", "MiniMax-M3", "https://api.minimaxi.com/anthropic"),
1366
+ buildPresetModel("MiniMax-M2.7", "MiniMax-M2.7", "https://api.minimaxi.com/anthropic"),
1326
1367
  buildPresetModel(
1327
1368
  "MiniMax-M2.7-highspeed",
1328
1369
  "MiniMax-M2.7-highspeed",
@@ -1332,11 +1373,7 @@ var BUILTIN_PROVIDER_PRESETS = {
1332
1373
  // predecessor of M2.7. Still in the catalog and often
1333
1374
  // available on MiniMax's promotional $0.30/$1.20 rate, so
1334
1375
  // keep it as a preset for users on the M2.5 plan tier.
1335
- buildPresetModel(
1336
- "MiniMax-M2.5",
1337
- "MiniMax-M2.5",
1338
- "https://api.minimaxi.com/anthropic"
1339
- )
1376
+ buildPresetModel("MiniMax-M2.5", "MiniMax-M2.5", "https://api.minimaxi.com/anthropic")
1340
1377
  ]
1341
1378
  },
1342
1379
  deepseek: {
@@ -1358,16 +1395,8 @@ var BUILTIN_PROVIDER_PRESETS = {
1358
1395
  // the recommended default — users still on V3 can override
1359
1396
  // these defaults in the ProvidersTab form.
1360
1397
  models: [
1361
- buildPresetModel(
1362
- "deepseek-v4-flash",
1363
- "DeepSeek V4 Flash",
1364
- "https://api.deepseek.com/v1"
1365
- ),
1366
- buildPresetModel(
1367
- "deepseek-v4-pro",
1368
- "DeepSeek V4 Pro",
1369
- "https://api.deepseek.com/v1"
1370
- )
1398
+ buildPresetModel("deepseek-v4-flash", "DeepSeek V4 Flash", "https://api.deepseek.com/v1"),
1399
+ buildPresetModel("deepseek-v4-pro", "DeepSeek V4 Pro", "https://api.deepseek.com/v1")
1371
1400
  ]
1372
1401
  },
1373
1402
  agnes: {
@@ -1381,26 +1410,14 @@ var BUILTIN_PROVIDER_PRESETS = {
1381
1410
  // benchmark-listed alpha — followed by the flash tier
1382
1411
  // newest-first.
1383
1412
  models: [
1384
- buildPresetModel(
1385
- "agnes-2.5-pro",
1386
- "Agnes 2.5 Pro",
1387
- "https://apihub.agnes-ai.com/v1"
1388
- ),
1413
+ buildPresetModel("agnes-2.5-pro", "Agnes 2.5 Pro", "https://apihub.agnes-ai.com/v1"),
1389
1414
  buildPresetModel(
1390
1415
  "agnes-2.5-pro-alpha",
1391
1416
  "Agnes 2.5 Pro Alpha",
1392
1417
  "https://apihub.agnes-ai.com/v1"
1393
1418
  ),
1394
- buildPresetModel(
1395
- "agnes-2.5-flash",
1396
- "Agnes 2.5 Flash",
1397
- "https://apihub.agnes-ai.com/v1"
1398
- ),
1399
- buildPresetModel(
1400
- "agnes-2.0-flash",
1401
- "Agnes 2.0 Flash",
1402
- "https://apihub.agnes-ai.com/v1"
1403
- )
1419
+ buildPresetModel("agnes-2.5-flash", "Agnes 2.5 Flash", "https://apihub.agnes-ai.com/v1"),
1420
+ buildPresetModel("agnes-2.0-flash", "Agnes 2.0 Flash", "https://apihub.agnes-ai.com/v1")
1404
1421
  ]
1405
1422
  },
1406
1423
  kimi: {
@@ -1408,11 +1425,7 @@ var BUILTIN_PROVIDER_PRESETS = {
1408
1425
  baseUrl: "https://api.moonshot.cn/v1",
1409
1426
  models: [
1410
1427
  buildPresetModel("kimi-k3", "Kimi K3", "https://api.moonshot.cn/v1"),
1411
- buildPresetModel(
1412
- "kimi-k2.7-code",
1413
- "Kimi K2.7 Code",
1414
- "https://api.moonshot.cn/v1"
1415
- ),
1428
+ buildPresetModel("kimi-k2.7-code", "Kimi K2.7 Code", "https://api.moonshot.cn/v1"),
1416
1429
  buildPresetModel(
1417
1430
  "kimi-k2.7-code-highspeed",
1418
1431
  "Kimi K2.7 Code HighSpeed",
@@ -1490,67 +1503,28 @@ var BUILTIN_PROVIDER_PRESETS = {
1490
1503
  // `MODEL_METADATA` entries are kept so the id is still
1491
1504
  // resolvable for the curated detail / pricing columns.
1492
1505
  models: [
1493
- buildPresetModel(
1494
- "glm-5.3",
1495
- "GLM-5.3",
1496
- "https://open.bigmodel.cn/api/paas/v4"
1497
- ),
1498
- buildPresetModel(
1499
- "glm-5.2",
1500
- "GLM-5.2",
1501
- "https://open.bigmodel.cn/api/paas/v4"
1502
- ),
1503
- buildPresetModel(
1504
- "glm-5.1",
1505
- "GLM-5.1",
1506
- "https://open.bigmodel.cn/api/paas/v4"
1507
- ),
1508
- buildPresetModel(
1509
- "glm-5",
1510
- "GLM-5",
1511
- "https://open.bigmodel.cn/api/paas/v4"
1512
- ),
1513
- buildPresetModel(
1514
- "glm-5-turbo",
1515
- "GLM-5 Turbo",
1516
- "https://open.bigmodel.cn/api/paas/v4"
1517
- ),
1518
- buildPresetModel(
1519
- "glm-4.7",
1520
- "GLM-4.7",
1521
- "https://open.bigmodel.cn/api/paas/v4"
1522
- ),
1523
- buildPresetModel(
1524
- "glm-4.6",
1525
- "GLM-4.6",
1526
- "https://open.bigmodel.cn/api/paas/v4"
1527
- ),
1528
- buildPresetModel(
1529
- "glm-4.5-air",
1530
- "GLM-4.5 Air",
1531
- "https://open.bigmodel.cn/api/paas/v4"
1532
- ),
1533
- buildPresetModel(
1534
- "glm-4.5",
1535
- "GLM-4.5",
1536
- "https://open.bigmodel.cn/api/paas/v4"
1537
- )
1506
+ buildPresetModel("glm-5.3", "GLM-5.3", "https://open.bigmodel.cn/api/paas/v4"),
1507
+ // GLM-5.3-Flash (2026-08-26) — GLM-5 系列首个原生多模态
1508
+ // 模型,性价比高(¥0.4/¥1.4 per 1M tokens),接入 GLM Coding Plan
1509
+ // 后额度较 GLM-5.3 翻 3 倍。放在 5.3 后面,符合
1510
+ // 旗舰/快速版成对的展示惯例。
1511
+ buildPresetModel("glm-5.3-flash", "GLM-5.3 Flash", "https://open.bigmodel.cn/api/paas/v4"),
1512
+ buildPresetModel("glm-5.2", "GLM-5.2", "https://open.bigmodel.cn/api/paas/v4"),
1513
+ buildPresetModel("glm-5.1", "GLM-5.1", "https://open.bigmodel.cn/api/paas/v4"),
1514
+ buildPresetModel("glm-5", "GLM-5", "https://open.bigmodel.cn/api/paas/v4"),
1515
+ buildPresetModel("glm-5-turbo", "GLM-5 Turbo", "https://open.bigmodel.cn/api/paas/v4"),
1516
+ buildPresetModel("glm-4.7", "GLM-4.7", "https://open.bigmodel.cn/api/paas/v4"),
1517
+ buildPresetModel("glm-4.6", "GLM-4.6", "https://open.bigmodel.cn/api/paas/v4"),
1518
+ buildPresetModel("glm-4.5-air", "GLM-4.5 Air", "https://open.bigmodel.cn/api/paas/v4"),
1519
+ buildPresetModel("glm-4.5", "GLM-4.5", "https://open.bigmodel.cn/api/paas/v4")
1538
1520
  ]
1539
1521
  },
1540
1522
  stepfun: {
1541
1523
  displayName: "StepFun",
1542
1524
  baseUrl: "https://api.stepfun.com/v1",
1543
1525
  models: [
1544
- buildPresetModel(
1545
- "step-3.7-flash",
1546
- "Step 3.7 Flash",
1547
- "https://api.stepfun.com/v1"
1548
- ),
1549
- buildPresetModel(
1550
- "step-3.5-flash",
1551
- "Step 3.5 Flash",
1552
- "https://api.stepfun.com/v1"
1553
- ),
1526
+ buildPresetModel("step-3.7-flash", "Step 3.7 Flash", "https://api.stepfun.com/v1"),
1527
+ buildPresetModel("step-3.5-flash", "Step 3.5 Flash", "https://api.stepfun.com/v1"),
1554
1528
  buildPresetModel(
1555
1529
  "step-1o-turbo-vision",
1556
1530
  "Step 1o Turbo Vision",
@@ -1603,11 +1577,7 @@ var BUILTIN_PROVIDER_PRESETS = {
1603
1577
  displayName: "OpenRouter",
1604
1578
  baseUrl: "https://openrouter.ai/api/v1",
1605
1579
  models: [
1606
- buildPresetModel(
1607
- "openrouter/auto",
1608
- "OpenRouter Auto",
1609
- "https://openrouter.ai/api/v1"
1610
- )
1580
+ buildPresetModel("openrouter/auto", "OpenRouter Auto", "https://openrouter.ai/api/v1")
1611
1581
  ]
1612
1582
  },
1613
1583
  novita: {
@@ -1631,16 +1601,8 @@ var BUILTIN_PROVIDER_PRESETS = {
1631
1601
  "https://api.novita.ai/openai/v1"
1632
1602
  ),
1633
1603
  // GLM-5 系列 (2026-04/06)
1634
- buildPresetModel(
1635
- "zai/glm-5.2",
1636
- "GLM-5.2 (via Novita)",
1637
- "https://api.novita.ai/openai/v1"
1638
- ),
1639
- buildPresetModel(
1640
- "zai/glm-5.1",
1641
- "GLM-5.1 (via Novita)",
1642
- "https://api.novita.ai/openai/v1"
1643
- ),
1604
+ buildPresetModel("zai/glm-5.2", "GLM-5.2 (via Novita)", "https://api.novita.ai/openai/v1"),
1605
+ buildPresetModel("zai/glm-5.1", "GLM-5.1 (via Novita)", "https://api.novita.ai/openai/v1"),
1644
1606
  // Kimi K3 (2026-07-16 API, 2026-07-27 开源) — 1M context, 2.8T MoE
1645
1607
  buildPresetModel(
1646
1608
  "moonshotai/kimi-k3",
@@ -1713,11 +1675,7 @@ var BUILTIN_PROVIDER_PRESETS = {
1713
1675
  {
1714
1676
  // Live /v1/models: context_length 1048576,
1715
1677
  // max_output_length 131072, input_modalities ["text"] only.
1716
- ...buildPresetModel(
1717
- "glm-5.2",
1718
- "GLM-5.2 (via SenseNova)",
1719
- "https://token.sensenova.cn/v1"
1720
- ),
1678
+ ...buildPresetModel("glm-5.2", "GLM-5.2 (via SenseNova)", "https://token.sensenova.cn/v1"),
1721
1679
  maxInputTokens: 1048576,
1722
1680
  maxOutputTokens: 131072,
1723
1681
  capabilities: { supportsImageToText: false, supportsToolCalling: true }
@@ -1811,6 +1769,14 @@ var CERTIFICATE_BUNDLE_FORMATS = [
1811
1769
  }
1812
1770
  ];
1813
1771
 
1772
+ // src/copilot-customizations.ts
1773
+ function isWholePackageInstall(definition) {
1774
+ return definition.wholePackage === true || definition.artifacts?.some((artifact) => artifact.id.includes("::package:")) === true;
1775
+ }
1776
+ function registrationIdFromPackageId(packageId) {
1777
+ return packageId.replace("::", ":");
1778
+ }
1779
+
1814
1780
  // ../../node_modules/.pnpm/js-sha256@1.0.0/node_modules/js-sha256/src/node.mjs
1815
1781
  var import_crypto = require("crypto");
1816
1782
 
@@ -2337,6 +2303,7 @@ var WebviewMessageType = /* @__PURE__ */ ((WebviewMessageType2) => {
2337
2303
  WebviewMessageType2["InstallSkillRepoEntry"] = "installSkillRepoEntry";
2338
2304
  WebviewMessageType2["ConvertSkillRepoEntryToSymlink"] = "convertSkillRepoEntryToSymlink";
2339
2305
  WebviewMessageType2["UninstallSkillRepoEntry"] = "uninstallSkillRepoEntry";
2306
+ WebviewMessageType2["SetSkillRepoEntryEnabled"] = "setSkillRepoEntryEnabled";
2340
2307
  WebviewMessageType2["ListLinkedSkills"] = "listLinkedSkills";
2341
2308
  WebviewMessageType2["UpdateSkillRepoCatalog"] = "updateSkillRepoCatalog";
2342
2309
  WebviewMessageType2["UpdateSkillRepoInstall"] = "updateSkillRepoInstall";
@@ -2354,12 +2321,36 @@ var WebviewMessageType = /* @__PURE__ */ ((WebviewMessageType2) => {
2354
2321
  WebviewMessageType2["DisableRepository"] = "disableRepository";
2355
2322
  WebviewMessageType2["SyncRepository"] = "syncRepository";
2356
2323
  WebviewMessageType2["SyncAllRepositories"] = "syncAllRepositories";
2324
+ WebviewMessageType2["ResetParseCache"] = "resetParseCache";
2325
+ WebviewMessageType2["ListCopilotPlugins"] = "listCopilotPlugins";
2326
+ WebviewMessageType2["RegisterCopilotPlugin"] = "registerCopilotPlugin";
2327
+ WebviewMessageType2["UnregisterCopilotPlugin"] = "unregisterCopilotPlugin";
2328
+ WebviewMessageType2["SetCopilotPluginEnabled"] = "setCopilotPluginEnabled";
2329
+ WebviewMessageType2["GetCopilotContentStatus"] = "getCopilotContentStatus";
2330
+ WebviewMessageType2["RestoreCopilotContent"] = "restoreCopilotContent";
2331
+ WebviewMessageType2["ApproveCopilotContent"] = "approveCopilotContent";
2357
2332
  WebviewMessageType2["UpdateRepositoryList"] = "updateRepositoryList";
2358
2333
  WebviewMessageType2["UpdateRepositoryAdd"] = "updateRepositoryAdd";
2359
2334
  WebviewMessageType2["UpdateRepositoryUpdate"] = "updateRepositoryUpdate";
2360
2335
  WebviewMessageType2["UpdateRepositoryRemove"] = "updateRepositoryRemove";
2361
2336
  WebviewMessageType2["UpdateRepositoryToggle"] = "updateRepositoryToggle";
2362
2337
  WebviewMessageType2["UpdateRepositorySyncResult"] = "updateRepositorySyncResult";
2338
+ WebviewMessageType2["UpdateCopilotContentStatus"] = "updateCopilotContentStatus";
2339
+ WebviewMessageType2["GetCopilotCustomizations"] = "getCopilotCustomizations";
2340
+ WebviewMessageType2["SyncCopilotCustomizations"] = "syncCopilotCustomizations";
2341
+ WebviewMessageType2["UpdateCopilotCustomizations"] = "updateCopilotCustomizations";
2342
+ WebviewMessageType2["InstallCopilotPackage"] = "installCopilotPackage";
2343
+ WebviewMessageType2["MoveCopilotPackage"] = "moveCopilotPackage";
2344
+ WebviewMessageType2["UninstallCopilotPackage"] = "uninstallCopilotPackage";
2345
+ WebviewMessageType2["ListCopilotSources"] = "listCopilotSources";
2346
+ WebviewMessageType2["RemoveCopilotSource"] = "removeCopilotSource";
2347
+ WebviewMessageType2["PreviewCopilotUpdate"] = "previewCopilotUpdate";
2348
+ WebviewMessageType2["UpdateCopilotPackage"] = "updateCopilotPackage";
2349
+ WebviewMessageType2["PreviewCopilotLegacy"] = "previewCopilotLegacy";
2350
+ WebviewMessageType2["MigrateCopilotLegacy"] = "migrateCopilotLegacy";
2351
+ WebviewMessageType2["UpdateCopilotSources"] = "updateCopilotSources";
2352
+ WebviewMessageType2["UpdateCopilotUpdatePreview"] = "updateCopilotUpdatePreview";
2353
+ WebviewMessageType2["UpdateCopilotLegacyPreview"] = "updateCopilotLegacyPreview";
2363
2354
  WebviewMessageType2["GetUtilityModels"] = "getUtilityModels";
2364
2355
  WebviewMessageType2["UtilityModelsResponse"] = "utilityModelsResponse";
2365
2356
  WebviewMessageType2["UpdateUtilityModels"] = "updateUtilityModels";
@@ -2450,6 +2441,7 @@ function safeJson(text, fallback) {
2450
2441
  isGitHubLocalEmail,
2451
2442
  isProviderCacheControlAware,
2452
2443
  isValidCanonicalSlug,
2444
+ isWholePackageInstall,
2453
2445
  listPresetModelGroups,
2454
2446
  lookupModelMetadata,
2455
2447
  normalizeCanonicalSlug,
@@ -2457,6 +2449,7 @@ function safeJson(text, fallback) {
2457
2449
  normalizeGitUrl,
2458
2450
  parsePayload,
2459
2451
  protocolForBaseUrl,
2452
+ registrationIdFromPackageId,
2460
2453
  resolvePrimaryEmail,
2461
2454
  safeJson,
2462
2455
  unionProviderModelWithPreset