loki-mode 7.4.14 → 7.4.15
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/loki +38 -22
- package/dashboard/__init__.py +1 -1
- package/docs/INSTALLATION.md +2 -2
- package/loki-ts/dist/loki.js +2 -2
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: Multi-agent autonomous startup system. Triggers on "Loki Mode". Takes PRD to deployed product with minimal human intervention. Requires --dangerously-skip-permissions flag.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v7.4.
|
|
6
|
+
# Loki Mode v7.4.15
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
@@ -322,4 +322,4 @@ The following features are documented in skill modules but not yet fully automat
|
|
|
322
322
|
| Quality gates 3-reviewer system | Implemented (v5.35.0) | 5 specialist reviewers in `skills/quality-gates.md`; execution in run.sh |
|
|
323
323
|
| Benchmarks (HumanEval, SWE-bench) | Infrastructure only | Runner scripts and datasets exist in `benchmarks/`; no published results |
|
|
324
324
|
|
|
325
|
-
**v7.4.
|
|
325
|
+
**v7.4.15 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
7.4.
|
|
1
|
+
7.4.15
|
package/autonomy/loki
CHANGED
|
@@ -6296,34 +6296,42 @@ EOF
|
|
|
6296
6296
|
esac
|
|
6297
6297
|
done
|
|
6298
6298
|
|
|
6299
|
-
# Detect current install path
|
|
6300
|
-
|
|
6301
|
-
|
|
6302
|
-
|
|
6303
|
-
|
|
6304
|
-
|
|
6305
|
-
|
|
6306
|
-
# Follow symlinks to find the real binary location
|
|
6307
|
-
local resolved_real
|
|
6299
|
+
# Detect current install path. v7.4.15 fix: use BASH_SOURCE (the
|
|
6300
|
+
# running script's own path) instead of `command -v loki`. The latter
|
|
6301
|
+
# depended on the caller's PATH, which fails when the user invokes
|
|
6302
|
+
# loki via absolute path or a symlink directory that isn't on PATH.
|
|
6303
|
+
# BASH_SOURCE always resolves to the actual installed location.
|
|
6304
|
+
local current_mgr=""
|
|
6305
|
+
local script_real pkg_dir
|
|
6308
6306
|
if command -v realpath >/dev/null 2>&1; then
|
|
6309
|
-
|
|
6307
|
+
script_real=$(realpath "${BASH_SOURCE[0]}" 2>/dev/null || echo "${BASH_SOURCE[0]}")
|
|
6310
6308
|
else
|
|
6311
|
-
|
|
6309
|
+
script_real="${BASH_SOURCE[0]}"
|
|
6312
6310
|
fi
|
|
6311
|
+
# autonomy/loki sits at <pkg_dir>/autonomy/loki -- walk two up to get pkg_dir.
|
|
6312
|
+
pkg_dir=$(dirname "$(dirname "$script_real")")
|
|
6313
|
+
|
|
6314
|
+
# Also resolve the public binary path (what the user types). We try
|
|
6315
|
+
# `command -v loki` but tolerate failure -- $pkg_dir is sufficient.
|
|
6316
|
+
local resolved=""
|
|
6317
|
+
resolved=$(command -v loki 2>/dev/null || echo "${BASH_SOURCE[0]}")
|
|
6313
6318
|
|
|
6314
|
-
case "$
|
|
6315
|
-
*/.bun/
|
|
6319
|
+
case "$pkg_dir" in
|
|
6320
|
+
*/.bun/install/global/*|*/.bun/*)
|
|
6316
6321
|
current_mgr="bun"
|
|
6317
6322
|
;;
|
|
6318
|
-
*/Cellar/*|*/homebrew/Cellar/*|*/linuxbrew/Cellar/*)
|
|
6323
|
+
*/Cellar/loki-mode/*|*/homebrew/Cellar/loki-mode/*|*/linuxbrew/Cellar/loki-mode/*)
|
|
6319
6324
|
current_mgr="brew"
|
|
6320
6325
|
;;
|
|
6326
|
+
*/node_modules/loki-mode*|*/lib/node_modules/loki-mode*)
|
|
6327
|
+
current_mgr="npm"
|
|
6328
|
+
;;
|
|
6321
6329
|
*)
|
|
6322
|
-
#
|
|
6330
|
+
# Last resort: ask npm if it knows about a global loki-mode
|
|
6323
6331
|
if command -v npm >/dev/null 2>&1; then
|
|
6324
|
-
local
|
|
6325
|
-
|
|
6326
|
-
if [ -n "$
|
|
6332
|
+
local npm_root
|
|
6333
|
+
npm_root=$(npm root -g 2>/dev/null || true)
|
|
6334
|
+
if [ -n "$npm_root" ] && [[ "$pkg_dir" == "$npm_root"/* ]]; then
|
|
6327
6335
|
current_mgr="npm"
|
|
6328
6336
|
fi
|
|
6329
6337
|
fi
|
|
@@ -6334,7 +6342,7 @@ EOF
|
|
|
6334
6342
|
|
|
6335
6343
|
if [ "$check_only" = "true" ]; then
|
|
6336
6344
|
echo "loki binary: $resolved"
|
|
6337
|
-
echo "
|
|
6345
|
+
echo "package dir: $pkg_dir"
|
|
6338
6346
|
echo "current mgr: $current_mgr"
|
|
6339
6347
|
return 0
|
|
6340
6348
|
fi
|
|
@@ -6343,7 +6351,7 @@ EOF
|
|
|
6343
6351
|
[ -z "$target_manager" ] && target_manager="$current_mgr"
|
|
6344
6352
|
|
|
6345
6353
|
echo -e "${BOLD}loki self-update${NC}"
|
|
6346
|
-
echo " current: $current_mgr ($
|
|
6354
|
+
echo " current: $current_mgr ($pkg_dir)"
|
|
6347
6355
|
echo " target: $target_manager"
|
|
6348
6356
|
echo
|
|
6349
6357
|
|
|
@@ -6363,8 +6371,16 @@ EOF
|
|
|
6363
6371
|
brew upgrade loki-mode
|
|
6364
6372
|
;;
|
|
6365
6373
|
unknown)
|
|
6366
|
-
echo -e "${
|
|
6367
|
-
|
|
6374
|
+
echo -e "${YELLOW}Cannot auto-detect package manager from: $pkg_dir${NC}" >&2
|
|
6375
|
+
if [ -d "$pkg_dir/.git" ]; then
|
|
6376
|
+
echo "This looks like a git clone. To upgrade:" >&2
|
|
6377
|
+
echo " cd $pkg_dir && git pull && (cd loki-ts && bun install && bun run build)" >&2
|
|
6378
|
+
else
|
|
6379
|
+
echo "Specify the target manager explicitly:" >&2
|
|
6380
|
+
echo " loki self-update --to bun" >&2
|
|
6381
|
+
echo " loki self-update --to npm" >&2
|
|
6382
|
+
echo " loki self-update --to brew" >&2
|
|
6383
|
+
fi
|
|
6368
6384
|
return 1
|
|
6369
6385
|
;;
|
|
6370
6386
|
esac
|
package/dashboard/__init__.py
CHANGED
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The flagship product of [Autonomi](https://www.autonomi.dev/). Complete installation instructions for all platforms and use cases.
|
|
4
4
|
|
|
5
|
-
**Version:** v7.4.
|
|
5
|
+
**Version:** v7.4.15
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -94,7 +94,7 @@ loki setup-skill
|
|
|
94
94
|
## PyPI / Python SDK
|
|
95
95
|
|
|
96
96
|
**The `loki` CLI is NOT available via `pip install loki-mode`.** PyPI hosts only the
|
|
97
|
-
Python REST client SDK at `loki-mode-sdk` (v7.4.
|
|
97
|
+
Python REST client SDK at `loki-mode-sdk` (v7.4.15+). The dashboard, MCP server,
|
|
98
98
|
and orchestrator components ship via npm, Docker, and Homebrew only.
|
|
99
99
|
|
|
100
100
|
```bash
|
package/loki-ts/dist/loki.js
CHANGED
|
@@ -263,7 +263,7 @@ Start a session with: loki start <prd>`}}let Z=m0(X);return{exitCode:0,stdout:Q?
|
|
|
263
263
|
`),0}async function $3(z){let Q=!1;for(let $ of z)if($==="--json")Q=!0;else if($==="--help"||$==="-h")return e0(),0;else return process.stderr.write(`${S}Unknown option: ${$}${K}
|
|
264
264
|
`),process.stderr.write(`Usage: loki doctor [--json]
|
|
265
265
|
`),1;if(Q){let $=await i1();return process.stdout.write(JSON.stringify($,null,2)+`
|
|
266
|
-
`),0}return z3()}var r0,s0,i0;var z0=g(()=>{m();Q1();p();r0=/(\d+\.\d+(?:\.\d+)*)/;s0=[{name:"Claude Code",dir:".claude/skills/loki-mode"},{name:"Codex CLI",dir:".codex/skills/loki-mode"},{name:"Gemini CLI",dir:".gemini/skills/loki-mode"},{name:"Cline CLI",dir:".cline/skills/loki-mode"},{name:"Aider CLI",dir:".aider/skills/loki-mode"}];i0=[{displayName:"Node.js (>= 18)",jsonName:"Node.js",cmd:"node",required:"required",min:"18.0"},{displayName:"Python 3 (>= 3.8)",jsonName:"Python 3",cmd:"python3",required:"required",min:"3.8"},{displayName:"jq",jsonName:"jq",cmd:"jq",required:"required"},{displayName:"git",jsonName:"git",cmd:"git",required:"required"},{displayName:"curl",jsonName:"curl",cmd:"curl",required:"required"},{displayName:"bash (>= 4.0)",jsonName:"bash",cmd:"bash",required:"recommended",min:"4.0"},{displayName:"Bun (>= 1.3)",jsonName:"Bun",cmd:"bun",required:"recommended",min:"1.3"},{displayName:"Claude CLI",jsonName:"Claude CLI",cmd:"claude",required:"optional"},{displayName:"Codex CLI",jsonName:"Codex CLI",cmd:"codex",required:"optional"},{displayName:"Gemini CLI",jsonName:"Gemini CLI",cmd:"gemini",required:"optional"},{displayName:"Cline CLI",jsonName:"Cline CLI",cmd:"cline",required:"optional"},{displayName:"Aider CLI",jsonName:"Aider CLI",cmd:"aider",required:"optional"}]});h();import{readFileSync as U0}from"fs";import{resolve as V0,dirname as q0}from"path";import{fileURLToPath as G0}from"url";var v=null;function k1(){if(v!==null)return v;let z="7.4.
|
|
266
|
+
`),0}return z3()}var r0,s0,i0;var z0=g(()=>{m();Q1();p();r0=/(\d+\.\d+(?:\.\d+)*)/;s0=[{name:"Claude Code",dir:".claude/skills/loki-mode"},{name:"Codex CLI",dir:".codex/skills/loki-mode"},{name:"Gemini CLI",dir:".gemini/skills/loki-mode"},{name:"Cline CLI",dir:".cline/skills/loki-mode"},{name:"Aider CLI",dir:".aider/skills/loki-mode"}];i0=[{displayName:"Node.js (>= 18)",jsonName:"Node.js",cmd:"node",required:"required",min:"18.0"},{displayName:"Python 3 (>= 3.8)",jsonName:"Python 3",cmd:"python3",required:"required",min:"3.8"},{displayName:"jq",jsonName:"jq",cmd:"jq",required:"required"},{displayName:"git",jsonName:"git",cmd:"git",required:"required"},{displayName:"curl",jsonName:"curl",cmd:"curl",required:"required"},{displayName:"bash (>= 4.0)",jsonName:"bash",cmd:"bash",required:"recommended",min:"4.0"},{displayName:"Bun (>= 1.3)",jsonName:"Bun",cmd:"bun",required:"recommended",min:"1.3"},{displayName:"Claude CLI",jsonName:"Claude CLI",cmd:"claude",required:"optional"},{displayName:"Codex CLI",jsonName:"Codex CLI",cmd:"codex",required:"optional"},{displayName:"Gemini CLI",jsonName:"Gemini CLI",cmd:"gemini",required:"optional"},{displayName:"Cline CLI",jsonName:"Cline CLI",cmd:"cline",required:"optional"},{displayName:"Aider CLI",jsonName:"Aider CLI",cmd:"aider",required:"optional"}]});h();import{readFileSync as U0}from"fs";import{resolve as V0,dirname as q0}from"path";import{fileURLToPath as G0}from"url";var v=null;function k1(){if(v!==null)return v;let z="7.4.15";if(typeof z==="string"&&z.length>0)return v=z,v;try{let Q=q0(G0(import.meta.url)),$=U1(Q);v=U0(V0($,"VERSION"),"utf-8").trim()}catch{v="unknown"}return v}function R1(){return process.stdout.write(`Loki Mode v${k1()}
|
|
267
267
|
`),0}m();p();h();import{readFileSync as A0,existsSync as O0}from"fs";import{resolve as _0}from"path";var T0=["claude","codex","gemini","cline","aider"];function D1(){let z=_0(b(),"state","provider");if(!O0(z))return"";try{return A0(z,"utf-8").trim()}catch{return""}}function I0(z,Q){return z||Q||process.env.LOKI_PROVIDER||"claude"}function w0(z){let Q=D1(),$=I0(z,Q);switch(process.stdout.write(`${x}Current Provider${K}
|
|
268
268
|
`),process.stdout.write(`
|
|
269
269
|
`),process.stdout.write(`${G}Provider:${K} ${$}
|
|
@@ -339,4 +339,4 @@ Set LOKI_LEGACY_BASH=1 to force the bash CLI for every command.
|
|
|
339
339
|
`;async function Q3(z){let Q=z[0],$=z.slice(1);switch(Q){case void 0:case"help":case"--help":case"-h":return process.stdout.write($0),0;case"version":case"--version":case"-v":return R1();case"provider":return E1($);case"memory":return N1($);case"status":{let{runStatus:X}=await Promise.resolve().then(() => (m1(),v1));return X($)}case"stats":{let{runStats:X}=await Promise.resolve().then(() => (d1(),l1));return X($)}case"doctor":{let{runDoctor:X}=await Promise.resolve().then(() => (z0(),e1));return X($)}default:return process.stderr.write(`Unknown command: ${Q}
|
|
340
340
|
`),process.stderr.write($0),2}}process.on("SIGINT",()=>process.exit(130));process.on("SIGTERM",()=>process.exit(143));var X3=await Q3(Bun.argv.slice(2));process.exit(X3);
|
|
341
341
|
|
|
342
|
-
//# debugId=
|
|
342
|
+
//# debugId=DCDC9080F2D734BC64756E2164756E21
|
package/mcp/__init__.py
CHANGED