@eddyskywalker/dsh-chatgpt-subscription 0.44.0 → 0.46.0

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 (47) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/lib/client.js +32 -0
  3. package/lib/client.js.map +1 -1
  4. package/lib/index.js +2888 -93
  5. package/lib/types/client/kimi-code/KimiCodeSection.d.ts.map +1 -1
  6. package/lib/types/client/kimi-code/locales.d.ts +11 -2
  7. package/lib/types/client/kimi-code/locales.d.ts.map +1 -1
  8. package/lib/types/client/locales-ru/kimi-code.d.ts.map +1 -1
  9. package/lib/types/compat.d.ts +1 -1
  10. package/lib/types/host/cache-warmup/budget.d.ts +79 -0
  11. package/lib/types/host/cache-warmup/budget.d.ts.map +1 -0
  12. package/lib/types/host/cache-warmup/contracts.d.ts +280 -0
  13. package/lib/types/host/cache-warmup/contracts.d.ts.map +1 -0
  14. package/lib/types/host/cache-warmup/index.d.ts +21 -0
  15. package/lib/types/host/cache-warmup/index.d.ts.map +1 -0
  16. package/lib/types/host/cache-warmup/install.d.ts +138 -0
  17. package/lib/types/host/cache-warmup/install.d.ts.map +1 -0
  18. package/lib/types/host/cache-warmup/logging.d.ts +120 -0
  19. package/lib/types/host/cache-warmup/logging.d.ts.map +1 -0
  20. package/lib/types/host/cache-warmup/projection.d.ts +29 -0
  21. package/lib/types/host/cache-warmup/projection.d.ts.map +1 -0
  22. package/lib/types/host/cache-warmup/result-tool.d.ts +87 -0
  23. package/lib/types/host/cache-warmup/result-tool.d.ts.map +1 -0
  24. package/lib/types/host/cache-warmup/settings.d.ts +73 -0
  25. package/lib/types/host/cache-warmup/settings.d.ts.map +1 -0
  26. package/lib/types/host/cache-warmup/store.d.ts +108 -0
  27. package/lib/types/host/cache-warmup/store.d.ts.map +1 -0
  28. package/lib/types/host/cache-warmup/usage.d.ts +96 -0
  29. package/lib/types/host/cache-warmup/usage.d.ts.map +1 -0
  30. package/lib/types/host/cline-pass/adapter.d.ts.map +1 -1
  31. package/lib/types/host/cline-pass/mapper.d.ts +10 -0
  32. package/lib/types/host/cline-pass/mapper.d.ts.map +1 -1
  33. package/lib/types/host/kimi-code/adapter.d.ts.map +1 -1
  34. package/lib/types/host/kimi-code/routes.d.ts.map +1 -1
  35. package/lib/types/host/kimi-code/session-cache-state.d.ts +12 -0
  36. package/lib/types/host/kimi-code/session-cache-state.d.ts.map +1 -1
  37. package/lib/types/host/opendesign/adapter.d.ts +15 -0
  38. package/lib/types/host/opendesign/adapter.d.ts.map +1 -1
  39. package/lib/types/host/opendesign/mapper.d.ts +50 -3
  40. package/lib/types/host/opendesign/mapper.d.ts.map +1 -1
  41. package/lib/types/index.d.ts +11 -0
  42. package/lib/types/index.d.ts.map +1 -1
  43. package/lib/types/shared/kimi-code-contracts.d.ts +13 -0
  44. package/lib/types/shared/kimi-code-contracts.d.ts.map +1 -1
  45. package/lib/types/shared/model-catalog.d.ts +12 -1
  46. package/lib/types/shared/model-catalog.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"KimiCodeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/KimiCodeSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AA0BvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AA6BD,wBAAgB,eAAe,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAyrBhG"}
