Skip to content

feat: implement configuration-driven compression thresholds #120

@ooples

Description

@ooples

Summary

Implement configuration-driven thresholds for token optimization operations, following the pattern discovered in Gemini CLI.

Background

Currently, hardcoded values are scattered throughout the codebase. Gemini CLI uses a centralized configuration system with schema validation.

Gemini CLI Pattern Reference

File: packages/core/src/config/settingsSchema.ts

  • Uses JSON schema for configuration validation
  • Defines CompressionTokenThreshold (default: 0.7 = 70%)
  • Defines CompressionPreserveThreshold (default: 0.3 = keep 30%)
  • Defines per-model tokenBudget limits

Implementation

Create ~/.token-optimizer/config.json:

```json
{
"compressionTokenThreshold": 0.7,
"compressionPreserveThreshold": 0.3,
"minTokensBeforeCompression": 1000,
"modelTokenLimits": {
"gemini-2.5-flash": 1000000,
"gemini-1.5-pro": 2000000
},
"cacheSettings": {
"maxSize": 1000,
"ttlSeconds": 3600
},
"optimizationSettings": {
"minOutputSizeBytes": 500,
"quality": "balanced"
}
}
```

Create PowerShell config class in src/Config.ps1.

Acceptance Criteria

  • Configuration schema with validation
  • PowerShell Config class with Load/Save
  • Default config created on first run
  • Orchestrator uses config values
  • Config updatable without code changes
  • Unit tests for config validation

Priority

High - Foundation for other optimizations

References

Gemini CLI: packages/core/src/config/settingsSchema.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions