loki-mode 7.4.11 → 7.4.13

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.11
6
+ # Loki Mode v7.4.13
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.11 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
325
+ **v7.4.13 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 7.4.11
1
+ 7.4.13
package/autonomy/loki CHANGED
@@ -6513,11 +6513,15 @@ cmd_doctor() {
6513
6513
  # Disk space check
6514
6514
  local disk_avail
6515
6515
  if command -v df &> /dev/null; then
6516
- # Get available space in GB (works on macOS and Linux)
6517
- disk_avail=$(df -g "$HOME" 2>/dev/null | tail -1 | awk '{print $4}')
6516
+ # Get available space in GB (works on macOS and Linux).
6517
+ # v7.4.12: || true on the pipes so set -euo pipefail doesn't exit
6518
+ # the whole doctor when df -g fails on Linux (which doesn't support
6519
+ # the -g flag). Pre-v7.4.12 bash route truncated after the System
6520
+ # section on Linux because of this exact early exit.
6521
+ disk_avail=$(df -g "$HOME" 2>/dev/null | tail -1 | awk '{print $4}' || true)
6518
6522
  if [ -z "$disk_avail" ]; then
6519
6523
  # Linux fallback (df -g may not work)
6520
- disk_avail=$(df -BG "$HOME" 2>/dev/null | tail -1 | awk '{print $4}' | tr -d 'G')
6524
+ disk_avail=$(df -BG "$HOME" 2>/dev/null | tail -1 | awk '{print $4}' | tr -d 'G' || true)
6521
6525
  fi
6522
6526
  if [ -n "$disk_avail" ] && [ "$disk_avail" -gt 0 ] 2>/dev/null; then
6523
6527
  if [ "$disk_avail" -lt 1 ]; then
@@ -11532,6 +11536,9 @@ main() {
11532
11536
  local command="$1"
11533
11537
  shift
11534
11538
 
11539
+ # v7.4.13: first-run telemetry moved to bin/loki shim so it fires for
11540
+ # both Bun-routed and bash-routed commands (autonomy/loki main() never
11541
+ # runs for the 8 ported commands). Marker file: ~/.loki-first-run.
11535
11542
  loki_telemetry "cli_command" "command=$command" 2>/dev/null || true
11536
11543
 
11537
11544
  case "$command" in
package/bin/loki CHANGED
@@ -63,6 +63,22 @@ else
63
63
  exec "$BASH_CLI" "$@"
64
64
  fi
65
65
 
66
+ # v7.4.13: one-shot first-run telemetry, MOVED from autonomy/loki main()
67
+ # into the shim because the 8 ported commands (version, status, doctor,
68
+ # stats, provider, memory) bypass main() entirely -- only unported
69
+ # commands triggered the original hook. Now fires regardless of route.
70
+ # Fire-and-forget; opt-out via LOKI_TELEMETRY_DISABLED=true or
71
+ # DO_NOT_TRACK=1 (mirrors autonomy/telemetry.sh contract).
72
+ if [ -z "${LOKI_TELEMETRY_DISABLED:-}" ] && [ "${DO_NOT_TRACK:-}" != "1" ] && [ ! -f "${HOME}/.loki-first-run" ] 2>/dev/null; then
73
+ touch "${HOME}/.loki-first-run" 2>/dev/null || true
74
+ if command -v curl &>/dev/null && [ -f "$REPO_ROOT/autonomy/telemetry.sh" ]; then
75
+ # Source telemetry helpers + fire installed event in background
76
+ # so the user does not pay latency on first invocation.
77
+ ( SCRIPT_DIR="$REPO_ROOT/autonomy"; source "$SCRIPT_DIR/telemetry.sh" 2>/dev/null && loki_telemetry "installed" "first_command=${1:-}" 2>/dev/null ) &
78
+ disown 2>/dev/null || true
79
+ fi
80
+ fi
81
+
66
82
  # Force-fall-through to bash when the rollback flag is set.
67
83
  if [ "${LOKI_LEGACY_BASH:-0}" = "1" ] || [ "${LOKI_LEGACY_BASH:-}" = "true" ]; then
68
84
  exec "$BASH_CLI" "$@"
package/bin/loki-mode.js CHANGED
@@ -2,16 +2,30 @@
2
2
  /**
3
3
  * Loki Mode npm wrapper.
4
4
  *
5
- * Delegates to bin/loki (the runtime-aware shim) so that ported commands
6
- * route through the Bun runtime when bun is on PATH and unported commands
7
- * fall through to autonomy/loki (bash). Pre-v7.4.7 this script bypassed
8
- * the shim and went straight to bash, which silently disabled the Bun
9
- * route for users invoking the `loki-mode` binary instead of `loki`.
5
+ * Delegates to bin/loki (the runtime-aware shim).
6
+ *
7
+ * v7.4.12: Removed from package.json `bin` map. Existing installs that have
8
+ * `loki-mode` symlinked still work (file is on disk + delegates to `loki`),
9
+ * but new installs only get the `loki` binary. Prints a one-time deprecation
10
+ * banner to stderr so muscle-memory users notice and switch.
10
11
  */
11
12
 
12
13
  const { spawn } = require('child_process');
13
14
  const path = require('path');
14
15
 
16
+ // Deprecation banner. Suppressed when piped (so scripts don't get noise) and
17
+ // when LOKI_NO_BANNER=1 / NO_COLOR is set (already-aware users).
18
+ if (
19
+ process.stderr.isTTY &&
20
+ !process.env.LOKI_NO_BANNER &&
21
+ !process.env.NO_COLOR
22
+ ) {
23
+ process.stderr.write(
24
+ '[loki-mode] DEPRECATED: this binary is being removed in v8.0.0. ' +
25
+ 'Use `loki` instead -- same behaviour, shorter name.\n',
26
+ );
27
+ }
28
+
15
29
  const shim = path.join(__dirname, 'loki');
16
30
  const args = process.argv.slice(2);
17
31
 
@@ -7,7 +7,7 @@ Modules:
7
7
  control: Session control API (start/stop/pause/resume)
8
8
  """
9
9
 
10
- __version__ = "7.4.11"
10
+ __version__ = "7.4.13"
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.11
5
+ **Version:** v7.4.13
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.11+). The dashboard, MCP server,
97
+ Python REST client SDK at `loki-mode-sdk` (v7.4.13+). 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.11";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.13";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=7F37DBACA1D90C8A64756E2164756E21
342
+ //# debugId=E92046955FFB0DF464756E2164756E21
package/mcp/__init__.py CHANGED
@@ -57,4 +57,4 @@ try:
57
57
  except ImportError:
58
58
  __all__ = ['mcp']
59
59
 
60
- __version__ = '7.4.11'
60
+ __version__ = '7.4.13'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loki-mode",
3
- "version": "7.4.11",
3
+ "version": "7.4.13",
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",
@@ -59,8 +59,7 @@
59
59
  "license": "BUSL-1.1",
60
60
  "author": "Lokesh",
61
61
  "bin": {
62
- "loki": "bin/loki",
63
- "loki-mode": "bin/loki-mode.js"
62
+ "loki": "bin/loki"
64
63
  },
65
64
  "files": [
66
65
  "SKILL.md",
@@ -102,7 +101,6 @@
102
101
  "web-app/deploy/"
103
102
  ],
104
103
  "scripts": {
105
- "postinstall": "node bin/postinstall.js",
106
104
  "prepack": "find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null; find . -name '*.pyc' -delete 2>/dev/null; if command -v bun >/dev/null 2>&1; then (cd loki-ts && bun install --production && bun run build) || echo 'WARN: loki-ts build failed, using existing dist if present'; else echo 'WARN: bun not on PATH, skipping loki-ts build (using committed dist if present)'; fi; true",
107
105
  "prepublishOnly": "cd dashboard-ui && npm ci && npm run build:all",
108
106
  "test": "bash -n autonomy/run.sh && bash -n autonomy/loki && bash -n autonomy/completion-council.sh && bash -n autonomy/app-runner.sh && bash -n autonomy/prd-checklist.sh && bash -n autonomy/playwright-verify.sh && node --test tests/protocols/*.test.js && node --test tests/protocols/a2a/*.test.js && node --test tests/observability/*.test.js && node --test tests/policies/*.test.js && node --test tests/audit/*.test.js && node --test tests/integrations/*.test.js && node --test tests/integrations/jira/*.test.js && node --test tests/integrations/github/*.test.js && node --test tests/integrations/slack/*.test.js && bash tests/managed_memory/test_flag_matrix.sh && bash tests/managed_memory/test_sdk_isolation.sh && bash tests/managed_memory/test_kill_switch.sh && python3 -m unittest tests.managed_memory.test_shadow_write_mock tests.managed_memory.test_retrieve_mock && echo 'All checks passed'",