dsh-context-compression-improved 0.5.1 → 0.5.3

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 (57) hide show
  1. package/.gitattributes +1 -0
  2. package/CHANGELOG.ja.md +144 -83
  3. package/CHANGELOG.ko.md +143 -82
  4. package/CHANGELOG.md +278 -212
  5. package/CHANGELOG.zh.md +131 -77
  6. package/docs/installation.md +103 -103
  7. package/docs/installation.zh.md +100 -100
  8. package/package.json +1 -1
  9. package/packages/selector/cordis.patch.yml +5 -6
  10. package/packages/selector/lib/advisor-state.js +4 -231
  11. package/packages/selector/lib/client.d.ts +0 -24
  12. package/packages/selector/lib/client.js +6 -501
  13. package/packages/selector/lib/index.d.ts +4 -10
  14. package/packages/selector/lib/index.js +16 -234
  15. package/packages/selector/lib/pruner.d.ts +13 -248
  16. package/packages/selector/lib/pruner.js +148 -552
  17. package/packages/selector/src/client/EstimatorControls.tsx +0 -101
  18. package/packages/selector/src/client/index.ts +0 -17
  19. package/packages/selector/src/client/locales.ts +0 -38
  20. package/packages/selector/src/client/preset-options.ts +3 -2
  21. package/packages/selector/src/client/settings-section.tsx +8 -17
  22. package/packages/selector/src/index.ts +24 -271
  23. package/packages/selector/src/profiles.ts +4 -27
  24. package/packages/selector/src/pruner/state.ts +2 -25
  25. package/packages/selector/src/pruner.ts +75 -403
  26. package/packages/selector/src/runtime/audit.ts +27 -21
  27. package/packages/selector/src/runtime/config.ts +6 -32
  28. package/packages/selector/src/runtime/tokenpilot/advisor-prompt.ts +188 -188
  29. package/packages/selector/src/runtime/tokenpilot/advisor-state.ts +149 -133
  30. package/packages/selector/src/runtime/tokenpilot/advisor.ts +419 -419
  31. package/packages/selector/src/runtime/tokenpilot/benefit.ts +200 -0
  32. package/packages/selector/src/runtime/types.ts +0 -17
  33. package/packages/selector/tests/advisor-report.host.spec.ts +223 -223
  34. package/packages/selector/tests/preset-options-write.client.spec.ts +7 -23
  35. package/packages/selector/tests/public/package-contract.client.spec.ts +20 -0
  36. package/packages/selector/tests/runtime/advice-never-withholds.host.spec.ts +232 -0
  37. package/packages/selector/tests/runtime/advisor-invariant.spec.ts +272 -272
  38. package/packages/selector/tests/runtime/advisor.spec.ts +226 -226
  39. package/packages/selector/tests/runtime/audit.spec.ts +35 -21
  40. package/packages/selector/tests/runtime/char-basis.spec.ts +30 -30
  41. package/packages/selector/tests/runtime/deprecated-preset-options.spec.ts +96 -0
  42. package/packages/selector/tests/runtime/tokenpilot/benefit.spec.ts +217 -0
  43. package/packages/selector/tests/runtime/tokenpilot/profile-baseline.spec.ts +4 -5
  44. package/packages/selector/tests/settings-seat.client.spec.ts +45 -14
  45. package/scripts/toolclass-corpus-replay.mjs +281 -281
  46. package/packages/selector/src/client/ReviewOverlay.tsx +0 -320
  47. package/packages/selector/src/client/review-scope.ts +0 -16
  48. package/packages/selector/src/runtime/tokenpilot/proposal.ts +0 -267
  49. package/packages/selector/src/runtime/tokenpilot/review-queue.ts +0 -231
  50. package/packages/selector/src/runtime/tokenpilot/review-registry.ts +0 -117
  51. package/packages/selector/src/runtime/tokenpilot/review-storage.ts +0 -122
  52. package/packages/selector/tests/review-overlay.client.spec.tsx +0 -118
  53. package/packages/selector/tests/review-routes-registry.host.spec.ts +0 -142
  54. package/packages/selector/tests/review-routes.host.spec.ts +0 -290
  55. package/packages/selector/tests/runtime/tokenpilot/proposal.spec.ts +0 -393
  56. package/packages/selector/tests/runtime/tokenpilot/pruner-review.spec.ts +0 -382
  57. package/packages/selector/tests/runtime/tokenpilot/review-queue.spec.ts +0 -168
