Module: RubynCode::Context::MicroCompact

Defined in:
lib/rubyn_code/context/micro_compact.rb

Overview

Zero-cost compression that runs every turn. Replaces old tool results (except the most recent N) with short placeholders to reduce token count without losing conversational continuity.

Constant Summary collapse

PLACEHOLDER_TEMPLATE =
'[Previous: used %<tool_name>s]'
MIN_CONTENT_LENGTH =
100

Class Method Summary collapse

Class Method Details

.call(messages, keep_recent: 2, preserve_tools: []) ⇒ Integer

Mutates messages in place, replacing old tool_result content with compact placeholders.

Parameters:

  • messages (Array<Hash>)

    the conversation messages array

  • keep_recent (Integer) (defaults to: 2)

    number of most-recent tool results to preserve

  • preserve_tools (Array<String>) (defaults to: [])

    tool names whose results are never compacted

Returns:

  • (Integer)

    count of compacted tool results



19
20
21
22
23
24
25
26
# File 'lib/rubyn_code/context/micro_compact.rb', line 19

def self.call(messages, keep_recent: 2, preserve_tools: [])
  tool_result_refs = collect_tool_results(messages)
  return 0 if tool_result_refs.size <= keep_recent

  tool_name_index = build_tool_name_index(messages)
  candidates = tool_result_refs[0..-(keep_recent + 1)]
  compact_candidates(candidates, tool_name_index, preserve_tools)
end