loki-mode 9.53.0 → 9.54.2
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/completion-council.sh +28 -5
- package/autonomy/council-v2.sh +13 -7
- package/autonomy/lib/done-recognition.sh +24 -16
- package/autonomy/lib/proof-check.sh +11 -3
- package/autonomy/lib/proof-generator.py +36 -5
- package/autonomy/lib/voter-agents.sh +8 -3
- package/autonomy/lib/workspace_diff.py +106 -12
- package/autonomy/prd-checklist.sh +19 -11
- package/autonomy/run.sh +503 -52
- package/dashboard/__init__.py +1 -1
- package/dashboard/api_v2.py +4 -0
- package/dashboard/audit.py +9 -1
- package/dashboard/auth.py +16 -4
- package/dashboard/registry.py +34 -12
- package/dashboard/rigour_integration.py +25 -17
- package/dashboard/server.py +252 -104
- package/dashboard/static/cost.html +55 -26
- package/dashboard/static/index.html +475 -1544
- package/dashboard/static/proofs.html +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/air-gapped.md +7 -2
- package/docs/image-provenance.md +4 -2
- package/docs/v10/BACKLOG.md +82 -2
- package/docs/v10/BOARD.md +105 -0
- package/docs/v10/DECISIONS.md +71 -0
- package/docs/v10/METRICS.md +2 -1
- package/docs/v10/PROGRESS.md +60 -0
- package/docs/v10/SWARM-PROMPT.md +98 -0
- package/docs/v10/SWARM.md +237 -0
- package/loki-ts/dist/loki.js +323 -322
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/providers/aider.sh +8 -0
- package/providers/cline.sh +8 -0
- package/providers/codex.sh +9 -0
- package/providers/opencode.sh +9 -0
- package/web-app/dist/assets/AdminPage-CZrBkzRF.js +32 -0
- package/web-app/dist/assets/Avatar-gQIp6FBI.js +11 -0
- package/web-app/dist/assets/{Badge-BF3mhT57.js → Badge-D2_fBTFY.js} +1 -1
- package/web-app/dist/assets/{Button-BDp9aJ9q.js → Button-D5qDd2ef.js} +1 -1
- package/web-app/dist/assets/CockpitPage-DVMk2RUK.js +47 -0
- package/web-app/dist/assets/ComparePage-NMLyE1xL.js +1 -0
- package/web-app/dist/assets/{ErrorBoundary-ut3wrUmu.js → ErrorBoundary-BRABI-BT.js} +1 -1
- package/web-app/dist/assets/EvidenceReceiptPanel-D2LNKqUx.js +1 -0
- package/web-app/dist/assets/GitHubIssuesPanel-BC5GzKUN.js +7 -0
- package/web-app/dist/assets/{GitHubPRsPanel-DurZgSaj.js → GitHubPRsPanel-BSlmoVTS.js} +3 -3
- package/web-app/dist/assets/HomePage-D_CDMoen.js +12 -0
- package/web-app/dist/assets/{LoginPage-HeRGJeZy.js → LoginPage-BBNA_N9t.js} +1 -1
- package/web-app/dist/assets/{MagicPage-CUKrqsZs.js → MagicPage-CnFRZCMx.js} +1 -1
- package/web-app/dist/assets/MetricsPage-CPfLMRlh.js +6 -0
- package/web-app/dist/assets/{NotFoundPage-BZDZ-B77.js → NotFoundPage-lA0XSGTz.js} +1 -1
- package/web-app/dist/assets/ProjectPage-CNAPbr9z.js +256 -0
- package/web-app/dist/assets/ProjectsPage-CMtm8goN.js +6 -0
- package/web-app/dist/assets/SettingsPage-BhIjVMYE.js +10 -0
- package/web-app/dist/assets/{ShowcasePage-BGS2jTGH.js → ShowcasePage-BndtGeYo.js} +1 -1
- package/web-app/dist/assets/SystemSettingsPage-euXI-KXE.js +1 -0
- package/web-app/dist/assets/TeamsPage-ClUKecun.js +11 -0
- package/web-app/dist/assets/TemplatesPage-BWHWVk0L.js +29 -0
- package/web-app/dist/assets/{TerminalOutput-togzv9Zl.js → TerminalOutput-Cv3N3Szf.js} +1 -1
- package/web-app/dist/assets/{activity-Dreyb_Kr.js → activity-dEhz-bXR.js} +1 -1
- package/web-app/dist/assets/{bell-DWH0drES.js → bell-B3XUMq1t.js} +1 -1
- package/web-app/dist/assets/{bot-78MoCuDl.js → bot-X-ssNlwR.js} +1 -1
- package/web-app/dist/assets/{check-ikfylPst.js → check-C_9Nx7kb.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DXUqkd8J.js → chevron-left-tvNswo3A.js} +1 -1
- package/web-app/dist/assets/{circle-alert-Da74VO8P.js → circle-alert-CSB88nEs.js} +1 -1
- package/web-app/dist/assets/{clock-mlGCFq8l.js → clock-C8p2e4NI.js} +1 -1
- package/web-app/dist/assets/{cloud-B_Y5ZrIO.js → cloud-CKp2ZvhG.js} +1 -1
- package/web-app/dist/assets/{code-xml-Bbom7YWV.js → code-xml-dY70LCHD.js} +1 -1
- package/web-app/dist/assets/{database-CLcofiVp.js → database-DObn5fmn.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-C5mkjXIM.js → dollar-sign-DSu6n3K3.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-CVrkaOQP.js → file-code-corner-DpCnS73z.js} +1 -1
- package/web-app/dist/assets/{file-plus-BV9240gX.js → file-plus-D3IPKCf1.js} +1 -1
- package/web-app/dist/assets/{globe-aZ0Zso4I.js → globe-C9QXkgH_.js} +1 -1
- package/web-app/dist/assets/{hammer-EgOQNukG.js → hammer-D_FtWe1y.js} +1 -1
- package/web-app/dist/assets/index-CI54rara.css +1 -0
- package/web-app/dist/assets/{index-DvZ0Kk2x.js → index-Cz7q1bvC.js} +2 -2
- package/web-app/dist/assets/{layers-BOVKmepE.js → layers-DsW7jnJX.js} +1 -1
- package/web-app/dist/assets/{loader-circle-0K8yLgHl.js → loader-circle-B3HspjKR.js} +1 -1
- package/web-app/dist/assets/{lock-XzlDMy8M.js → lock-DSI29pct.js} +1 -1
- package/web-app/dist/assets/{package-BtXTKusI.js → package-CLNxtA2x.js} +1 -1
- package/web-app/dist/assets/{plus-PxeiD8ju.js → plus-DyI4WC4_.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-CjqzYczt.js → refresh-cw-D2dv0xA0.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-CY0os4DH.js → rotate-ccw-CBvihA-a.js} +1 -1
- package/web-app/dist/assets/scroll-text-DvoOvAl_.js +6 -0
- package/web-app/dist/assets/{server-pIIs9vNp.js → server-DenWvSUt.js} +1 -1
- package/web-app/dist/assets/{shield-alert-CsDqKXwA.js → shield-alert-40cX_FvG.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-CAh3HVzH.js → thumbs-up-BrjZ6QuV.js} +12 -7
- package/web-app/dist/assets/trash-2-C6evwkEH.js +16 -0
- package/web-app/dist/assets/{trending-down-DrtBd_C9.js → trending-down-CfbZis3O.js} +1 -1
- package/web-app/dist/assets/{trending-up-D-DbCHXm.js → trending-up-DWuEK3WC.js} +1 -1
- package/web-app/dist/assets/{upload-D4l6DCOt.js → upload-B9DFBcPG.js} +1 -1
- package/web-app/dist/assets/{usePolling-D0aoTX80.js → usePolling-BryVC-T1.js} +1 -1
- package/web-app/dist/assets/{user-BQf_XJO_.js → user-DMRXwZiw.js} +1 -1
- package/web-app/dist/index.html +2 -2
- package/web-app/server.py +122 -47
- package/web-app/dist/assets/AdminPage-y6_b2Xo4.js +0 -32
- package/web-app/dist/assets/Avatar-BFPkXhIJ.js +0 -6
- package/web-app/dist/assets/CockpitPage-5TKICCoA.js +0 -47
- package/web-app/dist/assets/ComparePage-BSuNsUHy.js +0 -1
- package/web-app/dist/assets/EvidenceReceiptPanel-CcaBwEI-.js +0 -1
- package/web-app/dist/assets/GitHubIssuesPanel-DJeYgzAa.js +0 -12
- package/web-app/dist/assets/HomePage-Bs451LAy.js +0 -28
- package/web-app/dist/assets/MetricsPage-DvY1csgz.js +0 -6
- package/web-app/dist/assets/ProjectPage-CqHkEZkl.js +0 -257
- package/web-app/dist/assets/ProjectsPage-CLvCK1Y8.js +0 -6
- package/web-app/dist/assets/SettingsPage-DP7OmdwP.js +0 -10
- package/web-app/dist/assets/SystemSettingsPage-P_rlLh0x.js +0 -1
- package/web-app/dist/assets/TeamsPage-DxtBDcBC.js +0 -11
- package/web-app/dist/assets/TemplatesPage-5e-faH3W.js +0 -29
- package/web-app/dist/assets/folder-open-D_6yV78G.js +0 -11
- package/web-app/dist/assets/index-BSgmPwC0.css +0 -1
- package/web-app/dist/assets/lightbulb-DdASgqOG.js +0 -6
- package/web-app/dist/assets/mail-COu670_W.js +0 -6
- package/web-app/dist/assets/minus-bQpUt9ff.js +0 -6
- package/web-app/dist/assets/save-v8qep5cY.js +0 -6
- package/web-app/dist/assets/trash-2-Dt6urTyY.js +0 -6
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
# LOKI_CHECKLIST_TIMEOUT - Timeout per check in seconds (default: 30)
|
|
19
19
|
# LOKI_CHECKLIST_ENABLED - Enable/disable checklist (default: true)
|
|
20
20
|
#
|
|
21
|
+
# Inline Python (D7): verification runs with the cwd inside the agent's repo,
|
|
22
|
+
# so every python3 here runs -E (an empty PYTHONPATH component would load a
|
|
23
|
+
# committed sitecustomize.py) and every -c / - body drops '' and '.' from
|
|
24
|
+
# sys.path before any other import (a committed json.py would print the
|
|
25
|
+
# verdict). Pinned by tests/moat/p2-honest-verdict.sh
|
|
26
|
+
# P2.checklist-verify-not-shadowed.
|
|
27
|
+
#
|
|
21
28
|
# Data:
|
|
22
29
|
# .loki/checklist/checklist.json - Full checklist with verification
|
|
23
30
|
# .loki/checklist/verification-results.json - Summary of last verification
|
|
@@ -198,7 +205,8 @@ checklist_oracle_triangulate() {
|
|
|
198
205
|
_ORACLE_OUT="$findings_file" \
|
|
199
206
|
_ORACLE_PROJECT="$project_dir" \
|
|
200
207
|
_ORACLE_INSTALL_DIR="$oracle_install_dir" \
|
|
201
|
-
python3 - > "$status_file" 2>/dev/null <<'ORACLE_PY'
|
|
208
|
+
python3 -E - > "$status_file" 2>/dev/null <<'ORACLE_PY'
|
|
209
|
+
import sys; sys.path[:] = [p for p in sys.path if p not in ("", ".")]
|
|
202
210
|
import json, os, re, sys, tempfile, glob
|
|
203
211
|
|
|
204
212
|
spec_path = os.environ["_ORACLE_SPEC"]
|
|
@@ -693,7 +701,7 @@ checklist_oracle_evidence() {
|
|
|
693
701
|
if [ ! -f "$findings_file" ]; then
|
|
694
702
|
return 0
|
|
695
703
|
fi
|
|
696
|
-
_ORACLE_OUT="$findings_file" python3 -c '
|
|
704
|
+
_ORACLE_OUT="$findings_file" python3 -E -c 'import sys; sys.path[:] = [p for p in sys.path if p not in ("", ".")]
|
|
697
705
|
import json, os
|
|
698
706
|
try:
|
|
699
707
|
with open(os.environ["_ORACLE_OUT"]) as f:
|
|
@@ -797,7 +805,7 @@ checklist_select_heldout() {
|
|
|
797
805
|
# items the build loop already saw in earlier prompts (the hidden-from-loop
|
|
798
806
|
# guarantee is best-effort once the checklist ids change mid-run).
|
|
799
807
|
local status_token
|
|
800
|
-
status_token=$(_CHECKLIST_FILE="$CHECKLIST_FILE" _HELDOUT_FILE="$heldout_file" python3 -c "
|
|
808
|
+
status_token=$(_CHECKLIST_FILE="$CHECKLIST_FILE" _HELDOUT_FILE="$heldout_file" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
801
809
|
import json, os, sys, hashlib, tempfile
|
|
802
810
|
|
|
803
811
|
cl_path = os.environ['_CHECKLIST_FILE']
|
|
@@ -945,7 +953,7 @@ checklist_heldout_ids() {
|
|
|
945
953
|
if [ ! -f "$heldout_file" ]; then
|
|
946
954
|
return 0
|
|
947
955
|
fi
|
|
948
|
-
_HELDOUT_FILE="$heldout_file" python3 -c "
|
|
956
|
+
_HELDOUT_FILE="$heldout_file" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
949
957
|
import json, os
|
|
950
958
|
try:
|
|
951
959
|
with open(os.environ['_HELDOUT_FILE']) as f:
|
|
@@ -991,7 +999,7 @@ checklist_verify() {
|
|
|
991
999
|
|
|
992
1000
|
log_step "Running PRD checklist verification..."
|
|
993
1001
|
|
|
994
|
-
python3 "$verify_script" \
|
|
1002
|
+
python3 -E "$verify_script" \
|
|
995
1003
|
--checklist "$CHECKLIST_FILE" \
|
|
996
1004
|
--timeout "$CHECKLIST_TIMEOUT" 2>/dev/null || true
|
|
997
1005
|
|
|
@@ -1023,7 +1031,7 @@ checklist_summary() {
|
|
|
1023
1031
|
_CHECKLIST_RESULTS="$CHECKLIST_RESULTS_FILE" \
|
|
1024
1032
|
_CHECKLIST_WAIVERS="${CHECKLIST_DIR:-".loki/checklist"}/waivers.json" \
|
|
1025
1033
|
_CHECKLIST_HELDOUT="${CHECKLIST_DIR:-".loki/checklist"}/held-out.json" \
|
|
1026
|
-
python3 -c "
|
|
1034
|
+
python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
1027
1035
|
import json, sys, os
|
|
1028
1036
|
try:
|
|
1029
1037
|
fpath = os.environ.get('_CHECKLIST_RESULTS', '')
|
|
@@ -1126,7 +1134,7 @@ checklist_as_evidence() {
|
|
|
1126
1134
|
echo "## PRD Checklist Verification"
|
|
1127
1135
|
echo ""
|
|
1128
1136
|
|
|
1129
|
-
_CHECKLIST_RESULTS="$CHECKLIST_RESULTS_FILE" python3 -c "
|
|
1137
|
+
_CHECKLIST_RESULTS="$CHECKLIST_RESULTS_FILE" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
1130
1138
|
import json, os
|
|
1131
1139
|
try:
|
|
1132
1140
|
data = json.load(open(os.environ['_CHECKLIST_RESULTS']))
|
|
@@ -1162,7 +1170,7 @@ checklist_waiver_load() {
|
|
|
1162
1170
|
if [ ! -f "$waivers_file" ]; then
|
|
1163
1171
|
return 0
|
|
1164
1172
|
fi
|
|
1165
|
-
_WAIVERS_FILE="$waivers_file" python3 -c "
|
|
1173
|
+
_WAIVERS_FILE="$waivers_file" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
1166
1174
|
import json, sys, os
|
|
1167
1175
|
try:
|
|
1168
1176
|
waivers_file = os.environ['_WAIVERS_FILE']
|
|
@@ -1186,7 +1194,7 @@ checklist_waiver_add() {
|
|
|
1186
1194
|
local timestamp
|
|
1187
1195
|
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
1188
1196
|
|
|
1189
|
-
_WAIVERS_FILE="$waivers_file" python3 -c "
|
|
1197
|
+
_WAIVERS_FILE="$waivers_file" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
1190
1198
|
import json, os, sys
|
|
1191
1199
|
|
|
1192
1200
|
waivers_file = os.environ['_WAIVERS_FILE']
|
|
@@ -1239,7 +1247,7 @@ checklist_waiver_remove() {
|
|
|
1239
1247
|
return 1
|
|
1240
1248
|
fi
|
|
1241
1249
|
|
|
1242
|
-
_WAIVERS_FILE="$waivers_file" python3 -c "
|
|
1250
|
+
_WAIVERS_FILE="$waivers_file" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
1243
1251
|
import json, os, sys
|
|
1244
1252
|
|
|
1245
1253
|
waivers_file = os.environ['_WAIVERS_FILE']
|
|
@@ -1275,7 +1283,7 @@ checklist_waiver_list() {
|
|
|
1275
1283
|
return 0
|
|
1276
1284
|
fi
|
|
1277
1285
|
|
|
1278
|
-
_WAIVERS_FILE="$waivers_file" python3 -c "
|
|
1286
|
+
_WAIVERS_FILE="$waivers_file" python3 -E -c "import sys; sys.path[:] = [p for p in sys.path if p not in ('', '.')]
|
|
1279
1287
|
import json, os
|
|
1280
1288
|
waivers_file = os.environ['_WAIVERS_FILE']
|
|
1281
1289
|
with open(waivers_file) as f:
|