Skip to content

Latest commit

 

History

History
342 lines (195 loc) · 45.6 KB

File metadata and controls

342 lines (195 loc) · 45.6 KB

@martian-engineering/lossless-claw

0.9.2

Patch Changes

  • #444 6596fb4 Thanks @andyylin! - Fix context-engine registration so the plugin only registers its canonical lossless-claw id, align runtime Pi package versions with the current OpenClaw stack, and tighten selection helpers to stop treating the old default alias as equivalent to the plugin id.

  • #455 370b91b Thanks @copilot-swe-agent! - Wrap SQLite migrations in a single exclusive transaction so concurrent startup agents serialize migration work instead of racing on per-statement autocommit writes.

  • #465 6f7f942 Thanks @liu51115! - Harden defensive handling for non-string database path and timestamp values so malformed runtime data does not trigger .trim() crashes or silently skew stored chronology.

  • #405 5949a4b Thanks @uf-hy! - Restrict the missed-/reset bootstrap fallback to confirmed missing transcript paths so transient stat() failures do not rotate a live conversation.

  • #450 36c80d5 Thanks @coryscook! - Use the resolved plugin summary config when runtime config is unavailable so compaction keeps the configured summary model instead of falling back to emergency truncation.

  • #418 f8fe367 Thanks @gitchrisqueen! - Fix manual and threshold-triggered compaction results so a full sweep that ends under the target budget reports already under target instead of a misleading no-op failure.

  • #468 082b2a9 Thanks @jalehman! - Unify lcm-tui summary provider configuration across doctor, repair, rewrite, and backfill so the standalone commands honor the same provider, model, and base URL overrides as interactive rewrite.

  • #467 6580e8f Thanks @jalehman! - Fix lcm-tui OAuth-backed Claude rewrites, repairs, and doctor apply runs so large prompts stream over stdin instead of overflowing the CLI argument limit.

  • #456 134bb8a Thanks @jalehman! - Improve prompt-cache stability by making compacted-context guidance static and disabling prompt-aware eviction by default.

0.9.1

Patch Changes

  • #392 00d1fa2 Thanks @GodsBoy! - Avoid repeated full bootstrap rereads when an unchanged session transcript misses the normal checkpoint fast paths.

  • #305 2d1446f Thanks @stilrmy! - Fix startup-time summary model resolution when OpenClaw populates plugin config before the top-level runtime config surface.

  • #388 5bdd596 Thanks @bennybuoy! - Fix the built-in API-family fallback for ollama providers so summarization can use OpenAI-compatible Ollama models without requiring an explicit models.providers.ollama.api setting.

  • #433 5c8ef34 Thanks @jalehman! - Apply content-recency sorting consistently to CJK summary full-text search so recent summarized content does not lose to older but stronger trigram matches.

  • #441 26708b9 Thanks @jalehman! - Keep deferred incremental compaction debt pending until oversized raw backlog is actually compacted, and let budget-triggered catch-up scale passes with prompt overage instead of forcing one pass per turn.

  • #434 049ce3b Thanks @jalehman! - Keep deferred Anthropic leaf compaction moving once the prompt-cache TTL has gone stale, even if cache-aware cold-observation smoothing still treats the session as effectively hot for routing-noise protection.

0.9.0

Minor Changes

  • #408 abf31da Thanks @100yenadmin! - Added deferred proactive compaction as the default mode, with explicit maintenance debt tracking and status visibility so foreground turns no longer run threshold compaction inline unless compatibility mode is enabled.

  • #355 6e9388c Thanks @LanicBlue! - Externalize inline base64 images before large tool-result text compaction, and add largeFilesDir / LCM_LARGE_FILES_DIR so externalized payload storage can be configured explicitly.

