loki-mode 7.111.0 → 7.113.0
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.
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/hooks/migration-hooks.sh +14 -4
- package/dashboard/__init__.py +1 -1
- package/dashboard/static/index.html +3 -3
- package/docs/INSTALLATION.md +1 -1
- package/loki-ts/dist/loki.js +228 -219
- package/mcp/__init__.py +1 -1
- package/memory/retrieval.py +27 -0
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
package/mcp/__init__.py
CHANGED
package/memory/retrieval.py
CHANGED
|
@@ -1360,6 +1360,33 @@ class MemoryRetrieval:
|
|
|
1360
1360
|
optimized = optimize_context(full_details, budget_remaining)
|
|
1361
1361
|
selected_memories.extend(optimized)
|
|
1362
1362
|
|
|
1363
|
+
# Cross-layer dedup by id. A Layer-2 summary and a Layer-3 full record
|
|
1364
|
+
# can carry the SAME memory id (the summary is built from the same
|
|
1365
|
+
# episode/pattern/skill that retrieve_task_aware later surfaces), so
|
|
1366
|
+
# without this pass the same id appears twice. Every other merge path
|
|
1367
|
+
# dedups by id (see _merge_results seen_ids); this one must too. Prefer
|
|
1368
|
+
# the fuller record when both exist: keep the highest _layer for an id
|
|
1369
|
+
# (Layer 3 full > Layer 2 summary > Layer 1 topic). Records without an
|
|
1370
|
+
# id are never collapsed (each keeps its own slot), mirroring
|
|
1371
|
+
# _merge_results. Insertion order of first-seen ids is preserved.
|
|
1372
|
+
deduped: List[Dict[str, Any]] = []
|
|
1373
|
+
best_index_for_id: Dict[Any, int] = {}
|
|
1374
|
+
for item in selected_memories:
|
|
1375
|
+
item_id = item.get("id")
|
|
1376
|
+
if item_id is None:
|
|
1377
|
+
deduped.append(item)
|
|
1378
|
+
continue
|
|
1379
|
+
if item_id in best_index_for_id:
|
|
1380
|
+
existing = deduped[best_index_for_id[item_id]]
|
|
1381
|
+
# Higher layer = fuller record; replace the summary in place so
|
|
1382
|
+
# the first-seen slot keeps the richest entry for this id.
|
|
1383
|
+
if item.get("_layer", 0) > existing.get("_layer", 0):
|
|
1384
|
+
deduped[best_index_for_id[item_id]] = item
|
|
1385
|
+
continue
|
|
1386
|
+
best_index_for_id[item_id] = len(deduped)
|
|
1387
|
+
deduped.append(item)
|
|
1388
|
+
selected_memories = deduped
|
|
1389
|
+
|
|
1363
1390
|
# Calculate final metrics
|
|
1364
1391
|
total_available = self._estimate_total_available_tokens()
|
|
1365
1392
|
metrics = get_context_efficiency(selected_memories, token_budget, total_available)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "loki-mode",
|
|
3
3
|
"mcpName": "io.github.asklokesh/loki-mode",
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.113.0",
|
|
5
5
|
"description": "Loki Mode by Autonomi. Autonomous spec-to-product system: takes a PRD, GitHub issue, OpenAPI/JSON/YAML, or one-line brief to a deployed app via the RARV-C closure loop with 8 quality gates. Provider-agnostic (Claude Code, OpenAI Codex, Cline, Aider).",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agent",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "loki-mode",
|
|
4
4
|
"displayName": "Loki Mode",
|
|
5
|
-
"version": "7.
|
|
5
|
+
"version": "7.113.0",
|
|
6
6
|
"description": "Autonomous spec-to-product build system with a built-in trust layer (RARV-C closure loop, 8 quality gates, completion council). Ships Loki's spec-hardening, drift-detection, and deterministic PR verification commands plus the Loki MCP server.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Autonomi",
|