loki-mode 7.4.14 → 7.4.16

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 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.14
6
+ # Loki Mode v7.4.16
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.14 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
325
+ **v7.4.16 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 7.4.14
1
+ 7.4.16
package/autonomy/loki CHANGED
@@ -6296,34 +6296,42 @@ EOF
6296
6296
  esac
6297
6297
  done
6298
6298
 
6299
- # Detect current install path
6300
- local resolved current_mgr=""
6301
- if ! resolved=$(command -v loki 2>/dev/null); then
6302
- echo -e "${RED}loki is not on PATH. Cannot self-update.${NC}" >&2
6303
- return 1
6304
- fi
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
- resolved_real=$(realpath "$resolved" 2>/dev/null || echo "$resolved")
6307
+ script_real=$(realpath "${BASH_SOURCE[0]}" 2>/dev/null || echo "${BASH_SOURCE[0]}")
6310
6308
  else
6311
- resolved_real="$resolved"
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 "$resolved_real" in
6315
- */.bun/bin/*|*/.bun/install/global/*)
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
- # Try matching against npm global prefix
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 npm_prefix
6325
- npm_prefix=$(npm prefix -g 2>/dev/null || true)
6326
- if [ -n "$npm_prefix" ] && [[ "$resolved_real" == "$npm_prefix"/* ]]; then
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 "resolved path: $resolved_real"
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 ($resolved_real)"
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 "${RED}Cannot detect package manager from path: $resolved_real${NC}" >&2
6367
- echo "Run 'loki self-update --to bun' (or npm/brew) to install fresh via that manager." >&2
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/autonomy/run.sh CHANGED
@@ -3049,7 +3049,16 @@ init_loki_dir() {
3049
3049
  fi
3050
3050
  fi
3051
3051
  if [ "$can_cleanup" = "true" ]; then
3052
+ # v7.4.16: extended stale-signal cleanup. Pre-v7.4.16 only
3053
+ # PAUSE / STOP / HUMAN_INPUT.md were cleaned -- but
3054
+ # PAUSE_AT_CHECKPOINT, PAUSED.md, and COMPLETED were added
3055
+ # to the signal-file family later without updating this
3056
+ # cleanup. A stale PAUSE_AT_CHECKPOINT from a prior session
3057
+ # (created by Ctrl+C in checkpoint mode) caused fresh
3058
+ # `loki start` to pause immediately when PRD-driven mode
3059
+ # auto-switched to checkpoint. User-reported regression.
3052
3060
  rm -f .loki/PAUSE .loki/STOP .loki/HUMAN_INPUT.md 2>/dev/null
3061
+ rm -f .loki/PAUSE_AT_CHECKPOINT .loki/PAUSED.md .loki/COMPLETED 2>/dev/null
3053
3062
  rm -f .loki/loki.pid 2>/dev/null
3054
3063
  rm -f .loki/session.lock 2>/dev/null
3055
3064
  fi
@@ -7,7 +7,7 @@ Modules:
7
7
  control: Session control API (start/stop/pause/resume)
8
8
  """
9
9
 
10
- __version__ = "7.4.14"
10
+ __version__ = "7.4.16"
11
11
 
12
12
  # Expose the control app for easy import
13
13
  try:
@@ -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.14
5
+ **Version:** v7.4.16
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.14+). The dashboard, MCP server,
97
+ Python REST client SDK at `loki-mode-sdk` (v7.4.16+). The dashboard, MCP server,
98
98
  and orchestrator components ship via npm, Docker, and Homebrew only.
99
99
 
100
100
  ```bash
@@ -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.14";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()}
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.16";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=CE61E1449AF2B79464756E2164756E21
342
+ //# debugId=F96EBBA4ECC9E88C64756E2164756E21
package/mcp/__init__.py CHANGED
@@ -57,4 +57,4 @@ try:
57
57
  except ImportError:
58
58
  __all__ = ['mcp']
59
59
 
60
- __version__ = '7.4.14'
60
+ __version__ = '7.4.16'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loki-mode",
3
- "version": "7.4.14",
3
+ "version": "7.4.16",
4
4
  "description": "Loki Mode by Autonomi - Multi-agent autonomous startup system for Claude Code, Codex CLI, and Gemini CLI",
5
5
  "keywords": [
6
6
  "agent",