Patch Changes

  • #403 ea7d532 Thanks @jetd1! - Convert bootstrap's file I/O off the Node.js event loop. readFileSegment and readLastJsonlEntryBeforeOffset previously used sync openSync/readSync/statSync, which could block the gateway for minutes while scanning multi-MB JSONL transcripts during the bootstrap append-only path. The bootstrap entry statSync and refreshBootstrapState helper are now async as well. The backward-scan loop now only reads new chunks when the current carry has no more newlines, and the fast path short-circuits before the backward scan when the DB's latest hash no longer matches the checkpoint (the common case during active sessions, where the scan can never succeed).

  • #395 2c05599 Thanks @100yenadmin! - Add /lcm backup and /lcm rotate plugin commands so users can snapshot the SQLite database on demand and split oversized active LCM conversations without changing their live OpenClaw session identity. Rotation now checkpoints the current transcript frontier so the fresh row starts from now forward instead of replaying older transcript history.

  • #425 3faa9bd Thanks @jalehman! - Report the canonical lossless-claw context-engine id from the runtime engine metadata so newer OpenClaw builds accept the plugin's registered engine slot.

  • #420 e0fa375 Thanks @100yenadmin! - Fix /lcm rotate so it waits for the live database connection to become idle, takes a faithful pre-rotate backup on that connection, and then compacts the current session transcript without replacing the active LCM conversation. Rotation now preserves the existing conversation id, summaries, and context items while refreshing bootstrap state so dropped transcript history is not replayed.

  • #415 7668717 Thanks @ryanngit! - Handle conversation creation races on active session keys without crashing the caller.

  • #413 347add7 Thanks @ryanngit! - Increase the SQLite busy timeout to 30 seconds to better tolerate concurrent writer contention without spurious SQLITE_BUSY failures.

0.8.2

Patch Changes

  • #400 1711957 Thanks @jalehman! - Strip comments from the pre-bundled dist/index.js so the OpenClaw install-time code safety scanner no longer flags JSDoc prose (e.g. "Fetch all context items") as a network-send pattern and blocks installation with an env-harvesting false positive.

0.8.1

Patch Changes

  • #379 7f42703 Thanks @jalehman! - Improve the session_id fallback conversation lookup by adding the matching composite index so SQLite can satisfy the latest-conversation query without a scan and temp sort.

  • #366 f4177ec Thanks @100yenadmin! - Fix bootstrap recovery when a session rotates to a new transcript file so stale summaries and checkpoints are cleared before re-importing the replacement session history.

  • #376 06a05e5 Thanks @100yenadmin! - Add startup diagnostics that attribute resolved ignore/stateless pattern sources, and warn when env-backed pattern arrays override plugin config arrays.

  • #353 6fa2829 Thanks @copilot-swe-agent! - Pre-bundle the plugin to dist/index.js using esbuild before publishing. This eliminates the per-invocation TypeScript compilation overhead caused by OpenClaw's JITI loader recursively transpiling every .ts source file, reducing CLI startup latency from 15–25 s to near-instant.

  • #354 b0ad788 Thanks @copilot-swe-agent! - Honor OPENCLAW_STATE_DIR for the default database, large-file storage, auth-profile, and legacy secret paths so multi-profile OpenClaw gateways do not read and write each other's state.

  • #380 33ecb88 Thanks @jalehman! - Stop rerunning startup summary and tool-call backfills after they complete successfully, while still retrying the same backfill version cleanly if startup fails before the completion marker is written.

  • #371 597ec70 Thanks @holgergruenhagen! - Avoid treating omitted LCM summarizer reasoning settings like reasoning-disabled requests for reasoning-capable models by applying a low default only when the resolved model supports reasoning.

  • #377 3b2d34c Thanks @100yenadmin! - Add an opt-in transcriptGcEnabled config flag, defaulting it to false, and skip transcript-GC rewrites during maintain() unless the flag is enabled. Also add startup diagnostics and documentation for the new setting.

  • #387 5113044 Thanks @oguzbilgic! - Refresh the bootstrap checkpoint after normal afterTurn() ingestion so persistent sessions can keep using the append-only bootstrap fast path after real conversation turns.

0.8.0

Minor Changes

  • #337 0c139a2 Thanks @100yenadmin! - Add /lossless doctor clean apply for backup-first cleanup of approved high-confidence junk conversations, while preserving archived-only handling for NULL-key subagent rows and surfacing integrity-check warnings after apply.

  • #323 e781980 Thanks @jalehman! - Allow lcm_expand_query(allConversations: true) to synthesize bounded answers across multiple conversations, including per-conversation diagnostics for partial or truncated results.