@@ -135,11 +135,6 @@ export interface PresetOptionsSettings {
135
135
  readonly estimatorBaseUrl?: string
136
136
  readonly estimatorApiKey?: string
137
137
  readonly estimatorTimeoutMs?: number
138
- /** Review-mode overrides (beta); mirrors the runtime PresetOptions.reviewMode. */
139
- readonly reviewMode?: boolean
140
- readonly reviewTimeoutTurns?: number
141
- readonly cacheHitDiscountAlpha?: number
142
- readonly reviewHighImpactTokens?: number
143
138
  /** Advisory advisor channel; `''` (the default) keeps the advisor off. */
144
139
  readonly advisorMode?: '' | 'host' | 'direct'
145
140
  readonly advisorTimeoutMs?: number
@@ -160,12 +155,15 @@ export function decodePresetOptionsSettings(value: unknown): PresetOptionsSettin
160
155
  const allowed = new Set([
161
156
  'dedupeToolResults', 'summaryLocator', 'prefixStabilizer', 'readState', 'estimatorMode',
162
157
  'estimatorProvider', 'estimatorModel', 'estimatorBaseUrl', 'estimatorApiKey', 'estimatorTimeoutMs',
158
+ // Legacy keys of the retired review gate: still ACCEPTED so an existing
159
+ // settings document keeps decoding (rejecting them would report the whole
160
+ // card unreadable), and ignored — nothing reads them any more.
163
161
  'reviewMode', 'reviewTimeoutTurns', 'cacheHitDiscountAlpha', 'reviewHighImpactTokens',
164
162
  'advisorMode', 'advisorTimeoutMs', 'advisorRefreshTurns', 'advisorScoreThreshold', 'advisorSampleLimit',
165
163
  'advisorMinTokens',
166
164
  ])
167
165
  if (Object.keys(value).some(key => !allowed.has(key))) return undefined
168
- for (const key of ['dedupeToolResults', 'summaryLocator', 'prefixStabilizer', 'readState', 'reviewMode'] as const) {
166
+ for (const key of ['dedupeToolResults', 'summaryLocator', 'prefixStabilizer', 'readState'] as const) {
169
167
  const entry = value[key]
170
168
  if (entry !== undefined && typeof entry !== 'boolean') return undefined
171
169
  }
@@ -187,23 +185,6 @@ export function decodePresetOptionsSettings(value: unknown): PresetOptionsSettin
187
185
  || estimatorTimeoutMs < 100 || estimatorTimeoutMs > 60_000)) {
188
186
  return undefined
189
187
  }
190
- const reviewTimeoutTurns = value.reviewTimeoutTurns
191
- if (reviewTimeoutTurns !== undefined
192
- && (typeof reviewTimeoutTurns !== 'number' || !Number.isSafeInteger(reviewTimeoutTurns) || reviewTimeoutTurns < 1)) {
193
- return undefined
194
- }
195
- const cacheHitDiscountAlpha = value.cacheHitDiscountAlpha
196
- if (cacheHitDiscountAlpha !== undefined
197
- && (typeof cacheHitDiscountAlpha !== 'number' || !Number.isFinite(cacheHitDiscountAlpha)
198
- || cacheHitDiscountAlpha <= 0 || cacheHitDiscountAlpha >= 1)) {
199
- return undefined
200
- }
201
- const reviewHighImpactTokens = value.reviewHighImpactTokens
202
- if (reviewHighImpactTokens !== undefined
203
- && (typeof reviewHighImpactTokens !== 'number' || !Number.isSafeInteger(reviewHighImpactTokens)
204
- || reviewHighImpactTokens < 0)) {
205
- return undefined
206
- }
207
188
  const advisorTimeoutMs = value.advisorTimeoutMs