1
+ {"version":3,"file":"KimiCodeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/KimiCodeSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AA0BvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AA6BD,wBAAgB,eAAe,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAosBhG"}
@@ -96,6 +96,9 @@ export declare const zh: {
96
96
  readonly cacheOutput: "输出 tokens";
97
97
  readonly cacheRequests: "请求数";
98
98
  readonly cacheWrite: "缓存写入";
99
+ readonly cacheWarmupLabel: "结果预览预算";
100
+ readonly cacheWarmupWarming: "预热中 ({hits}/{required}) · 上限 {chars} 字符";
101
+ readonly cacheWarmupSettled: "稳态 ({hits}/{required}) · 上限 {chars} 字符";
99
102
  readonly unknownMetric: "暂无";
100
103
  readonly cacheExpired: "本会话已空闲超过缓存有效期,下一轮将重新处理约 {tokens} 个 token。";
101
104
  readonly cacheDrift: "最近前缀状态";
@@ -292,6 +295,9 @@ export declare const dictionaries: {
292
295
  readonly cacheOutput: "输出 tokens";
293
296
  readonly cacheRequests: "请求数";
294
297
  readonly cacheWrite: "缓存写入";
298
+ readonly cacheWarmupLabel: "结果预览预算";
299
+ readonly cacheWarmupWarming: "预热中 ({hits}/{required}) · 上限 {chars} 字符";
300
+ readonly cacheWarmupSettled: "稳态 ({hits}/{required}) · 上限 {chars} 字符";
295
301
  readonly unknownMetric: "暂无";
296
302
  readonly cacheExpired: "本会话已空闲超过缓存有效期,下一轮将重新处理约 {tokens} 个 token。";
297
303
  readonly cacheDrift: "最近前缀状态";
@@ -486,6 +492,9 @@ export declare const dictionaries: {
486
492
  readonly cacheOutput: "输出 tokens";
487
493
  readonly cacheRequests: "请求数";
488
494
  readonly cacheWrite: "缓存写入";
495
+ readonly cacheWarmupLabel: "结果预览预算";
496
+ readonly cacheWarmupWarming: "预热中 ({hits}/{required}) · 上限 {chars} 字符";
497
+ readonly cacheWarmupSettled: "稳态 ({hits}/{required}) · 上限 {chars} 字符";
489
498
  readonly unknownMetric: "暂无";
490
499
  readonly cacheExpired: "本会话已空闲超过缓存有效期,下一轮将重新处理约 {tokens} 个 token。";
491
500
  readonly cacheDrift: "最近前缀状态";
@@ -583,8 +592,8 @@ export declare const dictionaries: {
583
592
  readonly quotaFactsScope: string;
584
593
  readonly composerLabel: string;
585
594
  };
586
- en: Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "deviceCodeHint" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "effortLow" | "effortHigh" | "effortMax" | "quotaUnknown" | "resetAt" | "copied" | "region" | "quotaPlan" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capThinkingOnly" | "capEfforts" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capThinkingOnlyFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "effortThinkingOnlyNote" | "effortNotOffered" | "cacheNote" | "cacheNoteHint" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheWrite" | "unknownMetric" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "kqTotal" | "kqTip" | "kqPoolKimi" | "kqPoolCode" | "kqResetAfter" | "kqAccount" | "kqAgo" | "kqLastUsed" | "kqShortWindow" | "kqRestUsed" | "kqExpires" | "kqJustNow" | "kqMinutesAgo" | "kqHoursAgo" | "kqDaysAgo" | "kqWindow5h" | "kqWindow7d" | "kqDurationDay" | "kqDurationHour" | "kqDurationMinute" | "kqResetIn" | "kqResetSoon" | "kqRegionMainland" | "kqRegionGlobal" | "requests" | "compactionRoute" | "compactionRouteHint" | "compactionRouteProvider" | "compactionRouteModel" | "compactionRouteSave" | "compactionRouteClear" | "compactionRouteChange" | "compactionRouteFollow" | "compactionRouteSaved" | "compactionRouteFailed" | "compactionRouteNoVideo" | "compactionRouteNoImage" | "compactionRouteEmpty", string>;
587
- 'en-US': Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "deviceCodeHint" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "effortLow" | "effortHigh" | "effortMax" | "quotaUnknown" | "resetAt" | "copied" | "region" | "quotaPlan" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capThinkingOnly" | "capEfforts" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capThinkingOnlyFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "effortThinkingOnlyNote" | "effortNotOffered" | "cacheNote" | "cacheNoteHint" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheWrite" | "unknownMetric" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "kqTotal" | "kqTip" | "kqPoolKimi" | "kqPoolCode" | "kqResetAfter" | "kqAccount" | "kqAgo" | "kqLastUsed" | "kqShortWindow" | "kqRestUsed" | "kqExpires" | "kqJustNow" | "kqMinutesAgo" | "kqHoursAgo" | "kqDaysAgo" | "kqWindow5h" | "kqWindow7d" | "kqDurationDay" | "kqDurationHour" | "kqDurationMinute" | "kqResetIn" | "kqResetSoon" | "kqRegionMainland" | "kqRegionGlobal" | "requests" | "compactionRoute" | "compactionRouteHint" | "compactionRouteProvider" | "compactionRouteModel" | "compactionRouteSave" | "compactionRouteClear" | "compactionRouteChange" | "compactionRouteFollow" | "compactionRouteSaved" | "compactionRouteFailed" | "compactionRouteNoVideo" | "compactionRouteNoImage" | "compactionRouteEmpty", string>;
595
+ en: Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "deviceCodeHint" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "effortLow" | "effortHigh" | "effortMax" | "quotaUnknown" | "resetAt" | "copied" | "region" | "quotaPlan" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capThinkingOnly" | "capEfforts" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capThinkingOnlyFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "effortThinkingOnlyNote" | "effortNotOffered" | "cacheNote" | "cacheNoteHint" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheWrite" | "cacheWarmupLabel" | "cacheWarmupWarming" | "cacheWarmupSettled" | "unknownMetric" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "kqTotal" | "kqTip" | "kqPoolKimi" | "kqPoolCode" | "kqResetAfter" | "kqAccount" | "kqAgo" | "kqLastUsed" | "kqShortWindow" | "kqRestUsed" | "kqExpires" | "kqJustNow" | "kqMinutesAgo" | "kqHoursAgo" | "kqDaysAgo" | "kqWindow5h" | "kqWindow7d" | "kqDurationDay" | "kqDurationHour" | "kqDurationMinute" | "kqResetIn" | "kqResetSoon" | "kqRegionMainland" | "kqRegionGlobal" | "requests" | "compactionRoute" | "compactionRouteHint" | "compactionRouteProvider" | "compactionRouteModel" | "compactionRouteSave" | "compactionRouteClear" | "compactionRouteChange" | "compactionRouteFollow" | "compactionRouteSaved" | "compactionRouteFailed" | "compactionRouteNoVideo" | "compactionRouteNoImage" | "compactionRouteEmpty", string>;
596
+ 'en-US': Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "deviceCodeHint" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "effortLow" | "effortHigh" | "effortMax" | "quotaUnknown" | "resetAt" | "copied" | "region" | "quotaPlan" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capThinkingOnly" | "capEfforts" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capThinkingOnlyFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "effortThinkingOnlyNote" | "effortNotOffered" | "cacheNote" | "cacheNoteHint" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheWrite" | "cacheWarmupLabel" | "cacheWarmupWarming" | "cacheWarmupSettled" | "unknownMetric" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "kqTotal" | "kqTip" | "kqPoolKimi" | "kqPoolCode" | "kqResetAfter" | "kqAccount" | "kqAgo" | "kqLastUsed" | "kqShortWindow" | "kqRestUsed" | "kqExpires" | "kqJustNow" | "kqMinutesAgo" | "kqHoursAgo" | "kqDaysAgo" | "kqWindow5h" | "kqWindow7d" | "kqDurationDay" | "kqDurationHour" | "kqDurationMinute" | "kqResetIn" | "kqResetSoon" | "kqRegionMainland" | "kqRegionGlobal" | "requests" | "compactionRoute" | "compactionRouteHint" | "compactionRouteProvider" | "compactionRouteModel" | "compactionRouteSave" | "compactionRouteClear" | "compactionRouteChange" | "compactionRouteFollow" | "compactionRouteSaved" | "compactionRouteFailed" | "compactionRouteNoVideo" | "compactionRouteNoImage" | "compactionRouteEmpty", string>;
588
597
  };
589
598
  export type KimiCodeLocaleKey = keyof typeof zh;
590
599
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/locales.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,kBAAkB,CAAA;AAE3C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsKL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAoKrC,CAAA;AAEV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,EAAE,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/locales.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,kBAAkB,CAAA;AAE3C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyKL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAuKrC,CAAA;AAEV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,EAAE,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"kimi-code.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/kimi-code.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAqKxD,CAAA"}
1
+ {"version":3,"file":"kimi-code.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/kimi-code.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAwKxD,CAAA"}
@@ -71,7 +71,7 @@ export declare const ROUTE_PREFIX: "/api/dsh-chatgpt-subscription";
71
71
  * `test/responses-client.test.ts` asserts the two agree, so a release that
72
72
  * forgets this constant fails the suite instead of shipping quietly.
73
73
  */
74
- export declare const PLUGIN_VERSION: "0.44.0";
74
+ export declare const PLUGIN_VERSION: "0.46.0";
75
75
  export declare const CODEX_CHATGPT_PROVIDER_ID: "codex-chatgpt";
76
76
  export { MINIMAX_CODE_PROVIDER_ID, MINIMAX_CODE_ROUTE_PREFIX } from './shared/minimax-code-contracts.ts';
77
77
  export declare const CODEX_API_BASE: "https://chatgpt.com/backend-api/codex";
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 预热预算:预热期保守、连续命中后放大、漂移立刻收回。
3
+ *
4
+ * 控制器是**纯函数**:不发起请求、不改消息、不改登记表。它只回答一个问题 ——
5
+ * 「这一次预览最多能占多少字符」。把决策与执行分开,才能保证预算收紧或放开
6
+ * 都不会悄悄改写已经进入历史的文本(历史里的 preview 是常量)。
7
+ *
8
+ * @module dsh-chatgpt-subscription/host/cache-warmup/budget
9
+ */
10
+ import { CACHE_WARMUP_DEFAULTS, type PreviewBudget } from './contracts.ts';
11
+ export interface CacheWarmupDurableHint {
12
+ /** 持久化的最近活跃时间(毫秒)。 */
13
+ lastActiveAt?: number;
14
+ /** 持久化的连续命中次数。 */
15
+ consecutiveHits?: number;
16
+ /** 持久化的最近一次命中率(0-1)。 */
17
+ hitRatio?: number;
18
+ }
19
+ /**
20
+ * 当前会话的预览预算。
21
+ *
22
+ * 规则(约束 4):预热期 `maxChars = 1200`(约 600-750 tokens);连续
23
+ * `consecutiveHitsRequired`(2) 次命中(比例 ≥ 0.97 或前缀完整延续且新增 ≤ 256 tokens)
24
+ * 且期间没有 drift,才进入稳态 `maxChars = 8000`。任何一次 drift 都清零连续计数,
25
+ * 于是下一条请求立刻回落到预热预算。
26
+ *
27
+ * 空闲 TTL 预判:若距离最近一条报告已超过 `cacheTtlMs`(25 分钟,Kimi 实测缓存
28
+ * 全热上限),说明上游缓存大概率已冷,无需等下一轮请求失败,当场退回预热期保守预算。
29
+ *
30
+ * **不抛出**:没有会话、没有报告、登记表异常,一律返回预热期的保守预算。
31
+ * @param sessionId - 会话 id;不传则按最保守的预热预算处理。
32
+ * @param now - 当前时间戳(毫秒),默认 `Date.now()`;测试可注入。
33
+ * @param durable - 进程重启后尚无内存报告时的持久化回退摘要(可选)。
34
+ * @returns 本次投影可用的预算。
35
+ */
36
+ export declare function cacheWarmupBudget(sessionId?: string, now?: number, durable?: CacheWarmupDurableHint): PreviewBudget;
37
+ /** 用量汇总。 */
38
+ export interface CacheWarmupUsageTotals {
39
+ /** 输入 token 合计。 */
40
+ inputTokens: number;
41
+ /** 命中缓存 token 合计。 */
42
+ cacheReadTokens: number;
43
+ /** 输出 token 合计。 */
44
+ outputTokens: number;
45
+ /** 总 token 合计。 */
46
+ totalTokens: number;
47
+ }
48
+ /** `cacheWarmupSnapshot()` 的返回形状:一份自足的只读快照。 */
49
+ export interface CacheWarmupSnapshot {
50
+ /** 会话 id;全局快照时不存在。 */
51
+ sessionId?: string;
52
+ /** 该会话当前的预算。 */
53
+ budget: PreviewBudget;
54
+ /** 子包默认值,方便设置页展示「当前处于预热期/稳态」的判据。 */
55
+ defaults: typeof CACHE_WARMUP_DEFAULTS;
56
+ /** 该会话的用量汇总。 */
57
+ usage: {
58
+ /** 保留的报告条数。 */
59
+ reports: number;
60
+ /** 最近一条报告时刻。 */
61
+ lastAt?: number;
62
+ /** 最近一次命中率。 */
63
+ hitRatio: number;
64
+ /** token 汇总。 */
65
+ totals: CacheWarmupUsageTotals;
66
+ /** 期间观测到的漂移原因(去重,供诊断)。 */
67
+ driftCauses: string[];
68
+ };
69
+ /** 登记表里的会话总数。 */
70
+ sessions: number;
71
+ }
72
+ /**
73
+ * 一份可读快照。**不抛出**,且完全无副作用(只读登记表)。
74
+ * @param sessionId - 会话 id;不传则给全局汇总。
75
+ * @param now - 当前时间戳(毫秒),默认 `Date.now()`。
76
+ * @returns 快照。
77
+ */
78
+ export declare function cacheWarmupSnapshot(sessionId?: string, now?: number): CacheWarmupSnapshot;
79
+ //# sourceMappingURL=budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAgB1E,MAAM,WAAW,sBAAsB;IACrC,sBAAsB;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,CAAC,EAAE,MAAM,EAClB,GAAG,GAAE,MAAmB,EACxB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,aAAa,CAiDf;AAED,YAAY;AACZ,MAAM,WAAW,sBAAsB;IACrC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB;IAChB,MAAM,EAAE,aAAa,CAAA;IACrB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,qBAAqB,CAAA;IACtC,gBAAgB;IAChB,KAAK,EAAE;QACL,eAAe;QACf,OAAO,EAAE,MAAM,CAAA;QACf,gBAAgB;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,eAAe;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,gBAAgB;QAChB,MAAM,EAAE,sBAAsB,CAAA;QAC9B,0BAA0B;QAC1B,WAAW,EAAE,MAAM,EAAE,CAAA;KACtB,CAAA;IACD,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,mBAAmB,CA6CrG"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * 缓存预热子包(cache-warmup)的共享契约:类型、默认值与错误码。
3
+ *
4
+ * 这一层刻意不 import 任何 `node:` 内置模块:投影与预算的一半逻辑是纯字符串/数字运算,
5
+ * 保持零依赖才能让消费者(宿主适配层、设置路由、测试)只为了一个类型就拖进文件系统实现。
6
+ * 唯一的例外是 `parseStructuredResultRows` —— 它是对**已存储原文**的解析器,
7
+ * 存储分页与投影预览必须共用同一份判定,否则「能分页但预览判断不同」会立刻变成幻觉。
8
+ *
9
+ * @module dsh-chatgpt-subscription/host/cache-warmup/contracts
10
+ */
11
+ /**
12
+ * 子包默认值。
13
+ *
14
+ * 预热期的字符上限是**按 token 反推的保守字符预算**:中文/代码混排大约每 token 1.6-2.0
15
+ * 字符,1200 字符落在 512-1024 token 区间的中段,宁可少给也不要在预热期用一个
16
+ * 还没被验证过的更大预算去撞缓存键。命中率与连续次数见约束 4。
17
+ */
18
+ export declare const CACHE_WARMUP_DEFAULTS: {
19
+ /** 预热期单次预览的字符预算。约 600-750 tokens。 */
20
+ readonly warmupMaxChars: 1200;
21
+ /** 稳态(连续两次高命中率且无 drift 之后)的字符预算。 */
22
+ readonly steadyStateMaxChars: 8000;
23
+ /** 视为命中的最低命中率。 */
24
+ readonly hitRatioThreshold: 0.97;
25
+ /** 退出预热期需要连续命中的报告条数。 */
26
+ readonly consecutiveHitsRequired: 2;
27
+ /**
28
+ * 稳态第二轨(短会话分母效应兜底):已命中的缓存前缀至少达到该 token 规模,
29
+ * 且相比上一条报告一字未掉(`cacheReadTokens >= prev.cacheReadTokens`),
30
+ * 同时本轮新增未命中部分不超过 `retainedPrefixMaxFreshTokens` 时,同样计为一次有效命中。
31
+ */
32
+ readonly retainedPrefixMinCachedTokens: 1024;
33
+ /** 稳态第二轨允许的单轮最大新增未命中 token 数(与 Kimi 256-token 缓存块对齐)。 */
34
+ readonly retainedPrefixMaxFreshTokens: 256;
35
+ /**
36
+ * 缓存存活窗口(毫秒,25 分钟,与 Kimi 实测全热上限一致)。
37
+ * 距离最近一次报告超过该时长时,预算计算自动预判缓存已冷、退回预热期保守预算。
38
+ */
39
+ readonly cacheTtlMs: number;
40
+ /** 单结果原文上限(字节)。 */
41
+ readonly maxResultBytes: number;
42
+ /** 每 session 原文总量上限(字节)。 */
43
+ readonly maxSessionBytes: number;
44
+ /** 分页 limit 默认值(行)。 */
45
+ readonly pageLimitDefault: 64;
46
+ /** 分页 limit 上限(行)。 */
47
+ readonly pageLimitMax: 512;
48
+ /** 分页 maxBytes 默认值(字节)。 */
49
+ readonly pageMaxBytesDefault: number;
50
+ /** 分页 maxBytes 上限(字节)。 */
51
+ readonly pageMaxBytesMax: number;
52
+ /** usage registry 的 session 数上限。 */
53
+ readonly maxUsageSessions: 256;
54
+ /** 每 session 保留的用量报告条数上限。 */
55
+ readonly maxUsageReportsPerSession: 32;
56
+ };
57
+ /** 预览预算,也是 `cacheWarmupBudget()` 的返回形状。 */
58
+ export interface PreviewBudget {
59
+ /** 一次预览最多占用的字符数。 */
60
+ maxChars: number;
61
+ /** 是否仍处于预热期。 */
62
+ warmup: boolean;
63
+ /** 当前连续高命中率报告条数(drift 会把它清零)。 */
64
+ consecutiveHits: number;
65
+ /** 最近一次报告的缓存命中率(0-1);没有报告时为 0。 */
66
+ hitRatio: number;
67
+ }
68
+ /** 一次缓存用量报告,形状与宿主 usage 统计一一对应。 */
69
+ export interface CacheWarmupUsage {
70
+ /** 会话 id。 */
71
+ sessionId: string;
72
+ /** 本次请求的输入 token 总数。 */
73
+ inputTokens: number;
74
+ /** 其中命中缓存的 token 数。 */
75
+ cacheReadTokens: number;
76
+ /** 本次请求的输出 token 数。 */
77
+ outputTokens: number;
78
+ /** 本次请求的总 token 数。 */
79
+ totalTokens: number;
80
+ /** 报告时刻(Unix 毫秒)。 */
81
+ at: number;
82
+ /** 非空表示这次观测到缓存漂移(前缀被改、工具集变化等),连续命中计数随之清零。 */
83
+ driftCause?: string;
84
+ }
85
+ /** 结果内容的「块」形状,与宿主工具结果的文本块对齐。 */
86
+ export interface ToolResultBlock {
87
+ /** 块类型;只有 `text` 会被投影考虑。 */
88
+ type: string;
89
+ /** 文本块正文。 */
90
+ text?: string;
91
+ /** 其他字段原样保留,永不改写。 */
92
+ [key: string]: unknown;
93
+ }
94
+ /** 工具结果内容:纯文本,或块数组(非文本块必须原样保留)。 */
95
+ export type ToolResultContent = string | readonly ToolResultBlock[];
96
+ /** 投影策略。`verbatim-*` 一律 `changed: false`。 */
97
+ export type ProjectionStrategy = 'verbatim-small' | 'verbatim-non-text' | 'verbatim-unparsed' | 'verbatim-source-code' | 'verbatim-contract' | 'verbatim-subagent-report' | 'verbatim-budget' | 'store-unavailable' | 'test-failure' | 'shell-output' | 'grep-results' | 'glob-results' | 'structured-rows';
98
+ /** 投影度量。契约要求前四个字段。 */
99
+ export interface ProjectionMetrics {
100
+ /** 输入字符数(原文长度)。 */
101
+ inputChars: number;
102
+ /** 输出字符数(预览长度)。 */
103
+ outputChars: number;
104
+ /** 被预览省略掉的字符数。 */
105
+ omittedChars: number;
106
+ /** 本次采用的策略。 */
107
+ strategy: ProjectionStrategy;
108
+ }
109
+ /** `projectToolResult` 的返回值。 */
110
+ export interface ProjectionResult {
111
+ /** 新内容:未改变时与入参逐字相同,改变时是预览文本(或替换了单个文本块的块数组)。 */
112
+ content: ToolResultContent;
113
+ /** 是否真的改写了内容。只有可证明结构化预览时才为 true。 */
114
+ changed: boolean;
115
+ /** 度量。 */
116
+ metrics: ProjectionMetrics;
117
+ /** 原文引用(只有在 `changed: true` 时存在)。 */
118
+ refId?: string;
119
+ /** 预览正文(只有在 `changed: true` 时存在)。 */
120
+ preview?: string;
121
+ /** 工具名(原样回显,便于统计)。 */
122
+ toolName: string;
123
+ /** 会话 id。 */
124
+ sessionId: string;
125
+ /** provider id(有就回显)。 */
126
+ provider?: string;
127
+ /** 投影时刻(Unix 毫秒)。 */
128
+ at: number;
129
+ }
130
+ /** `projectToolResult` 的入参。 */
131
+ export interface ProjectToolResultInput {
132
+ /** 工具名;用于识别测试/shell/grep/glob 结果。 */
133
+ toolName: string;
134
+ /** provider id,可选,只回显。 */
135
+ provider?: string;
136
+ /** 会话 id;refId 与分页的归属校验都基于它。 */
137
+ sessionId: string;
138
+ /** 工具结果内容。 */
139
+ content: ToolResultContent;
140
+ /** 是否为失败结果;失败结果的失败集必须完整保留。 */
141
+ isError?: boolean;
142
+ /** 预览预算;不传则按 `cacheWarmupBudget(sessionId)` 取当前预算。 */
143
+ budget?: PreviewBudget;
144
+ /** 原文存储;不传则保持原样(没有 ref 的预览等于丢数据)。 */
145
+ store?: ResultReferenceStore;
146
+ /** 投影时刻(Unix 毫秒),默认 `Date.now()`。 */
147
+ at?: number;
148
+ }
149
+ /** 一条已存储的结果引用。 */
150
+ export interface StoredResultReference {
151
+ /** `ref://<session>/<sha256>`。 */
152
+ refId: string;
153
+ /** 所属会话。 */
154
+ sessionId: string;
155
+ /** 原文的 sha256(小写十六进制)。 */
156
+ digest: string;
157
+ /** 原文字节数。 */
158
+ bytes: number;
159
+ /** 原文字符数。 */
160
+ chars: number;
161
+ /** 入库时刻(Unix 毫秒)。 */
162
+ at: number;
163
+ /** 是否本次新写入(false 表示命中了已存在的同一份内容)。 */
164
+ created: boolean;
165
+ }
166
+ /** `put` 的入参。 */
167
+ export interface ResultPutInput {
168
+ /** 会话 id。 */
169
+ sessionId: string;
170
+ /** 原文(逐字保存)。 */
171
+ content: string;
172
+ /** 工具名,只做记录,不参与寻址。 */
173
+ toolName?: string;
174
+ /** 入库时刻(Unix 毫秒)。 */
175
+ at?: number;
176
+ }
177
+ /** `page` 的入参。offset 从 0 开始。 */
178
+ export interface ResultPageQuery {
179
+ /** 会话 id;必须与 refId 内嵌的 session 一致。 */
180
+ sessionId: string;
181
+ /** `ref://<session>/<sha256>`。 */
182
+ refId: string;
183
+ /** 起始位置:文本模式是 UTF-8 字节偏移,结构化模式是(过滤后的)行下标。 */
184
+ offset?: number;
185
+ /** 本页最多行数,默认 64,上限 512。 */
186
+ limit?: number;
187
+ /** 本页最多字节数,默认 16384,上限 65536。 */
188
+ maxBytes?: number;
189
+ /** 结构化模式下要返回的字段;不传则返回全部字段。 */
190
+ fields?: readonly string[];
191
+ /** 结构化模式下的等值过滤(字符串比较,全部命中才算匹配)。 */
192
+ equals?: Readonly<Record<string, string>>;
193
+ }
194
+ /** 一页里被省略掉的部分;`reason: 'none'` 表示这一页就是全部。 */
195
+ export interface ResultPageOmitted {
196
+ /** 省略原因。 */
197
+ reason: 'none' | 'bytes' | 'lines' | 'rows';
198
+ /** 省略的字符数。 */
199
+ chars: number;
200
+ /** 省略的行数。 */
201
+ lines: number;
202
+ /** 省略的行数(结构化模式)。 */
203
+ rows: number;
204
+ /** 省略的字节数。 */
205
+ bytes: number;
206
+ }
207
+ /** `page` 的返回值。 */
208
+ export interface ResultPage {
209
+ /** 会话 id。 */
210
+ sessionId: string;
211
+ /** 原文引用。 */
212
+ refId: string;
213
+ /** 分页模式。 */
214
+ mode: 'text' | 'structured';
215
+ /** 本页内容;文本模式下是原文的一段,结构化模式下是 JSON 行。 */
216
+ content: string;
217
+ /** 本页起始位置(与入参同一单位)。 */
218
+ offset: number;
219
+ /** 下一页的起始位置;`null` 表示已经取完。 */
220
+ nextOffset: number | null;
221
+ /** 本页取完是否就是全文(不要用 content 长度去猜)。 */
222
+ complete: boolean;
223
+ /** 被省略的部分。 */
224
+ omitted: ResultPageOmitted;
225
+ /** 原文总字符数。 */
226
+ totalChars: number;
227
+ /** 原文总字节数。 */
228
+ totalBytes: number;
229
+ /** 实际生效的 limit。 */
230
+ limit: number;
231
+ /** 实际生效的 maxBytes。 */
232
+ maxBytes: number;
233
+ /** 结构化模式下返回的字段。 */
234
+ fields?: string[];
235
+ /** 结构化模式下的总行数。 */
236
+ totalRows?: number;
237
+ /** 结构化模式下过滤后参与分页的行数。 */
238
+ matchedRows?: number;
239
+ }
240
+ /**
241
+ * 结果引用存储。
242
+ *
243
+ * 一条结果一旦进入历史,它的 preview 与 refId 就是常量:存储过期、淘汰、
244
+ * 释放都只影响「还能不能读到原文」,永不影响已经写进历史的那段文本。
245
+ */
246
+ export interface ResultReferenceStore {
247
+ /** 保存原文并返回引用;同内容重复保存必须幂等。 */
248
+ put(input: ResultPutInput): Promise<StoredResultReference>;
249
+ /** 读取一页;必须校验 session 归属。 */
250
+ page(input: ResultPageQuery): Promise<ResultPage>;
251
+ /** 释放一条引用(只删这个具体文件);返回是否真的删掉了。 */
252
+ release(input: {
253
+ sessionId: string;
254
+ refId: string;
255
+ }): Promise<boolean>;
256
+ }
257
+ /** 错误码。 */
258
+ export type CacheWarmupErrorCode = 'SESSION_INVALID' | 'CONTENT_INVALID' | 'RESULT_TOO_LARGE' | 'STORE_FULL' | 'ROOT_INVALID' | 'REFERENCE_INVALID' | 'SESSION_MISMATCH' | 'RESULT_NOT_FOUND' | 'RESULT_EXPIRED' | 'OFFSET_OUT_OF_RANGE' | 'OFFSET_INVALID' | 'NOT_STRUCTURED' | 'FIELD_UNKNOWN';
259
+ /**
260
+ * 存储层错误。信息里只描述**请求本身**的问题,绝不回显其他 session 的内容或存在性。
261
+ */
262
+ export declare class CacheWarmupStoreError extends Error {
263
+ readonly code: CacheWarmupErrorCode;
264
+ constructor(message: string, code: CacheWarmupErrorCode);
265
+ }
266
+ /** 可靠解析出来的结构化行。 */
267
+ export interface StructuredResultRows {
268
+ /** 字段名,按首次出现顺序。 */
269
+ fields: string[];
270
+ /** 行,非字符串值用 JSON 序列化后存放。 */
271
+ rows: Array<Record<string, string>>;
272
+ }
273
+ /**
274
+ * 把一段文本可靠地解析成结构化行;解析不可靠就返回 undefined。
275
+ *
276
+ * 判定刻意保守:宁可返回 undefined 让调用方保持原文,也不要猜出一张表,
277
+ * 因为下游会把「猜出来的表」当成完整事实。
278
+ */
279
+ export declare function parseStructuredResultRows(text: string): StructuredResultRows | undefined;
280
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 缓存预热子包(cache-warmup)的公开入口。
3
+ *
4
+ * 三方(核心库 / 宿主集成 / Kimi adapter)只从这里取东西:
5
+ * 预算与用量状态、保守投影、内容寻址的结果存储与分页读取。
6
+ *
7
+ * 这个子包**不改变任何现有文件的行为**:它不被 `src/index.ts` 自动装载,
8
+ * 只有显式 import 它的调用方才会用上,所以引入它本身对现有请求是零影响。
9
+ *
10
+ * @module dsh-chatgpt-subscription/host/cache-warmup
11
+ */
12
+ export { CACHE_WARMUP_DEFAULTS, CacheWarmupStoreError, parseStructuredResultRows, } from './contracts.ts';
13
+ export type { CacheWarmupErrorCode, CacheWarmupUsage, PreviewBudget, ProjectionMetrics, ProjectionResult, ProjectionStrategy, ProjectToolResultInput, ResultPage, ResultPageOmitted, ResultPageQuery, ResultPutInput, ResultReferenceStore, StoredResultReference, StructuredResultRows, ToolResultBlock, ToolResultContent, } from './contracts.ts';
14
+ export { FileResultReferenceStore, defaultResultStoreRootDir, formatResultRefId, parseResultRefId, RESULT_REFERENCE_PREFIX, } from './store.ts';
15
+ export type { FileResultReferenceStoreOptions } from './store.ts';
16
+ export { projectToolResult, defaultPreviewBudget } from './projection.ts';
17
+ export { cacheWarmupBudget, cacheWarmupSnapshot } from './budget.ts';
18
+ export type { CacheWarmupDurableHint, CacheWarmupSnapshot, CacheWarmupUsageTotals } from './budget.ts';
19
+ export { cacheWarmupHitRatio, cacheWarmupUsageReports, cacheWarmupUsageSessions, consecutiveWarmupHits, isWarmupHitReport, recordCacheWarmupUsage, resetCacheWarmupForTests, } from './usage.ts';
20
+ export type { CacheWarmupUsageSessionSummary, CacheWarmupUsageState } from './usage.ts';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACpE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEtG,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA"}