Patch Changes

  • #332 98cb02a Thanks @jalehman! - Clarify lcm_grep and lcm_expand_query guidance so agents use shorter FTS5 queries, keep natural-language instructions in prompt, and avoid over-constraining recall with extra keywords.

  • #344 897a953 Thanks @jetd1! - Keep compaction summary caps and deterministic fallback truncation within budget for CJK-heavy and emoji-heavy content.

  • #331 d7a57c5 Thanks @jalehman! - Recover from malformed legacy summaries_fts tables during migration instead of crashing plugin startup.

  • #334 71d6d9c Thanks @100yenadmin! - Harden malformed FTS migration recovery so stale trigram tables are cleaned up before other FTS schema probes and startup migrations no longer skip recovery by reusing a cached FTS5 capability check.

  • #172 8bf5e7f Thanks @craigamcw! - Skip ingesting empty assistant messages from errored or aborted provider responses so they do not accumulate in assembled context and trigger retry loops.

  • #330 acf1e02 Thanks @little-jax! - Restore direct-credential summarizer retries for custom provider aliases and avoid misreporting transient provider failures as provider_config errors.

  • #351 ea1f80d Thanks @kitcommerce! - Ensure forced overflow recovery still runs compaction when live observed token counts are unavailable.

  • #328 3de1f9e Thanks @jalehman! - Fall back to plugins.entries["lossless-claw"].config when older or otherwise incompatible OpenClaw runtimes do not provide a usable api.pluginConfig.

0.7.0

Minor Changes

  • #318 b7078df Thanks @jalehman! - Add optional dynamic leaf chunk sizing for incremental compaction, including bounded activity-based chunk growth, cold-cache max bumping, and automatic retry with smaller chunk targets when a provider rejects an oversized compaction request.

  • #296 4906c62 Thanks @100yenadmin! - Improve lcm_grep full-text recall with phrase-preserving queries and sort modes (recency, relevance, and hybrid) that rank results before limit is applied.

  • #285 aac2668 Thanks @mvanhorn! - Add conversation prune function for bulk data retention, allowing deletion of conversations where all messages are older than a configurable threshold.

Patch Changes

  • #295 1ef1b29 Thanks @100yenadmin! - Reduce compaction database work by caching per-phase context reads, skipping redundant ordinal resequencing, and tracking token-count deltas instead of re-querying after each pass.

  • #318 b7078df Thanks @jalehman! - Make incremental leaf compaction cache-aware by deferring extra passes while prompt caching is hot, allowing bounded catch-up when the cache goes cold, and adding cacheAwareCompaction config controls for the behavior.

  • #319 3bc5bde Thanks @jalehman! - Document the full lossless-claw configuration surface and align the plugin manifest schema and UI hints with the runtime-supported config keys.

  • #288 d74ad07 Thanks @100yenadmin! - Wait for deferred LCM database initialization after lock-contended gateway restarts, and surface the real retry failure when deferred startup cannot recover.

  • #294 43342d9 Thanks @100yenadmin! - Tune SQLite defaults for large lossless-claw databases by increasing the page cache, keeping temporary structures in memory, and using WAL-friendly synchronous settings.

    Add missing indexes for summary_messages(message_id) and summaries(conversation_id, depth, kind) so summary cleanup and depth-filtered queries avoid full table scans on existing databases.

  • #302 558183d Thanks @100yenadmin! - Fix compaction summarizer exhaustion handling so multi-provider non-auth failures log the terminal exhaustion path and fall back to deterministic truncation instead of returning an empty summary.

  • #322 d0dacc9 Thanks @jalehman! - Use OpenClaw runtime-ready model auth for summarization requests so managed auth providers work correctly.

  • #329 6579b91 Thanks @jalehman! - Improve lossless-claw reliability around cache-aware compaction and transcript replay, including heartbeat-turn pruning, bootstrap compatibility for legacy JSONL message envelopes, and updated runtime logging/docs alignment.

  • #300 a42f422 Thanks @jalehman! - Fix lcm-tui Telegram topic session lookups so topic-backed sessions show the correct conversation metadata, summary counts, and file counts when browsing session keys.

0.6.3