208
189
  if (advisorTimeoutMs !== undefined
209
190
  && (typeof advisorTimeoutMs !== 'number' || !Number.isSafeInteger(advisorTimeoutMs)
@@ -246,10 +227,6 @@ export function decodePresetOptionsSettings(value: unknown): PresetOptionsSettin
246
227
  if (value.estimatorBaseUrl !== undefined) decoded.estimatorBaseUrl = value.estimatorBaseUrl as string
247
228
  if (value.estimatorApiKey !== undefined) decoded.estimatorApiKey = value.estimatorApiKey as string
248
229
  if (estimatorTimeoutMs !== undefined) decoded.estimatorTimeoutMs = estimatorTimeoutMs as number
249
- if (value.reviewMode !== undefined) decoded.reviewMode = value.reviewMode as boolean
250
- if (reviewTimeoutTurns !== undefined) decoded.reviewTimeoutTurns = reviewTimeoutTurns as number
251
- if (cacheHitDiscountAlpha !== undefined) decoded.cacheHitDiscountAlpha = cacheHitDiscountAlpha as number
252
- if (reviewHighImpactTokens !== undefined) decoded.reviewHighImpactTokens = reviewHighImpactTokens as number
253
230
  if (advisorMode !== undefined) decoded.advisorMode = advisorMode as '' | 'host' | 'direct'
254
231
  if (advisorTimeoutMs !== undefined) decoded.advisorTimeoutMs = advisorTimeoutMs as number
255
232
  if (advisorRefreshTurns !== undefined) decoded.advisorRefreshTurns = advisorRefreshTurns as number
@@ -8,25 +8,12 @@
8
8
  import type { Session } from '@deepseek-ai/dsh-session'
9
9
  import type { DedupeTable } from '../runtime/tokenpilot/dedup.ts'
10
10
  import type { EstimatorFailures } from '../runtime/tokenpilot/estimator.ts'
11
- import type { ReviewQueue, ReviewQueueStore } from '../runtime/tokenpilot/review-queue.ts'
12
11
  import type { SideChannel } from '../runtime/tokenpilot/sidechannel.ts'
13
12
  import type {
14
13
  ContextCompressionSettings,
15
14
  ResolvedConfig,
16
15
  } from '../runtime/types.ts'
17
16
 
18
- /** Four-state per-session outcome counters behind the floating-window summary row. */
19
- export interface ReviewSessionSummary {
20
- /** Rewrites that landed through the automatic path while review mode served this session. */
21
- autoApplied: number
22
- /** Approved proposals whose merged batch executed with an applied receipt. */
23
- reviewApplied: number
24
- /** Pending proposals that expired unhandled at a turn boundary. */
25
- expired: number
26
- /** Approved proposals voided at the apply point (digest mismatch et al). */
27
- voided: number
28
- }
29
-
30
17
  /** Mutable per-session state bag used inside {@link ToolResultPruner}. */
31
18
  export interface PrunerState {
32
19
  /** Resolved immutable deployment configuration. */
@@ -54,20 +41,10 @@ export interface PrunerState {
54
41
  readonly tailTrimBoundaryAttempts: WeakMap<Session, object>
55
42
  /** Last effective policy audit key emitted for each Session. */
56
43
  readonly policyResolutionAudits: WeakMap<Session, string>
57
- /**
58
- * TokenPilot-inspired R4: shared review-queue store. Starts as the in-memory
59
- * fail-open fallback; swapped to the storageDomain-backed adapter when (and
60
- * if) that seam opens successfully.
61
- */
62
- reviewStore: ReviewQueueStore
63
- /** Per-session review queue carrying the frozen timeout policy. */
64
- readonly reviewQueues: WeakMap<Session, ReviewQueue>
65
- /** Last observed turn index per Session: the monotonic clock for review expiries. */
66
- readonly reviewClocks: WeakMap<Session, number>
44
+ /** Last observed turn index per Session: the monotonic clock for advisory records. */
45
+ readonly turnClocks: WeakMap<Session, number>
67
46
  /** Estimator-reported remaining turns Ŝ per Session; advisory only. */
68
47
  readonly estimatorRemainingTurns: WeakMap<Session, number>
69
48
  /** Per-session advisor side channel, constructed once with the advisor overrides. */
70
49
  readonly advisorChannels: WeakMap<Session, SideChannel>
71
- /** Four-state outcome counters per Session (floating-window summary row). */
72
- readonly reviewSummaries: WeakMap<Session, ReviewSessionSummary>
73
50
  }