@eddyskywalker/dsh-chatgpt-subscription 0.65.0 → 0.66.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.
Files changed (114) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/lib/client.js +257 -18
  3. package/lib/client.js.map +1 -1
  4. package/lib/index.js +2509 -1061
  5. package/lib/types/client/antigravity/styles.d.ts.map +1 -1
  6. package/lib/types/client/glm-coding-plan/styles.d.ts.map +1 -1
  7. package/lib/types/client/kimi-code/KimiCodeSection.d.ts.map +1 -1
  8. package/lib/types/client/kimi-code/locales.d.ts +50 -2
  9. package/lib/types/client/kimi-code/locales.d.ts.map +1 -1
  10. package/lib/types/client/kimi-code/styles.d.ts.map +1 -1
  11. package/lib/types/client/locales-ru/kimi-code.d.ts.map +1 -1
  12. package/lib/types/client/locales-ru/progress-updates.d.ts.map +1 -1
  13. package/lib/types/client/locales-ru/step-code.d.ts.map +1 -1
  14. package/lib/types/client/progress-updates/locales.d.ts +23 -11
  15. package/lib/types/client/progress-updates/locales.d.ts.map +1 -1
  16. package/lib/types/client/progress-updates/settings-binding.d.ts +11 -1
  17. package/lib/types/client/progress-updates/settings-binding.d.ts.map +1 -1
  18. package/lib/types/client/progress-updates/settings-section.d.ts +2 -2
  19. package/lib/types/client/progress-updates/settings-section.d.ts.map +1 -1
  20. package/lib/types/client/step-code/StepCodeSection.d.ts.map +1 -1
  21. package/lib/types/client/step-code/locales.d.ts +5 -2
  22. package/lib/types/client/step-code/locales.d.ts.map +1 -1
  23. package/lib/types/client/workbuddy/styles.d.ts.map +1 -1
  24. package/lib/types/compat.d.ts +1 -1
  25. package/lib/types/host/antigravity/adapter.d.ts +2 -0
  26. package/lib/types/host/antigravity/adapter.d.ts.map +1 -1
  27. package/lib/types/host/cache-warmup/budget.d.ts +2 -2
  28. package/lib/types/host/cache-warmup/budget.d.ts.map +1 -1
  29. package/lib/types/host/cache-warmup/contracts.d.ts +3 -1
  30. package/lib/types/host/cache-warmup/contracts.d.ts.map +1 -1
  31. package/lib/types/host/cache-warmup/install.d.ts +4 -4
  32. package/lib/types/host/cache-warmup/install.d.ts.map +1 -1
  33. package/lib/types/host/cache-warmup/projection.d.ts.map +1 -1
  34. package/lib/types/host/cache-warmup/result-tool.d.ts +3 -1
  35. package/lib/types/host/cache-warmup/result-tool.d.ts.map +1 -1
  36. package/lib/types/host/cache-warmup/settings.d.ts +5 -1
  37. package/lib/types/host/cache-warmup/settings.d.ts.map +1 -1
  38. package/lib/types/host/cache-warmup/usage.d.ts +1 -1
  39. package/lib/types/host/cache-warmup/usage.d.ts.map +1 -1
  40. package/lib/types/host/claude/adapter.d.ts +3 -0
  41. package/lib/types/host/claude/adapter.d.ts.map +1 -1
  42. package/lib/types/host/cline-pass/mapper.d.ts.map +1 -1
  43. package/lib/types/host/common/account-pool.d.ts +27 -1
  44. package/lib/types/host/common/account-pool.d.ts.map +1 -1
  45. package/lib/types/host/common/cache-activity.d.ts +14 -0
  46. package/lib/types/host/common/cache-activity.d.ts.map +1 -0
  47. package/lib/types/host/common/cache-affinity.d.ts +23 -0
  48. package/lib/types/host/common/cache-affinity.d.ts.map +1 -0
  49. package/lib/types/host/common/cache-hint.d.ts +18 -0
  50. package/lib/types/host/common/cache-hint.d.ts.map +1 -0
  51. package/lib/types/host/common/failure-classification.d.ts +21 -0
  52. package/lib/types/host/common/failure-classification.d.ts.map +1 -0
  53. package/lib/types/host/common/hosted-media.d.ts +36 -0
  54. package/lib/types/host/common/hosted-media.d.ts.map +1 -0
  55. package/lib/types/host/common/prefix-request-coordinator.d.ts +46 -0
  56. package/lib/types/host/common/prefix-request-coordinator.d.ts.map +1 -0
  57. package/lib/types/host/common/prefix-stability.d.ts +24 -0
  58. package/lib/types/host/common/prefix-stability.d.ts.map +1 -0
  59. package/lib/types/host/common/prompt-cache-policy.d.ts +43 -0
  60. package/lib/types/host/common/prompt-cache-policy.d.ts.map +1 -0
  61. package/lib/types/host/common/reasoning-dialect.d.ts +24 -0
  62. package/lib/types/host/common/reasoning-dialect.d.ts.map +1 -0
  63. package/lib/types/host/common/session-cache-state.d.ts +29 -0
  64. package/lib/types/host/common/session-cache-state.d.ts.map +1 -0
  65. package/lib/types/host/common/sticky-image-budget.d.ts +10 -0
  66. package/lib/types/host/common/sticky-image-budget.d.ts.map +1 -0
  67. package/lib/types/host/common/tool-runaway.d.ts +52 -0
  68. package/lib/types/host/common/tool-runaway.d.ts.map +1 -0
  69. package/lib/types/host/glm-coding-plan/adapter.d.ts +11 -0
  70. package/lib/types/host/glm-coding-plan/adapter.d.ts.map +1 -1
  71. package/lib/types/host/kimi-code/account-pool.d.ts +19 -2
  72. package/lib/types/host/kimi-code/account-pool.d.ts.map +1 -1
  73. package/lib/types/host/kimi-code/adapter.d.ts +48 -40
  74. package/lib/types/host/kimi-code/adapter.d.ts.map +1 -1
  75. package/lib/types/host/kimi-code/cache-affinity.d.ts +112 -0
  76. package/lib/types/host/kimi-code/cache-affinity.d.ts.map +1 -0
  77. package/lib/types/host/kimi-code/cache-hint.d.ts +3 -28
  78. package/lib/types/host/kimi-code/cache-hint.d.ts.map +1 -1
  79. package/lib/types/host/kimi-code/cache-wait.d.ts +6 -4
  80. package/lib/types/host/kimi-code/cache-wait.d.ts.map +1 -1
  81. package/lib/types/host/kimi-code/mapper.d.ts +13 -7
  82. package/lib/types/host/kimi-code/mapper.d.ts.map +1 -1
  83. package/lib/types/host/kimi-code/media-files.d.ts +2 -28
  84. package/lib/types/host/kimi-code/media-files.d.ts.map +1 -1
  85. package/lib/types/host/kimi-code/repeat-breaker.d.ts +13 -16
  86. package/lib/types/host/kimi-code/repeat-breaker.d.ts.map +1 -1
  87. package/lib/types/host/kimi-code/routes.d.ts.map +1 -1
  88. package/lib/types/host/kimi-code/session-cache-state.d.ts +34 -54
  89. package/lib/types/host/kimi-code/session-cache-state.d.ts.map +1 -1
  90. package/lib/types/host/kimi-code/tool-argument-guard.d.ts +36 -0
  91. package/lib/types/host/kimi-code/tool-argument-guard.d.ts.map +1 -0
  92. package/lib/types/host/kimi-code/tool-argument-recovery.d.ts +16 -0
  93. package/lib/types/host/kimi-code/tool-argument-recovery.d.ts.map +1 -0
  94. package/lib/types/host/minimax-code/adapter.d.ts +5 -1
  95. package/lib/types/host/minimax-code/adapter.d.ts.map +1 -1
  96. package/lib/types/host/minimax-code/files-api.d.ts.map +1 -1
  97. package/lib/types/host/minimax-code/runtime-enhancements.d.ts.map +1 -1
  98. package/lib/types/host/opendesign/mapper.d.ts.map +1 -1
  99. package/lib/types/host/qoder/mapper.d.ts.map +1 -1
  100. package/lib/types/host/responses-client.d.ts +4 -0
  101. package/lib/types/host/responses-client.d.ts.map +1 -1
  102. package/lib/types/host/step-code/account-pool.d.ts +2 -2
  103. package/lib/types/host/step-code/account-pool.d.ts.map +1 -1
  104. package/lib/types/host/step-code/adapter.d.ts +10 -0
  105. package/lib/types/host/step-code/adapter.d.ts.map +1 -1
  106. package/lib/types/host/step-code/routes.d.ts +3 -0
  107. package/lib/types/host/step-code/routes.d.ts.map +1 -1
  108. package/lib/types/index.d.ts +22 -3
  109. package/lib/types/index.d.ts.map +1 -1
  110. package/lib/types/shared/kimi-code-contracts.d.ts +79 -0
  111. package/lib/types/shared/kimi-code-contracts.d.ts.map +1 -1
  112. package/lib/types/shared/step-code-contracts.d.ts +5 -0
  113. package/lib/types/shared/step-code-contracts.d.ts.map +1 -1
  114. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sticky-image-budget.d.ts","sourceRoot":"","sources":["../../../../src/host/common/sticky-image-budget.ts"],"names":[],"mappings":"AAyBA,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiD;gBAE3D,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAS/C,8EAA8E;IAC9E,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAKzD,+DAA+D;IAC/D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI;IAKtE,KAAK,IAAI,IAAI;CACd"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Provider-neutral tool-call repetition primitives.