Patch Changes

  • #244 cb51dd2 Thanks @jalehman! - Use OpenClaw's enriched session_end hook to preserve clean LCM conversation boundaries across automatic session rollover, compaction session replacement, and session deletion.

  • 4ddf05c Thanks @mvanhorn! - Route all LCM startup diagnostics to stderr so --json CLI output stays machine-readable, while keeping debug-only migration details behind the host logger's debug gating.

  • #280 9a2c3e1 Thanks @liu51115! - Fix bootstrap checkpoint refresh after transcript maintenance so unchanged restarts stay on the fast path, and avoid advancing the checkpoint when replay-safety import caps abort reconciliation.

0.6.2

Patch Changes

  • #270 8618ea7 Thanks @jalehman! - Fix forced timeout-recovery compaction so live budget overflows use the capped compactUntilUnder() path instead of no-oping through a stored-context full sweep.

  • #273 40c90b1 Thanks @100yenadmin! - Fix LCM summarization for runtime-managed OAuth providers like openai-codex by preserving first-pass credential resolution and skipping the incompatible direct-credential retry path. Also add configurable summarizer timeouts via summaryTimeoutMs and LCM_SUMMARY_TIMEOUT_MS.

  • #261 65c76f1 Thanks @100yenadmin! - Fix shared-SQLite transaction coordination during bootstrap and compaction so concurrent sessions do not collide on one database connection, and nested transaction scopes on the same async path stay safe.

0.6.1

Patch Changes

  • d1a9eb3 Thanks @jalehman! - Fix conversation integrity regressions by pruning heartbeat-shaped ACK turns before compaction, avoiding synthetic compaction telemetry in canonical transcript history, and deduplicating replayed history using stable session key continuity during afterTurn processing.

0.6.0

Minor Changes

  • #195 8efd2e9 Thanks @jalehman! - Add explicit /new and /reset lifecycle handling for OpenClaw sessions.

    /new now prunes fresh context from the active conversation while preserving retained summaries by configured depth, and /reset now archives the current conversation before starting a fresh active conversation for the same stable session key.

  • #243 f074000 Thanks @jalehman! - Add the bundled lossless-claw skill and the MVP /lcm command surface with summary-health diagnostics.

  • #148 ef445da Thanks @jalehman! - Add runtime-assisted transcript GC for summarized externalized tool results so active session transcripts can shrink after oversized tool output has been condensed and preserved in large_files.

Patch Changes

  • #255 a1bda9b Thanks @jalehman! - Limit first-time fork bootstrap imports so new conversations only inherit the newest slice of raw parent history instead of loading the entire parent transcript into lossless memory.

  • #258 cd18739 Thanks @100yenadmin! - Add regression coverage for bootstrap budget edge cases and invalid numeric env fallback behavior.

  • #230 ca51445 Thanks @liu51115! - Fix compaction auth circuit breaker handling so auth failures during multi-pass sweeps still trip the breaker, while failures for one resolved summarizer no longer block unrelated providers or sessions.

  • #229 1fb8b8f Thanks @tingyiy! - Preserve explicit timezone offsets when parsing stored timestamps while still treating bare SQLite datetime('now') values as UTC.

  • #219 69e5f6a Thanks @catgodtwno4! - Fix CJK summary search so mixed-language queries still require all terms, and single-character CJK queries continue to return matches.

  • #222 d8261d7 Thanks @copilot-swe-agent! - Block overlapping lcm_expand_query delegations from the same origin session so concurrent expansion requests fail fast instead of deadlocking on the shared sub-agent lane.

  • #257 ea43f58 Thanks @100yenadmin! - Fix the hardened afterTurn() replay dedup path so it ingests the intended post-turn batch, and add coverage for restart replay when an auto-compaction summary is present.

  • #180 ea84f45 Thanks @GodsBoy! - Fix prompt-aware context eviction so blank or otherwise unsearchable prompts fall back to the existing chronological behavior instead of entering the relevance-scoring path.

  • #178 0613b7f Thanks @catgodtwno4! - Fix summarizer auth-error detection so real provider auth envelopes nested under data or body still trigger handling, while successful summary payloads in message or response no longer cause false-positive auth failures.

  • #242 3fe823f Thanks @jalehman! - Move static lossless recall policy guidance into the plugin prompt hook while keeping systemPromptAddition limited to session-specific compaction reminders.

    This makes the stable recall-order guidance cacheable, clarifies that lossless-claw takes precedence over generic memory recall only for compacted conversation history, and leaves deep-compaction expand-before-asserting guidance in the dynamic assembled prompt.

  • #252 e843638 Thanks @jalehman! - Sync the published plugin manifest schema with the runtime-supported plugin config surface so documented config keys are accepted by OpenClaw. This also removes the undocumented autocompactDisabled setting from the advertised config surface because it was parsed but not wired to runtime behavior.

