loki-mode 11.2.1 → 11.3.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/lib/skill-link-heal.sh +78 -1
- package/autonomy/loki +96 -1195
- package/autonomy/provider-offer.sh +4 -4
- package/bin/loki +14 -0
- package/dashboard/__init__.py +1 -1
- package/docs/CLI-REFERENCE.md +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/KNOWN-ISSUES.md +0 -1
- package/docs/v10/ADOPTION-PLAN.md +2 -2
- package/docs/v10/FAILURE-CLASSES.md +21 -0
- package/loki-ts/dist/loki.js +724 -702
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-BZ1QNSju.js → AdminPage-D_e45uTw.js} +1 -1
- package/web-app/dist/assets/{Avatar-Dnzzsk2U.js → Avatar-T3nIpoaf.js} +1 -1
- package/web-app/dist/assets/{Badge-DWtsAw6M.js → Badge-BKqb59pP.js} +1 -1
- package/web-app/dist/assets/{Button-zEMFjJEr.js → Button-DjVlkh8_.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-Ddo5Zhnz.js → CockpitPage-DXJgLGmh.js} +1 -1
- package/web-app/dist/assets/{ComparePage-kCkyRrrz.js → ComparePage-BRP_eVc_.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-BZrVi8Ui.js → ErrorBoundary-CLjpGLjC.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-B9eDIWUr.js → EvidenceReceiptPanel-DX-vb4Xy.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-DX5A2UkV.js → GitHubIssuesPanel-214HVHtX.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-DKKxBe6-.js → GitHubPRsPanel-BEiZKc4t.js} +1 -1
- package/web-app/dist/assets/{HomePage-BSn_-fHq.js → HomePage-VvMHS5ga.js} +2 -2
- package/web-app/dist/assets/{LoginPage-C1BGwj0s.js → LoginPage-5WD-v7n3.js} +1 -1
- package/web-app/dist/assets/{MagicPage-B9JJw_BQ.js → MagicPage-DUQT_Jye.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-B-lNQr8Q.js → MetricsPage-lga-z79v.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-DkktBNvI.js → NotFoundPage-CGhBX3G1.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-DUAraQw9.js → ProjectPage-CdzF2GzZ.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DgMo4QHm.js → ProjectsPage-DRG64N8s.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-fnL3nqGC.js → SettingsPage-5fzW9Frb.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-Bn7rWTXn.js → ShowcasePage-DrTdxO4y.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-DxrytIXT.js → SystemSettingsPage-C9Mqs6Rd.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-BQDC12Mn.js → TeamsPage-CUGPdSWo.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-C_JEygcZ.js → TemplatesPage-CNraDY0F.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-H0584wn0.js → TerminalOutput-BIu_6Pea.js} +1 -1
- package/web-app/dist/assets/{activity-Bse7FP2H.js → activity-Bk-kgqaf.js} +1 -1
- package/web-app/dist/assets/{bell-BMtgCGSW.js → bell-BXmUdmo8.js} +1 -1
- package/web-app/dist/assets/{bot-6SW_XTZN.js → bot-CiuzXxUR.js} +1 -1
- package/web-app/dist/assets/{check-C3f9aTHx.js → check-BEzjXppd.js} +1 -1
- package/web-app/dist/assets/{chevron-left-Bi60XjBc.js → chevron-left-AYWCXHf8.js} +1 -1
- package/web-app/dist/assets/{circle-alert-Bepfb6dn.js → circle-alert-BNg2uSRq.js} +1 -1
- package/web-app/dist/assets/{clock-jQIU5AuJ.js → clock-DTj0kkGT.js} +1 -1
- package/web-app/dist/assets/{cloud-BLZn6J9A.js → cloud-x4nTDBLT.js} +1 -1
- package/web-app/dist/assets/{code-xml-CRgKi92z.js → code-xml-BVh_MLrk.js} +1 -1
- package/web-app/dist/assets/{database-DWg9XT6Y.js → database-DdfBaowG.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-Cfif5nlf.js → dollar-sign-XuYFmAOY.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-DSiLXED8.js → file-code-corner-D4cRnmeL.js} +1 -1
- package/web-app/dist/assets/{file-plus-8lIzYfAS.js → file-plus-CyoVlHc_.js} +1 -1
- package/web-app/dist/assets/{globe-DZkvR077.js → globe-Y6IK2RPW.js} +1 -1
- package/web-app/dist/assets/{hammer-BtQyfpf_.js → hammer-BKzr9VZI.js} +1 -1
- package/web-app/dist/assets/{index-B-uQiPRR.js → index-B20cSx5G.js} +3 -3
- package/web-app/dist/assets/{layers-Dlfo3jwV.js → layers-DebNOhGS.js} +1 -1
- package/web-app/dist/assets/{loader-circle-BQ2hL7m5.js → loader-circle-DyGbrEgd.js} +1 -1
- package/web-app/dist/assets/{lock-LzpJKEAP.js → lock-BKPpyt20.js} +1 -1
- package/web-app/dist/assets/{package-zp-qZxpp.js → package-egF5Wi4y.js} +1 -1
- package/web-app/dist/assets/{plus-CuiDkGsm.js → plus-OiEgKIc-.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-Dx57uk3-.js → refresh-cw-CzKvrONq.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-Bp1YOkM6.js → rotate-ccw-Bu2mII0p.js} +1 -1
- package/web-app/dist/assets/{scroll-text-Dc8LjRT5.js → scroll-text-CSkiyax8.js} +1 -1
- package/web-app/dist/assets/{server-CE0Mzyfz.js → server-DlPthJFw.js} +1 -1
- package/web-app/dist/assets/{shield-alert-DBj71EDP.js → shield-alert-CbpHWQQX.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-C0q9J-0y.js → thumbs-up-DgGpZe-Q.js} +1 -1
- package/web-app/dist/assets/{trash-2-YNPSnz_h.js → trash-2-BV3GlCB-.js} +1 -1
- package/web-app/dist/assets/{trending-down-BlyQB_Gh.js → trending-down-Y4TJtXhD.js} +1 -1
- package/web-app/dist/assets/{trending-up-CStScgAm.js → trending-up-DsDNoHZY.js} +1 -1
- package/web-app/dist/assets/{upload-CLs-rKu9.js → upload-gkThrc_I.js} +1 -1
- package/web-app/dist/assets/{usePolling-BmFkptqQ.js → usePolling-jpNSeNAe.js} +1 -1
- package/web-app/dist/assets/{user-CV0TBz6A.js → user-3Zez1WOK.js} +1 -1
- package/web-app/dist/index.html +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: An autonomous software factory that knows what it is supposed to deliver, and proves it did. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v11.
|
|
6
|
+
# Loki Mode v11.3.0
|
|
7
7
|
|
|
8
8
|
**Current entry points (Loki 10 engine):** `loki "<task>"`, `loki owner/repo#N` and `loki quick "<task>"` run the Loki 10 engine and end with a signed receipt (`loki verify`). `loki backlog owner/repo --all` runs many issues in parallel. Guide: `docs/v10/GUIDE.md`. The skill instructions below, and `loki start`, describe the legacy engine, which still ships and is being removed (`loki start owner/repo#N` still routes to it; prefer `loki owner/repo#N`).
|
|
9
9
|
|
|
@@ -483,4 +483,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
483
483
|
|
|
484
484
|
---
|
|
485
485
|
|
|
486
|
-
**v11.
|
|
486
|
+
**v11.3.0 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
11.
|
|
1
|
+
11.3.0
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
# - its target is missing, or resolves to a different install than the running one
|
|
14
14
|
# - the running root is itself an install path with a SKILL.md, so a dev checkout
|
|
15
15
|
# or worktree never hijacks the user's global link
|
|
16
|
+
# - the running install is durable (npm global root, bun global dir, Homebrew
|
|
17
|
+
# prefix); an npx cache, temp dir or arbitrary prefix is refused with one
|
|
18
|
+
# stderr line and the link is left untouched
|
|
16
19
|
|
|
17
20
|
_loki_skill_is_install_path() {
|
|
18
21
|
case "${1%/}" in
|
|
@@ -21,9 +24,75 @@ _loki_skill_is_install_path() {
|
|
|
21
24
|
return 1
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
# Durable-install rule (FC-30 amendment). A repoint writes a user-owned path, so
|
|
28
|
+
# the running install must outlive this process: a one-off `npx loki-mode` run or
|
|
29
|
+
# a scratch prefix would turn the link into a new dangling link. Durable means
|
|
30
|
+
# the running root sits under the npm global root (`npm root -g`), the bun global
|
|
31
|
+
# dir, or a Homebrew prefix. Prints a reason and returns 1 when it is not.
|
|
32
|
+
_loki_skill_dir_p() { (cd "$1" 2>/dev/null && pwd -P); }
|
|
33
|
+
|
|
34
|
+
# `npm root -g` bounded to 3s so a hung npm can never hang bin/loki. Output goes
|
|
35
|
+
# to a file (not a pipe) so an orphaned grandchild cannot hold the caller open.
|
|
36
|
+
# Returns 124 on timeout (callers fail closed), otherwise npm's own status.
|
|
37
|
+
_loki_skill_npm_root() {
|
|
38
|
+
local out pid i=0 rc
|
|
39
|
+
out="$(mktemp "${TMPDIR:-/tmp}/loki-npmroot.XXXXXX")" || return 1
|
|
40
|
+
npm root -g >"$out" 2>/dev/null </dev/null &
|
|
41
|
+
pid=$!
|
|
42
|
+
while kill -0 "$pid" 2>/dev/null; do
|
|
43
|
+
if [ "$i" -ge 30 ]; then
|
|
44
|
+
kill "$pid" 2>/dev/null
|
|
45
|
+
rm -f "$out"
|
|
46
|
+
return 124
|
|
47
|
+
fi
|
|
48
|
+
sleep 0.1
|
|
49
|
+
i=$((i + 1))
|
|
50
|
+
done
|
|
51
|
+
wait "$pid"; rc=$?
|
|
52
|
+
[ "$rc" -eq 0 ] && head -n 1 "$out"
|
|
53
|
+
rm -f "$out"
|
|
54
|
+
return "$rc"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_loki_skill_root_durable() {
|
|
58
|
+
local root_p="$1" cand cands="" npmroot prefix rc
|
|
59
|
+
case "$root_p" in
|
|
60
|
+
*/_npx/*) printf 'running from an npx cache (%s)' "$root_p"; return 1 ;;
|
|
61
|
+
esac
|
|
62
|
+
npmroot="$(_loki_skill_npm_root)"; rc=$?
|
|
63
|
+
if [ "$rc" -eq 124 ]; then
|
|
64
|
+
printf 'npm root -g timed out (running install %s not verified durable)' "$root_p"
|
|
65
|
+
return 1
|
|
66
|
+
fi
|
|
67
|
+
[ "$rc" -eq 0 ] || npmroot=""
|
|
68
|
+
[ -n "$npmroot" ] && cands="$cands
|
|
69
|
+
$npmroot"
|
|
70
|
+
[ -n "${NPM_CONFIG_PREFIX:-}" ] && cands="$cands
|
|
71
|
+
${NPM_CONFIG_PREFIX}/lib/node_modules"
|
|
72
|
+
cands="$cands
|
|
73
|
+
${BUN_INSTALL:-${HOME:-}/.bun}/install/global/node_modules"
|
|
74
|
+
for prefix in "${HOMEBREW_PREFIX:-}" /opt/homebrew /usr/local /home/linuxbrew/.linuxbrew; do
|
|
75
|
+
[ -n "$prefix" ] || continue
|
|
76
|
+
cands="$cands
|
|
77
|
+
$prefix/Cellar/loki-mode
|
|
78
|
+
$prefix/opt/loki-mode
|
|
79
|
+
$prefix/lib/node_modules"
|
|
80
|
+
done
|
|
81
|
+
while IFS= read -r cand; do
|
|
82
|
+
[ -n "$cand" ] || continue
|
|
83
|
+
cand="$(_loki_skill_dir_p "$cand")" || continue
|
|
84
|
+
[ "$root_p" = "$cand" ] && return 0
|
|
85
|
+
case "$root_p" in "$cand"/*) return 0 ;; esac
|
|
86
|
+
done <<EOT
|
|
87
|
+
$cands
|
|
88
|
+
EOT
|
|
89
|
+
printf 'running install %s is not a durable global install (npm global, bun global or Homebrew)' "$root_p"
|
|
90
|
+
return 1
|
|
91
|
+
}
|
|
92
|
+
|
|
24
93
|
loki_skill_link_heal() {
|
|
25
94
|
[ "${LOKI_NO_SKILL_LINK_HEAL:-}" = "1" ] && return 0
|
|
26
|
-
local root="${1:-}" home="${HOME:-}" root_p rel link tgt live_p tmp
|
|
95
|
+
local root="${1:-}" home="${HOME:-}" root_p rel link tgt live_p tmp durable="" why
|
|
27
96
|
[ -n "$root" ] && [ -n "$home" ] || return 0
|
|
28
97
|
[ -f "$root/SKILL.md" ] || return 0
|
|
29
98
|
root_p="$(cd "$root" 2>/dev/null && pwd -P)" || return 0
|
|
@@ -39,6 +108,14 @@ loki_skill_link_heal() {
|
|
|
39
108
|
live_p="$(cd "$link" 2>/dev/null && pwd -P)" || live_p=""
|
|
40
109
|
[ "$live_p" = "$root_p" ] && continue
|
|
41
110
|
fi
|
|
111
|
+
if [ -z "$durable" ]; then
|
|
112
|
+
if why="$(_loki_skill_root_durable "$root_p")"; then
|
|
113
|
+
durable=yes
|
|
114
|
+
else
|
|
115
|
+
printf 'loki: not repointing skill links: %s\n' "$why" >&2
|
|
116
|
+
return 0
|
|
117
|
+
fi
|
|
118
|
+
fi
|
|
42
119
|
tmp="${link}.heal.$$"
|
|
43
120
|
rm -f "$tmp" 2>/dev/null
|
|
44
121
|
ln -s "$root_p" "$tmp" 2>/dev/null || continue
|