3
+ *
4
+ * The detector knows nothing about model wire formats. Providers supply reminder
5
+ * text and may opt into a hard handoff threshold; coordination tools are exempt
6
+ * because they are expected to recur while real work continues.
7
+ */
8
+ /** Stable identity for one tool call, independent of object key order. */
9
+ export declare function canonicalToolCallKey(toolName: string, args: unknown): string;
10
+ export interface ExactRepeatObservation {
11
+ readonly key: string;
12
+ readonly count: number;
13
+ }
14
+ export interface ExactRepeatTracker {
15
+ observe(toolName: string, args: unknown): ExactRepeatObservation;
16
+ current(): ExactRepeatObservation | undefined;
17
+ reset(): void;
18
+ }
19
+ /** One immediately-repeated action streak. A different action starts at one. */
20
+ export declare function createExactRepeatTracker(): ExactRepeatTracker;
21
+ /** Coordination calls that must not break or inflate an action streak. */
22
+ export declare const TOOL_RUNAWAY_EXEMPT_TOOLS: readonly string[];
23
+ export declare function isToolRunawayExemptTool(toolName: string): boolean;
24
+ export interface ToolRunawayGuardConfig {
25
+ readonly toolRunawayGuard?: boolean | {
26
+ get(): boolean | undefined;
27
+ };
28
+ }
29
+ /** Read the live global switch; legacy Kimi-only installs without it stay on. */
30
+ export declare function resolveToolRunawayGuardEnabled(config?: ToolRunawayGuardConfig): boolean;
31
+ export interface ExactRepeatBreakerOptions {
32
+ /** Reminder for a completed execution; undefined leaves the decision untouched. */
33
+ readonly reminder: (count: number) => string | undefined;
34
+ /** Optional execution veto once the same call reaches this count. */
35
+ readonly forceStopAt?: number;
36
+ readonly handoffReminder?: string;
37
+ readonly handoffVeto?: string;
38
+ readonly exemptTools?: readonly string[];
39
+ /** Bound on remembered sessions; least-recently-written is evicted first. */
40
+ readonly maxSessions?: number;
41
+ }
42
+ export interface ExactRepeatBreaker {
43
+ checkBeforeExecute(sessionId: string, toolName: string, args: unknown): string | undefined;
44
+ recordAfterExecute(sessionId: string, toolName: string, args: unknown): string | undefined;
45
+ resetSession(sessionId: string): void;
46
+ }
47
+ /**
48
+ * Exact-repeat state machine shared by provider profiles. A missing forceStopAt
49
+ * gives reminders only; no provider inherits Kimi's hard stop accidentally.
50
+ */
51
+ export declare function createExactRepeatBreaker(options: ExactRepeatBreakerOptions): ExactRepeatBreaker;
52
+ //# sourceMappingURL=tool-runaway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-runaway.d.ts","sourceRoot":"","sources":["../../../../src/host/common/tool-runaway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAQ5E;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,sBAAsB,CAAA;IAChE,OAAO,IAAI,sBAAsB,GAAG,SAAS,CAAA;IAC7C,KAAK,IAAI,IAAI,CAAA;CACd;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,IAAI,kBAAkB,CAc7D;AAED,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAYrD,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG;QAAE,GAAG,IAAI,OAAO,GAAG,SAAS,CAAA;KAAE,CAAA;CACrE;AAED,iFAAiF;AACjF,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAMvF;AAED,MAAM,WAAW,yBAAyB;IACxC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IACxD,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAC1F,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAC1F,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACtC;AAQD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CA6C/F"}
@@ -122,6 +122,7 @@ export declare class GlmCodingPlanAdapter extends LlmAdapter {
122
122
  private readonly preferences;
123
123
  private readonly accountPool;
124
124
  private readonly options;
125
+ private catalogRegionSnapshot;
125
126
  constructor(store?: GlmCodingPlanCredentialStore, modelSettings?: GlmCodingPlanModelSettingsStore, preferences?: GlmCodingPlanPreferenceStore, options?: GlmCodingPlanAdapterOptions);
126
127
  providerInfo(provider: string): LlmProviderInfo;
127
128
  providerRetryPolicy(): ResolvedRetryPolicy;
@@ -134,6 +135,16 @@ export declare class GlmCodingPlanAdapter extends LlmAdapter {
134
135
  * 实时目录只由 `/catalog/refresh` 与连接测试拉取,落进 `client.ts` 的缓存。
135
136
  */
136
137
  private catalog;
138
+ /**
139
+ * 模型目录只需要区域,不需要一把可发请求的凭据。
140
+ *
141
+ * 这里刻意不调用 credentialFor:那是真实请求的选号入口,会重复解密号池并回写
142
+ * lastUsedAt。目录构建会为每个模型并发调用 resolveModel,把它放在这里会让一次
143
+ * 选择器刷新放大成一串 DPAPI 读写。区域快照按号池 revision 与指定账号失效,
144
+ * 同一代的并发调用共享同一次只读;读不到或尚未登录时不缓存,登录后即可重试。
145
+ */
146
+ private catalogRegion;
147
+ private readCatalogRegion;
137
148
  /**
138
149
  * 这一行请求用哪份凭据。
139
150
  *
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/glm-coding-plan/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/glm-coding-plan/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AccountPoolCore, type AccountPoolRefreshOptions, type PoolAccountShape, type PoolData } from '../common/account-pool.ts';
1
+ import { AccountPoolCore, type AccountPoolRefreshOptions, type AccountSelectionHint, type PoolAccountShape, type PoolData } from '../common/account-pool.ts';
2
2
  import type { CredentialStore } from '../token-store.ts';
3
3
  import { FileCredentialStore, type KimiCodeCredentials } from './token-store.ts';
4
4
  import type { PoolAccountQuotaDto } from '../../shared/account-pool-contracts.ts';
@@ -68,11 +68,28 @@ export declare class KimiCodeAccountPool extends AccountPoolCore<KimiCodeCredent
68
68
  *
69
69
  * The returned credential carries its own region, OAuth host and base URL, so
70
70
  * the caller must use those rather than the process-wide defaults.
71
+ *
72
+ * @param selection - this request's own preference, used by the cache-affinity
73
+ * routing to put an account whose prefix cache is still warm first. Absent
74
+ * means the rotation strategy decides alone.
71
75
  */
72
- getEffectiveCredential(excludeIds?: ReadonlySet<string>, fetchFn?: typeof fetch, options?: AccountPoolRefreshOptions): Promise<{
76
+ getEffectiveCredential(excludeIds?: ReadonlySet<string>, fetchFn?: typeof fetch, options?: AccountPoolRefreshOptions, selection?: AccountSelectionHint): Promise<{
73
77
  account: KimiCodePoolAccount;
74
78
  credentials: KimiCodeCredentials;
75
79
  }>;
80
+ /**
81
+ * Every pooled account's id with the region that decides its prefix group.
82
+ *
83
+ * The cache-affinity routing needs exactly two facts per account — which one
84
+ * it is, and which regional service answers it, because each region keeps its
85
+ * own prefix cache — and nothing else. Deliberately a narrow projection over
86
+ * the pool document rather than a credential read: tokens never leave the
87
+ * pool, and nothing here can be mistaken for a credential accessor.
88
+ */
89
+ accountScopes(): Promise<Array<{
90
+ id: string;
91
+ region: KimiCodeRegion | null;
92
+ }>>;
76
93
  /** The pre-pool credential file this pool mirrors its primary account into. */
77
94
  mirrorStore(): FileCredentialStore;
78
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"account-pool.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/account-pool.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EAGf,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EACL,mBAAmB,EAEnB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AAKzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACf,MAAM,qCAAqC,CAAA;AAE5C,oFAAoF;AACpF,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,CAAC,mBAAmB,CAAC;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAaD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AA+BD,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAwCnF;AAED,MAAM,WAAW,0BAA0B;IACzC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACxD,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,mBAAmB,GAAG,SAAS,CAOxG;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,eAAe,CACtD,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,CAC1B;IACC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,OAAO,GAAE,0BAA+B;IAkHpD;;;;;OAKG;IACG,sBAAsB,CAC1B,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,OAAO,GAAE,OAAO,KAAa,EAC7B,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,WAAW,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAI9E,+EAA+E;IAC/E,WAAW,IAAI,mBAAmB;IAIlC;;;;;;;;;;;;;;;OAeG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B/E"}
1
+ {"version":3,"file":"account-pool.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/account-pool.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EAGf,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EACL,mBAAmB,EAEnB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AAKzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACf,MAAM,qCAAqC,CAAA;AAE5C,oFAAoF;AACpF,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,CAAC,mBAAmB,CAAC;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAaD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AA+BD,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAwCnF;AAED,MAAM,WAAW,0BAA0B;IACzC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACxD,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,mBAAmB,GAAG,SAAS,CAOxG;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,eAAe,CACtD,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,CAC1B;IACC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,OAAO,GAAE,0BAA+B;IAkHpD;;;;;;;;;OASG;IACG,sBAAsB,CAC1B,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,OAAO,GAAE,OAAO,KAAa,EAC7B,OAAO,CAAC,EAAE,yBAAyB,EACnC,SAAS,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,WAAW,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAI9E;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAQpF,+EAA+E;IAC/E,WAAW,IAAI,mBAAmB;IAIlC;;;;;;;;;;;;;;;OAeG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B/E"}
@@ -1,3 +1,4 @@
1
+ import { type ProviderFailureClassification } from '../common/failure-classification.ts';
1
2
  import { LlmAdapter, ReasoningEffortId, type GenerateOptions, type LlmModelInfo, type LlmProviderInfo, type LlmResolvedModelInfo, type PreparedAdapterCall, type ResolvedRetryPolicy, type StreamChunk } from '@deepseek-ai/dsh-llm';
2
3
  import type { ImageAttachmentRef } from '@deepseek-ai/dsh-attachment';
3
4
  import { PROVIDER_ID, reasoningEffortsFor } from './types.ts';
@@ -70,7 +71,11 @@ export declare function resolveDefaultReasoningEffort(efforts: readonly string[]
70
71
  * retried. The body text is what separates them, so the classification reads
71
72
  * it rather than trusting the status alone.
72
73
  */
73
- export interface KimiFailureClassification {
74
+ /** What the account pool may do with one failed attempt. */
75
+ export type KimiPoolAction = 'retry-same-account' | 'cooldown-and-rotate' | 'mark-auth-failed' | 'none';
76
+ export interface KimiFailureClassification extends ProviderFailureClassification {
77
+ /** Account-pool side effect, kept separate from the retry code. */
78
+ poolAction: KimiPoolAction;
74
79
  /** DSH error code; decides whether the route retries. */
75
80
  code: string;
76
81
  /** Message shown to the user, with the provider's own text appended. */
@@ -241,6 +246,15 @@ export interface KimiCodeAdapterOptions {
241
246
  * per account rather than once per turn.
242
247
  */
243
248
  mediaFiles?: KimiMediaFilesUploader;
249
+ /**
250
+ * Whether a request may state an account preference from the prefix cache.
251
+ *
252
+ * A live getter rather than a captured boolean: the switch is volatile in
253
+ * settings, and a captured value would keep routing by an answer the user has
254
+ * already changed. Absent means enabled — the behaviour the routing has when
255
+ * nothing turns it off.
256
+ */
257
+ cacheAffinity?: () => boolean;
244
258
  }
245
259
  /**
246
260
  * Longest edge of the request version this route asks the attachment store for.
@@ -284,37 +298,16 @@ export declare const KIMI_CODE_REQUEST_IMAGE_MAX_EDGE = 2000;
284
298
  * @returns the tool-update mode, or undefined when this route must resend everything.
285
299
  */
286
300
  export declare function toolUpdateMode(modelId: string, catalog: readonly KimiCodeCatalogModel[]): 'in-history' | undefined;
287
- /**
288
- * How long a cold-start follower waits for the leader warming the same prefix.
289
- *
290
- * The leader only has to reach the response headers: past that the service is
291
- * already processing the prefix, and a follower that waited out the whole
292
- * budget would have lost more than the shared warm-up was worth.
293
- */
301
+ /** How long a cold-start follower waits for the leader warming the same prefix. */
294
302
  export declare const COLD_START_WARMUP_WAIT_MS = 2500;
295
- /**
296
- * Forget every remembered prefix and release every waiting follower.
297
- *
298
- * Test seam only: these maps are process-wide, and a test that asserts on the
299
- * cold-start gate must start from a clean slate.
300
- */
303
+ /** Forget every remembered prefix and release every waiting follower. */
301
304
  export declare function resetColdStartSingleflightForTests(): void;
302
- /**
303
- * The group of requests that address the same cached prefix.
304
- *
305
- * The service derives its cache from the request content, so two requests with
306
- * the same model, the same system prompt, the same tool list and the same
307
- * leading static bootstrap reminders hit the same entry. The region is part of
308
- * the key because each region is a separate service with a cache of its own.
309
- *
310
- * A request with no system prompt has no prefix worth warming, and gets no
311
- * group at all.
312
- *
313
- * @param region - The region the request will be answered from.
314
- * @param options - The request about to be sent.
315
- * @returns The group key, or undefined when the request has no prefix.
316
- */
317
- export declare function coldStartGroupKey(region: string, options: NormalizedGenerateOptions): string | undefined;
305
+ /** The prefix identity shared by requests on one region/model. */
306
+ export declare function prefixGroupKey(region: string, options: NormalizedGenerateOptions): string | undefined;
307
+ /** The cache group on one account; cross-account warmth is never inferred. */
308
+ export declare function coldStartGroupKey(region: string, options: NormalizedGenerateOptions, accountScope: string): string | undefined;
309
+ /** Whether this account's prefix is still warm under the measured Kimi TTL. */
310
+ export declare function isWarmPrefixGroup(region: string, options: NormalizedGenerateOptions, accountScope: string, now?: number): boolean;
318
311
  export declare class KimiCodeAdapter extends LlmAdapter {
319
312
  private readonly store;
320
313
  private readonly modelSettings;
@@ -380,6 +373,31 @@ export declare class KimiCodeAdapter extends LlmAdapter {
380
373
  maxBytes: number;
381
374
  };
382
375
  private settings;
376
+ /** Whether this deployment routes by warm prefix cache; on unless switched off. */
377
+ private cacheAffinityEnabled;
378
+ /**
379
+ * Which accounts this request would rather be served by, when the prefix cache
380
+ * can say something useful about it.
381
+ *
382
+ * The service keeps one prefix cache per account, so rotation — which knows
383
+ * cooldowns, tokens and last use, never prompt content — can spend a request on
384
+ * an account that has never seen this prompt while another one has it hot. Both
385
+ * facts needed to do better are already in this process: the cold-start gate
386
+ * records which (prefix, account) pairs are warm, and the quota cache says how
387
+ * much each account has left.
388
+ *
389
+ * Returns undefined — no preference at all — wherever a preference would be a
390
+ * guess: the switch is off, there is no pool or only one account, the pool
391
+ * document cannot be read, a region cannot be resolved, or no account has this
392
+ * prefix warm. The pool then applies its rotation strategy exactly as it would
393
+ * have without this method.
394
+ *
395
+ * @param pool - The account pool serving this route, or null when none is installed.
396
+ * @param options - The request about to be sent; its system prompt, tools and
397
+ * static bootstrap are what decide the prefix identity.
398
+ * @returns a preference for the pool, or undefined for "strategy decides".
399
+ */
400
+ private cacheAffinityHint;
383
401
  /**
384
402
  * Catalog for the picker: the live managed listing when reachable, the
385
403
  * shipped fallback otherwise, narrowed by the user's enabled selection.
@@ -427,16 +445,6 @@ export declare class KimiCodeAdapter extends LlmAdapter {
427
445
  * policy owns the repeat.
428
446
  */
429
447
  private inBandStreamFailure;
430
- /**
431
- * Cool the account whose own rate limit the stream reported.
432
- *
433
- * The window this route already defaults to, never a Retry-After: there is no
434
- * 429 response to read one from, and a delay stated on the 200 belongs to a
435
- * different message. An account-scoped verdict takes its own window instead,
436
- * because a spent balance is not back-pressure and 15 minutes would put the
437
- * account back into rotation four times inside the window that refused it.
438
- */
439
- private coolInBandRateLimit;
440
448
  }
441
449
  export { clearCachedCatalog, buildModelOptions, reasoningEffortsFor, PROVIDER_ID };
442
450
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Which account should serve this request when one of them still has it warm.
3
+ *
4
+ * Kimi's prefix cache lives on the service, one cache per account, so two
5
+ * accounts in the same pool do not share a warm prefix: the account that
6
+ * answered this exact prompt a minute ago reads it back at the cache price,
7
+ * while the account the rotation strategy happens to pick reprocesses the whole
8
+ * thing. Rotation cannot see that difference — it knows cooldowns, tokens and
9
+ * last use, never prompt content — so the request names the accounts it would
10
+ * rather use and the pool honours the order.
11
+ *
12
+ * The whole decision is here, as a pure function of four inputs, for the same
13
+ * reason `cache-hint` is: the numbers behind it (how long an entry survives, how
14
+ * much a cache read costs against a fresh one) are measured elsewhere, and
15
+ * swapping a source must change only where a value comes from, never the rule.
16
+ *
17
+ * @module dsh-chatgpt-subscription/kimi-code-cache-affinity
18
+ */
19
+ import type { KimiCodeAccountQuota } from '../../shared/kimi-code-contracts.ts';
20
+ /**
21
+ * Remaining share below which a warm account stops being preferred.
22
+ *
23
+ * Affinity is a discount, not a right: an account holding 4% of its window can
24
+ * serve a few cheap cache reads and then take the line offline mid-conversation,
25
+ * which costs far more than the prefix it saved. 20% is the same floor the
26
+ * background warmup uses before it spends anything (`DEFAULT_MIN_WARMUP_QUOTA_RATIO`),
27
+ * so the two decisions agree about when an account is running dry instead of
28
+ * each inventing its own answer.
29
+ */
30
+ export declare const AFFINITY_QUOTA_FLOOR_SHARE = 0.2;
31
+ /**
32
+ * The share of its tightest window an account has left, or null when unknown.
33
+ *
34
+ * The TIGHTEST window is the only honest answer: a pool row can carry several
35
+ * at once, and an account with 90% of a weekly window but 2% of its five-hour
36
+ * one is about to be refused. A window whose consumption was never measured
37
+ * is skipped rather than read as empty or full, and a snapshot with no measured
38
+ * window at all answers null — "unknown", which the caller treats as "not
39
+ * provably short" instead of blocking the account on a number nobody measured.
40
+ *
41
+ * @param quota - The account's newest quota snapshot, when one was ever read.
42
+ * @returns the smallest remaining fraction in `[0, 1]`, or null when unknown.
43
+ */
44
+ export declare function remainingQuotaShare(quota: KimiCodeAccountQuota | null | undefined): number | null;
45
+ /** Settings-card description for the cache-affinity switch. */
46
+ export declare const CACHE_AFFINITY_SETTING_DESCRIPTION: string;
47
+ /**
48
+ * Environment override for the affinity switch.
49
+ *
50
+ * The same contract as the wait-time warmup switch beside it in settings: an
51
+ * explicit value wins over the stored setting, so a deployment can pin the
52
+ * behavioural change without editing preferences on disk.
53
+ */
54
+ export declare const CACHE_AFFINITY_ENV = "DSH_KIMI_CODE_CACHE_AFFINITY";
55
+ /**
56
+ * Resolve whether cache-affinity routing is enabled.
57
+ *
58
+ * Enabled by default. `0`/`false`/`no`/`off` and `1`/`true`/`yes`/`on` override
59
+ * the stored setting; otherwise the live `cacheAffinity` setting (default
60
+ * `true`) governs. Anything unreadable falls back to enabled rather than
61
+ * throwing inside a request path.
62
+ *
63
+ * @param config - Plugin config carrying the live setting.
64
+ * @param env - Environment to consult; `process.env` in production.
65
+ * @returns whether a request may state an account preference.
66
+ */
67
+ export declare function resolveCacheAffinityEnabled(config?: {
68
+ cacheAffinity?: {
69
+ get(): boolean | undefined;
70
+ } | boolean;
71
+ }, env?: Record<string, string | undefined>): boolean;
72
+ /** One account the request could be served by. */
73
+ export interface AffinityCandidate {
74
+ /** Pool account id. */
75
+ readonly id: string;
76
+ /**
77
+ * Whether this account's own prefix group for this request is warm right now.
78
+ *
79
+ * Per account by design: the pool's cache is per account, so "the prefix is
80
+ * warm" is a fact about one account, never about the pool.
81
+ */
82
+ readonly warm: boolean;
83
+ }
84
+ export interface AffinityOrderInput {
85
+ /** Accounts that may serve this request right now, in pool order. */
86
+ readonly candidates: readonly AffinityCandidate[];
87
+ /** Remaining share per account id; a missing or null entry means unknown. */
88
+ readonly remainingShareById?: Readonly<Record<string, number | null | undefined>>;
89
+ /** Floor below which a warm account gives way; defaults to {@link AFFINITY_QUOTA_FLOOR_SHARE}. */
90
+ readonly floorShare?: number;
91
+ }
92
+ /**
93
+ * Order the accounts this request would rather use, warmest and safest first.
94
+ *
95
+ * Only accounts whose prefix is warm AND whose remaining share is either
96
+ * unknown or at least the floor are returned: a warm account that is nearly
97
+ * spent is deliberately absent, because the pool then falls back to its own
98
+ * rotation instead of spending the last of a window on a discount. An empty
99
+ * result means "no preference" — the caller passes no hint at all and the
100
+ * strategy behaves exactly as it would have without this module.
101
+ *
102
+ * Order: a warm account with a known-and-sufficient share first (largest
103
+ * remaining first, so two warm accounts spread the load instead of always
104
+ * spending one), then a warm account whose share nobody measured. Unknown last
105
+ * because a measured account is a better bet than an unmeasured one, but still
106
+ * listed: an unmeasured warm account is not evidence of anything bad.
107
+ *
108
+ * @param input - candidates plus the quota evidence behind them.
109
+ * @returns account ids in preference order; empty when nothing is preferred.
110
+ */
111
+ export declare function orderAffinityCandidates(input: AffinityOrderInput): string[];
112
+ //# sourceMappingURL=cache-affinity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-affinity.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/cache-affinity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAO/E;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,MAAqC,CAAA;AAE5E;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAEjG;AAED,+DAA+D;AAC/D,eAAO,MAAM,kCAAkC,QAEwB,CAAA;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,iCAAiC,CAAA;AAEhE;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE;QAAE,GAAG,IAAI,OAAO,GAAG,SAAS,CAAA;KAAE,GAAG,OAAO,CAAA;CAAE,EACrE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAcT;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAA;IACjF,kGAAkG;IAClG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAE3E"}
@@ -1,3 +1,4 @@
1
+ import { type CacheHintDecision, type CacheHintInput } from '../common/cache-hint.ts';
1
2
  /**
2
3
  * When it is worth telling the user their prompt cache has gone cold.
3
4
  *
@@ -58,33 +59,7 @@ export declare function markSessionActive(sessionId: string | undefined, now?: n
58
59
  export declare function sessionLastActiveAt(sessionId: string | undefined): number | undefined;
59
60
  /** Forget one session's activity, or all of it. Test seam and teardown. */
60
61
  export declare function resetSessionActivity(sessionId?: string): void;
61
- export interface CacheHintInput {
62
- /** Current time, epoch ms. */
63
- readonly now: number;
64
- /**
65
- * When the conversation last did anything, epoch ms.
66
- *
67
- * Absent means nothing is known, and the hint is skipped: a client that
68
- * cannot say how long the session was idle cannot claim the entry expired.
69
- */
70
- readonly lastActiveAt?: number;
71
- /** Context currently loaded, in tokens. Absent means no local estimate. */
72
- readonly totalTokens?: number;
73
- }
74
- export type CacheHintDecision = {
75
- readonly kind: 'skip';
76
- } | {
77
- readonly kind: 'hint';
78
- readonly idleMs: number;
79
- readonly totalTokens: number;
80
- };
81
- /**
82
- * Whether one conversation should be warned about a cold cache.
83
- *
84
- * Every missing-data branch skips. That asymmetry is deliberate and matches
85
- * the official client: a false negative costs one turn nobody noticed, while a
86
- * false positive teaches the user the notice is noise and stops them reading
87
- * the one that mattered.
88
- */
62
+ export type { CacheHintDecision, CacheHintInput } from '../common/cache-hint.ts';
63
+ /** Kimi supplies its measured defaults; other providers call the common pure function directly. */
89
64
  export declare function evaluateCacheHint(input: CacheHintInput): CacheHintDecision;
90
65
  //# sourceMappingURL=cache-hint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-hint.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/cache-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,YAAY,QAAiB,CAAA;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,SAAU,CAAA;AAczC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAS/F;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGrF;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAM7D;AAED,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAW1E"}
1
+ {"version":3,"file":"cache-hint.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/cache-hint.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,YAAY,QAAiB,CAAA;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,SAAU,CAAA;AAczC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAS/F;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGrF;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAM7D;AAED,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAEhF,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAM1E"}
@@ -1,3 +1,4 @@
1
+ import { type PromptCacheOverride } from '../common/prompt-cache-policy.ts';
1
2
  /** When an idle parent reaches its cache decision point (five minutes before TTL). */
2
3
  export declare const CACHE_WAIT_DECISION_MS: number;
3
4
  /** Minimum prompt tokens required before a wait warmup is sent (0 = any active context). */
@@ -5,7 +6,7 @@ export declare const DEFAULT_MIN_WARMUP_TOKENS = 0;
5
6
  /** Environment override for wait-time cache keepalive warmup. */
6
7
  export declare const CACHE_WAIT_WARMUP_ENV = "DSH_KIMI_CODE_CACHE_WAIT_WARMUP";
7
8
  /** Settings description for the progress-updates / Kimi cache-wait switch. */
8
- export declare const CACHE_WAIT_WARMUP_SETTING_DESCRIPTION = "Kimi Code \u4E13\u7528\uFF1A\u7B49\u5F85\u5B50\u4EE3\u7406\u5B8C\u6210\u671F\u95F4\uFF0C\u4E3B\u4F1A\u8BDD\u6BCF\u7A7A\u95F2\u6EE1 20 \u5206\u949F\u81EA\u52A8\u89E6\u53D1\u4E00\u6B21\u8F7B\u91CF\u7F13\u5B58\u7EED\u70ED\uFF0C\u53EA\u8981\u5B50\u4EE3\u7406\u4ECD\u5728\u8FD0\u884C\u5C31\u6301\u7EED\u7EED\u70ED\u4EE5\u9632 25 \u5206\u949F\u7F13\u5B58\u8FC7\u671F\u91CD\u5EFA\uFF1B\u975E Kimi \u7EBF\u8DEF\u5F00\u5173\u65E0\u5F71\u54CD\u3002";
9
+ export declare const CACHE_WAIT_WARMUP_SETTING_DESCRIPTION = "\u7B49\u5F85\u5B50\u4EE3\u7406\u5B8C\u6210\u671F\u95F4\u6309\u7EBF\u8DEF\u7F13\u5B58 TTL \u8F7B\u91CF\u7EED\u70ED\uFF1B\u9ED8\u8BA4\u7528\u4E8E Kimi\uFF0820/25 \u5206\u949F\uFF09\uFF0C\u5176\u4ED6\u7EBF\u8DEF\u9700\u660E\u786E TTL \u5E76\u5728 promptCacheOverrides \u4E2D\u663E\u5F0F\u542F\u7528\u3002";
9
10
  export interface CacheWaitSession {
10
11
  readonly id: string;
11
12
  requestHeader?(): {
@@ -43,8 +44,10 @@ export interface CacheWaitOptions {
43
44
  readonly now?: () => number;
44
45
  readonly timer?: CacheWaitTimer;
45
46
  readonly agents?: CacheWaitAgents;
46
- readonly activity?: (sessionId: string) => CacheWaitActivity | undefined;
47
+ readonly activity?: (sessionId: string, provider?: string) => CacheWaitActivity | undefined;
47
48
  readonly kimiSession?: (session: CacheWaitSession) => boolean;
49
+ /** Deployment policy overrides; unknown providers remain inert. */
50
+ readonly overrides?: Readonly<Record<string, PromptCacheOverride>>;
48
51
  readonly logger?: CacheWaitLogger;
49
52
  readonly decisionMs?: number;
50
53
  readonly ttlMs?: number;
@@ -113,7 +116,6 @@ export declare class KimiCacheWaitController {
113
116
  private readonly warmup;
114
117
  private readonly logger?;
115
118
  private readonly decisionMs;
116
- private readonly ttlMs;
117
119
  private readonly minWarmupTokens;
118
120
  private disposed;
119
121
  constructor(options?: CacheWaitOptions);
@@ -132,7 +134,7 @@ export declare class KimiCacheWaitController {
132
134
  private dropState;
133
135
  private removeChild;
134
136
  private clearTimer;
135
- private isKimiSession;
137
+ private providerForSession;
136
138
  private isWarmupEnabled;
137
139
  private reconcile;
138
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cache-wait.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/cache-wait.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-wait.d.ts","sourceRoot":"","sources":["../../../../src/host/kimi-code/cache-wait.ts"],"names":[],"mappings":"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"}
@@ -29,13 +29,15 @@
29
29
  import { type OutboundContentBlock, type GenerateOptions, type Message, type StreamChunk } from '../common/llm-compat.ts';
30
30
  import { normalizeKimiToolSchema } from '../common/tool-schema.ts';
31
31
  import { estimatedInputTokens } from '../common/prompt-estimate.ts';
32
+ import { ReasoningKeyDialect as SharedReasoningKeyDialect } from '../common/reasoning-dialect.ts';
32
33
  export { estimatedInputTokens, normalizeKimiToolSchema };
33
34
  import { MAX_MESSAGE_BODY_BYTES, MAX_REQUEST_IMAGE_BYTES, MAX_REQUEST_VIDEO_BYTES, MAX_VIDEO_MESSAGE_BODY_BYTES, NO_RESOLVED_IMAGES, REQUEST_IMAGE_MAX_EDGE, collectRemainingImageKeys, offloadOldestRequestImages, offloadRequestImagesWithStickyBudget, requestImageKey, requestImageTarget, resolveRequestImages, type AttachmentImageReader, type ResolvedRequestImage, type ResolvedRequestImages, type StickyImageOffloadResult } from '../common/request-images.ts';
34
35
  export { MAX_MESSAGE_BODY_BYTES, MAX_REQUEST_IMAGE_BYTES, MAX_REQUEST_VIDEO_BYTES, MAX_VIDEO_MESSAGE_BODY_BYTES, NO_RESOLVED_IMAGES, REQUEST_IMAGE_MAX_EDGE, collectRemainingImageKeys, offloadOldestRequestImages, offloadRequestImagesWithStickyBudget, requestImageKey, requestImageTarget, resolveRequestImages, type AttachmentImageReader, type ResolvedRequestImage, type ResolvedRequestImages, type StickyImageOffloadResult, };
35
36
  export { DEFAULT_LOW_REQUEST_IMAGE_BYTES, lowRequestImageBytes } from './types.ts';
36
37
  import { offloadOldestRequestVideos as offloadVideosWithinBudget, requestHasVideo, resolveRequestVideos, type AttachmentVideoReader, type ResolvedRequestVideos } from '../common/video-request.ts';
37
38
  export { offloadVideosWithinBudget as offloadOldestRequestVideos, requestHasVideo, resolveRequestVideos, type AttachmentVideoReader, type ResolvedRequestVideos, };
38
- import type { KimiCodeReasoningEffort, KimiCodeWire } from '../../shared/kimi-code-contracts.ts';
39
+ import type { KimiCodeReasoningEffort, KimiCodeRequestDiagnostic, KimiCodeWire } from '../../shared/kimi-code-contracts.ts';
40
+ import { KimiToolArgumentGuard } from './tool-argument-guard.ts';
39
41
  /**
40
42
  * Wire keys an OpenAI-compatible response can carry reasoning under.
41
43
  *
@@ -112,8 +114,7 @@ export declare function reasoningFragmentsOf(source: unknown): ReasoningFragment
112
114
  * turn. Detection never clears: a response with no reasoning keeps the last
113
115
  * known dialect, and an endpoint that switches is adapted on its next reply.
114
116
  */
115
- export declare class ReasoningKeyDialect {
116
- private detected;
117
+ export declare class ReasoningKeyDialect extends SharedReasoningKeyDialect {
117
118
  /**
118
119
  * Every reasoning fragment one inbound delta carries, remembering the dialect.
119
120
  *
@@ -132,10 +133,6 @@ export declare class ReasoningKeyDialect {
132
133
  observeAll(source: unknown): ReasoningFragment[];
133
134
  /** First reasoning fragment on an inbound message or delta, remembering its key. */
134
135
  observe(source: unknown): string | undefined;
135
- /** The key to serialize thinking into on an outbound assistant message. */
136
- outboundKey(): string;
137
- /** Forget the detected key, returning to the default. Test seam only. */
138
- reset(): void;
139
136
  }
140
137
  /**
141
138
  * The reasoning key an outbound assistant message should use.
@@ -530,6 +527,7 @@ interface PendingToolCall {
530
527
  name: string;
531
528
  arguments: string;
532
529
  started: boolean;
530
+ guard?: KimiToolArgumentGuard;
533
531
  }
534
532
  /**
535
533
  * One failure the stream reported itself, as the wire stated it.
@@ -627,6 +625,10 @@ export interface KimiCodeStreamState {
627
625
  cacheWrite5mTokens: number;
628
626
  cacheWrite1hTokens: number;
629
627
  reasoningTokens: number;
628
+ /** Whether the upstream actually carried each optional usage field. */
629
+ cacheReadReported: boolean;
630
+ cacheWriteReported: boolean;
631
+ reasoningReported: boolean;
630
632
  sawUsage: boolean;
631
633
  /**
632
634
  * Per-request tool-call id assignment.
@@ -651,6 +653,10 @@ export interface KimiCodeStreamState {
651
653
  * rolling cache ratio would then describe a prompt the session never sent.
652
654
  */
653
655
  sideChannel: boolean;
656
+ /** Actual pooled account behind this response, retained through terminal events. */
657
+ accountId?: string;
658
+ /** Bounded guard evidence; never includes the tool argument payload. */
659
+ toolGuard?: NonNullable<KimiCodeRequestDiagnostic['toolGuard']>;
654
660
  }
655
661
  export declare function createStreamState(wire: KimiCodeWire, sessionId?: string, sideChannel?: boolean): KimiCodeStreamState;
656
662
  /** Feed one SSE `data:` payload from `/chat/completions`. */