0.5.3

Patch Changes

  • #228 2f5735d Thanks @jalehman! - Make compaction summarization fall back to the next resolved model when the preferred model times out or returns repeated empty provider errors, and make the startup banner reflect the same compaction model precedence used at runtime.

  • #221 9fa4f3d Thanks @jalehman! - Raise the default protected fresh tail to 64 messages and make incremental compaction run one condensed pass by default.

  • #224 1fd2a44 Thanks @copilot-swe-agent! - Add a configurable delegated expansion timeout for lcm_expand_query via plugin config (delegationTimeoutMs) and LCM_DELEGATION_TIMEOUT_MS.

  • #223 028f171 Thanks @copilot-swe-agent! - Expose leafChunkTokens as a first-class plugin config option so deployments can tune leaf compaction frequency without patching the plugin manifest.

  • #220 8f84d8e Thanks @jalehman! - Improve LongMemEval compaction and retrieval reliability by filtering reasoning text from summaries, retrying truncated summaries, hardening delegated expansion, and falling back to raw-message search in shallow trees.

  • #205 ef4865f Thanks @aquaright1! - Preserve assistant text and matched tool calls when pruning stale orphaned tool calls from assembled context.

  • #211 7975a1e Thanks @GodsBoy! - Fix compaction cap handling so capped summaries stay within the configured token limit and direct compaction APIs respect maxAssemblyTokenBudget.

0.5.2

Patch Changes

  • #185 ec74779 Thanks @jalehman! - Fix lcm-tui doctor to detect third truncation marker format ([LCM fallback summary; truncated for context management]) and harden Claude CLI summarization with --system-prompt flag and neutral working directory to prevent workspace contamination.

  • #186 c796f7d Thanks @jalehman! - Harden LCM summarization so provider auth failures no longer persist fallback summaries, and stop forcing explicit temperature overrides on summarizer requests.

  • #182 954a2fd Thanks @jalehman! - Improve lcm-tui session browsing by showing stable session keys in the session list and conversation header, and align the session list columns so message counts and LCM metadata are easier to scan.

  • #128 0f1a5d8 Thanks @TSHOGX! - Honor custom API base URL overrides for lcm-tui rewrite, lcm-tui backfill, and interactive rewrite so TUI summarization can use configured provider proxies and non-default endpoints.

0.5.1

Patch Changes

  • #159 20b6c1b Thanks @tmchow! - Fix legacy tool-call backfill for rows that stored ids under metadata.raw.call_id.

  • #163 31307a6 Thanks @jalehman! - Prevent the summarizer from reusing the active session auth profile when an explicit LCM summary provider and model are configured.

0.5.0

Minor Changes

  • #157 f3f0aa2 Thanks @jalehman! - Add lcm-tui doctor command for auto-detecting and repairing truncation-fallback summaries. Features position-aware marker detection (rejects false positives from summaries that quote markers in narrative text), bottom-up repair ordering, OAuth/token CLI delegation, and transaction-safe dry-run mode.

  • #138 9047e49 Thanks @jalehman! - Add incremental bootstrap checkpoints and large tool-output externalization.

    This release speeds up restart/bootstrap by checkpointing session transcript state, skipping unchanged transcript replays, and using append-only tail imports when a session file only grew. It also externalizes oversized tool outputs into large_files with compact placeholders so long-running OpenClaw sessions keep their full recall surface without carrying giant inline tool payloads in the active transcript.

