context-mode 1.0.32 → 1.0.33

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.
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Claude Code plugins by Mert Koseoğlu",
9
- "version": "1.0.32"
9
+ "version": "1.0.33"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "context-mode",
14
14
  "source": "./",
15
15
  "description": "Claude Code MCP plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
16
- "version": "1.0.32",
16
+ "version": "1.0.33",
17
17
  "author": {
18
18
  "name": "Mert Koseoğlu"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-mode",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "description": "MCP server that saves 98% of your context window with session continuity. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and automatic state restore across compactions.",
5
5
  "author": {
6
6
  "name": "Mert Koseoğlu",
@@ -3,7 +3,7 @@
3
3
  "name": "Context Mode",
4
4
  "kind": "tool",
5
5
  "description": "OpenClaw plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
6
- "version": "1.0.32",
6
+ "version": "1.0.33",
7
7
  "sandbox": {
8
8
  "mode": "permissive",
9
9
  "filesystem_access": "full",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-mode",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "description": "OpenClaw plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
5
5
  "author": {
6
6
  "name": "Mert Koseoğlu",
package/build/server.js CHANGED
@@ -115,6 +115,8 @@ const sessionStats = {
115
115
  bytesReturned: {},
116
116
  bytesIndexed: 0,
117
117
  bytesSandboxed: 0, // network I/O consumed inside sandbox (never enters context)
118
+ cacheHits: 0,
119
+ cacheBytesSaved: 0, // bytes avoided by TTL cache hits
118
120
  sessionStart: Date.now(),
119
121
  };
120
122
  function trackResponse(toolName, response) {
@@ -1025,6 +1027,10 @@ server.registerTool("ctx_fetch_and_index", {
1025
1027
  const ageHours = Math.floor(ageMs / (60 * 60 * 1000));
1026
1028
  const ageMin = Math.floor(ageMs / (60 * 1000));
1027
1029
  const ageStr = ageHours > 0 ? `${ageHours}h ago` : ageMin > 0 ? `${ageMin}m ago` : "just now";
1030
+ // Track cache savings — estimate ~1.6KB per chunk (average indexed content size)
1031
+ const estimatedBytes = meta.chunkCount * 1600;
1032
+ sessionStats.cacheHits++;
1033
+ sessionStats.cacheBytesSaved += estimatedBytes;
1028
1034
  return trackResponse("ctx_fetch_and_index", {
1029
1035
  content: [{
1030
1036
  type: "text",
@@ -1366,6 +1372,17 @@ server.registerTool("ctx_stats", {
1366
1372
  if (keptOut > 0) {
1367
1373
  lines.push("", `Without context-mode, **${kb(totalProcessed)}** of raw output would flood your context window. Instead, **${reductionPct}%** stayed in sandbox.`);
1368
1374
  }
1375
+ // Cache savings section
1376
+ if (sessionStats.cacheHits > 0 || sessionStats.cacheBytesSaved > 0) {
1377
+ const totalWithCache = totalProcessed + sessionStats.cacheBytesSaved;
1378
+ const totalSavingsRatio = totalWithCache / Math.max(totalBytesReturned, 1);
1379
+ const ttlHoursLeft = Math.max(0, 24 - Math.floor((Date.now() - sessionStats.sessionStart) / (60 * 60 * 1000)));
1380
+ lines.push("", `### TTL Cache`, "", `| Metric | Value |`, `|--------|------:|`, `| Cache hits | **${sessionStats.cacheHits}** |`, `| Data avoided by cache | **${kb(sessionStats.cacheBytesSaved)}** |`, `| Network requests saved | **${sessionStats.cacheHits}** |`, `| TTL remaining | **~${ttlHoursLeft}h** |`, "", `Content was already indexed in the knowledge base — ${sessionStats.cacheHits} fetch${sessionStats.cacheHits > 1 ? "es" : ""} skipped entirely. **${kb(sessionStats.cacheBytesSaved)}** of network I/O avoided. Search results served directly from local FTS5 index.`);
1381
+ // Update total savings to include cache
1382
+ if (totalSavingsRatio > savingsRatio) {
1383
+ lines.push("", `**Total context savings (sandbox + cache): ${totalSavingsRatio.toFixed(1)}x** — ${kb(totalWithCache)} processed, only ${kb(totalBytesReturned)} entered context.`);
1384
+ }
1385
+ }
1369
1386
  }
1370
1387
  // ── Session Continuity ──
1371
1388
  try {
@@ -3,7 +3,7 @@
3
3
  "name": "Context Mode",
4
4
  "kind": "tool",
5
5
  "description": "OpenClaw plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
6
- "version": "1.0.32",
6
+ "version": "1.0.33",
7
7
  "sandbox": {
8
8
  "mode": "permissive",
9
9
  "filesystem_access": "full",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-mode",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "type": "module",
5
5
  "description": "MCP plugin that saves 98% of your context window. Works with Claude Code, Gemini CLI, VS Code Copilot, OpenCode, and Codex CLI. Sandboxed code execution, FTS5 knowledge base, and intent-driven search.",
6
6
  "author": "Mert Koseoğlu",