loki-mode 7.95.0 → 7.96.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 +13 -0
- package/autonomy/run.sh +18 -1
- package/dashboard/__init__.py +1 -1
- package/dashboard/static/index.html +162 -156
- package/docs/INSTALLATION.md +1 -1
- package/events/bus.ts +7 -1
- package/loki-ts/dist/loki.js +2 -2
- package/mcp/__init__.py +1 -1
- package/mcp/learning_collector.py +18 -0
- package/mcp/server.py +18 -3
- package/memory/consolidation.py +55 -64
- package/memory/storage.py +69 -0
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: Autonomous spec-driven build system with a built-in trust layer. It does not call work done until it is verified (RARV-C closure loop, 8 quality gates, completion council, verified-completion evidence gate). Triggers on "Loki Mode". Takes a spec (PRD, GitHub issue, OpenAPI doc, etc.) to deployed product with minimal human intervention. Provider-agnostic. Requires --dangerously-skip-permissions flag.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v7.
|
|
6
|
+
# Loki Mode v7.96.0
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
@@ -408,4 +408,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
408
408
|
|
|
409
409
|
---
|
|
410
410
|
|
|
411
|
-
**v7.
|
|
411
|
+
**v7.96.0 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
7.
|
|
1
|
+
7.96.0
|
|
@@ -348,6 +348,19 @@ hook_pre_healing_modify() {
|
|
|
348
348
|
[[ "${LOKI_HEAL_MODE:-false}" != "true" ]] && return 0
|
|
349
349
|
[[ -z "$file_path" ]] && return 0
|
|
350
350
|
|
|
351
|
+
# Fail CLOSED if the friction map is absent. Without it the friction safety
|
|
352
|
+
# gate below cannot run, so deleting (or never producing) friction-map.json
|
|
353
|
+
# would otherwise BYPASS protection and let unclassified institutional
|
|
354
|
+
# knowledge be destroyed -- and _heal_snapshot_save would still run, masking
|
|
355
|
+
# the gap. The map is produced by the archaeology phase (the phase gate
|
|
356
|
+
# blocks archaeology -> stabilize until friction-map.json has >=1 entry), so
|
|
357
|
+
# any modify in stabilize/isolate/modernize legitimately has one. Block
|
|
358
|
+
# before any friction check or snapshot proceeds.
|
|
359
|
+
if [[ ! -f "$heal_dir/friction-map.json" ]]; then
|
|
360
|
+
echo "HOOK_BLOCKED: friction-map.json missing at ${heal_dir}/friction-map.json. Run the archaeology phase first (loki heal <path> --phase archaeology) to catalog friction before modifying files in healing mode."
|
|
361
|
+
return 1
|
|
362
|
+
fi
|
|
363
|
+
|
|
351
364
|
# Check if file has friction points
|
|
352
365
|
if [[ -f "$heal_dir/friction-map.json" ]]; then
|
|
353
366
|
local blocked
|
package/autonomy/run.sh
CHANGED
|
@@ -17773,7 +17773,24 @@ check_human_intervention() {
|
|
|
17773
17773
|
if type ensure_completion_test_evidence &>/dev/null; then
|
|
17774
17774
|
ensure_completion_test_evidence || true
|
|
17775
17775
|
fi
|
|
17776
|
-
|
|
17776
|
+
# TRUST MOAT (fail-CLOSED, parity with the default route ~17153): each gate
|
|
17777
|
+
# arm below is `type fn && ! fn`, so a missing gate fn (council library
|
|
17778
|
+
# failed to source) silently skips that gate and the chain can reach
|
|
17779
|
+
# council_vote and force-approve completion UNGATED -- a fake-green. Probe
|
|
17780
|
+
# the core gate fns first; if any is missing, refuse the force-review
|
|
17781
|
+
# approval and fall through to continue iterating. No-op on healthy loads.
|
|
17782
|
+
_frgate_loadable=1
|
|
17783
|
+
for _frgate_fn in council_checklist_gate council_evidence_gate council_heldout_gate council_assumption_ledger_gate; do
|
|
17784
|
+
if ! type "$_frgate_fn" &>/dev/null; then
|
|
17785
|
+
log_error "Council force-review: gate unavailable: ${_frgate_fn} (council library incomplete)."
|
|
17786
|
+
_frgate_loadable=0
|
|
17787
|
+
fi
|
|
17788
|
+
done
|
|
17789
|
+
if [ "$_frgate_loadable" -eq 0 ]; then
|
|
17790
|
+
log_error "Council force-review: required gates missing; refusing force approval (fail-closed)."
|
|
17791
|
+
unset _frgate_loadable _frgate_fn
|
|
17792
|
+
elif type council_checklist_gate &>/dev/null && ! council_checklist_gate; then
|
|
17793
|
+
unset _frgate_loadable _frgate_fn
|
|
17777
17794
|
log_info "Council force-review: blocked by checklist hard gate"
|
|
17778
17795
|
elif type council_evidence_gate &>/dev/null && ! _evidence_gate_and_surface; then
|
|
17779
17796
|
log_info "Council force-review: blocked by evidence hard gate"
|