Patch Changes

  • #156 968b1d6 Thanks @jalehman! - Fix compaction auth failures: surface provider auth errors instead of silently aborting, fall back to deterministic truncation when summarizer returns empty content, fall through to legacy auth-profiles.json when modelAuth returns scope-limited credentials. TUI now sets WAL mode and busy_timeout to prevent SQLITE_BUSY during concurrent usage.

  • #129 133665c Thanks @semiok! - Use LIKE search for full-text queries containing CJK characters. SQLite FTS5's unicode61 tokenizer can return empty or incomplete results for Chinese/Japanese/Korean text, so CJK queries now bypass FTS and use the existing LIKE-based fallback for correct matches.

  • #132 4522a72 Thanks @hhe48203-ctrl! - Persist the resolved compaction summarization model on summary records instead of always showing unknown.

    Existing summaries rows keep the unknown fallback through an additive migration, while newly created summaries now record the actual model configured for compaction.

  • #126 437c240 Thanks @cryptomaltese! - Annotate attachment-only messages during compaction without dropping short captions.

    This release improves media-aware compaction summaries by replacing raw MEDIA:/... placeholders for attachment-only messages while still preserving real caption text, including short captions such as Look at this!, when a message also includes a media attachment.

  • #146 c37777f Thanks @qualiobra! - Fix a session-queue cleanup race that could leak per-session queue entries during overlapping ingest or compaction operations.

  • #131 bab46cc Thanks @semiok! - Add 60-second timeout protection to summarizer LLM calls. Previously, a slow or unresponsive model provider could block the deps.complete() call indefinitely, starving the Node.js event loop and causing downstream failures such as Telegram polling disconnects. Both the initial and retry summarization calls are now wrapped with a timeout that rejects cleanly and falls through to the existing deterministic fallback.

0.4.0

Minor Changes

  • 45f714c: Add expansionModel and expansionProvider overrides for delegated lcm_expand_query subagent runs.
  • 1e6812a: Add session scoping controls for ignored and stateless OpenClaw sessions, including cron and subagent pattern support, and make runtime summary model environment overrides win reliably over plugin config during compaction.

Patch Changes

  • 518a1b2: Restore automatic post-turn compaction when OpenClaw omits the top-level tokenBudget, by resolving fallback budget inputs consistently before using the default compaction budget.
  • 6c54c7b: Declare explicit OpenClaw tool names for the LCM factory-registered tools so plugin metadata and tool listings stay populated in hosts that require registerTool(..., { name }) hints for factory registrations.
  • 9ee103a: Fix condensed summary expansion so replay walks the source summaries that were compacted into a node, and skip proactive compaction when turn ingest fails to avoid compacting a stale frontier.
  • ae260f7: Fix the TUI Anthropic OAuth fallback so Claude CLI summaries respect the selected model and stay within the expected summary size budget.
  • 8f77fe7: Run LCM migrations during engine startup and only advertise ownsCompaction when the database schema is operational, while preserving runtime compaction settings and accurate token accounting for structured tool results.
  • 7fae41c: Fix assembler round-tripping for tool results so structured tool_result content is preserved and normalized tool metadata no longer inflates context token budgeting.
  • ceee14e: Restore stable conversation continuity across OpenClaw session UUID recycling by resolving sessions through sessionKey for both writes and read-only lookups, and keep compaction/ingest serialization aligned with that stable identity.
  • bbd2ecb: Emit LCM startup and configuration banner logs only once per process so repeated OpenClaw plugin registration during snapshot loads does not duplicate the same startup lines.
  • 82becaf: Remove hardcoded non-LCM recall tool names from the dynamic summary prompt so agents rely on whatever memory tooling is actually available in the host session.
  • 6b85751: Restore compatibility for existing OpenClaw sessions that still reference the legacy default context engine, and improve container deployments by adding a supported Docker image and startup flow for LCM-backed OpenClaw environments.
  • 828d106: Improve LCM summarization model resolution so configured summaryModel overrides, OpenClaw agents.defaults.compaction.model, and newer runtimeContext inputs are honored more reliably while preserving compatibility with older legacyCompactionParams integrations.

0.3.0

Minor Changes

  • f1dfa5c: Catch up the release notes for work merged after 0.2.8.

    This release adds Anthropic OAuth setup-token support in the TUI, resolves SecretRef-backed auth-profile credentials and provider-level custom provider configuration during summarization, and formats LCM tool timestamps in the local timezone instead of UTC.