loki-mode 6.50.0 → 6.50.1
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/run.sh +3 -1
- package/dashboard/__init__.py +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/web-app/server.py +36 -8
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 v6.50.
|
|
6
|
+
# Loki Mode v6.50.1
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
@@ -267,4 +267,4 @@ The following features are documented in skill modules but not yet fully automat
|
|
|
267
267
|
| Quality gates 3-reviewer system | Implemented (v5.35.0) | 5 specialist reviewers in `skills/quality-gates.md`; execution in run.sh |
|
|
268
268
|
| Benchmarks (HumanEval, SWE-bench) | Infrastructure only | Runner scripts and datasets exist in `benchmarks/`; no published results |
|
|
269
269
|
|
|
270
|
-
**v6.50.
|
|
270
|
+
**v6.50.1 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
6.50.
|
|
1
|
+
6.50.1
|
package/autonomy/run.sh
CHANGED
|
@@ -177,7 +177,9 @@ PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
177
177
|
# Solution: Copy ourselves to /tmp and run from there. The original can be safely edited.
|
|
178
178
|
#===============================================================================
|
|
179
179
|
if [[ -z "${LOKI_RUNNING_FROM_TEMP:-}" ]] && [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
180
|
-
TEMP_SCRIPT=$(mktemp /tmp/loki-run-XXXXXX
|
|
180
|
+
TEMP_SCRIPT=$(mktemp /tmp/loki-run-XXXXXX)
|
|
181
|
+
mv "$TEMP_SCRIPT" "${TEMP_SCRIPT}.sh"
|
|
182
|
+
TEMP_SCRIPT="${TEMP_SCRIPT}.sh"
|
|
181
183
|
cp "${BASH_SOURCE[0]}" "$TEMP_SCRIPT"
|
|
182
184
|
chmod 700 "$TEMP_SCRIPT"
|
|
183
185
|
export LOKI_RUNNING_FROM_TEMP=1
|
package/dashboard/__init__.py
CHANGED
package/docs/INSTALLATION.md
CHANGED
package/mcp/__init__.py
CHANGED
package/package.json
CHANGED
package/web-app/server.py
CHANGED
|
@@ -2261,10 +2261,19 @@ async def chat_session(session_id: str, req: ChatRequest) -> JSONResponse:
|
|
|
2261
2261
|
task.returncode = 1
|
|
2262
2262
|
task.complete = True
|
|
2263
2263
|
return
|
|
2264
|
-
|
|
2265
|
-
|
|
2264
|
+
# All chat modes use 'loki quick' with the user's message as the task.
|
|
2265
|
+
# This runs claude (or configured provider) in the project directory
|
|
2266
|
+
# to make changes based on the user's prompt -- works both during
|
|
2267
|
+
# active sessions and post-completion for iterative development.
|
|
2268
|
+
if req.mode == "max":
|
|
2269
|
+
# Max mode: full loki start with the message as a PRD
|
|
2270
|
+
prd_path = target / ".loki" / "chat-prd.md"
|
|
2271
|
+
prd_path.parent.mkdir(parents=True, exist_ok=True)
|
|
2272
|
+
prd_path.write_text(req.message)
|
|
2273
|
+
cmd_args = [loki, "start", "--provider", "claude", str(prd_path)]
|
|
2266
2274
|
else:
|
|
2267
|
-
|
|
2275
|
+
# Quick and Standard both use 'loki quick' -- fast, focused changes
|
|
2276
|
+
cmd_args = [loki, "quick", req.message]
|
|
2268
2277
|
try:
|
|
2269
2278
|
proc = subprocess.Popen(
|
|
2270
2279
|
cmd_args,
|
|
@@ -2285,7 +2294,9 @@ async def chat_session(session_id: str, req: ChatRequest) -> JSONResponse:
|
|
|
2285
2294
|
for raw_line in proc.stdout:
|
|
2286
2295
|
if task.cancelled:
|
|
2287
2296
|
break
|
|
2288
|
-
|
|
2297
|
+
# Strip ANSI escape codes for clean display
|
|
2298
|
+
clean = re.sub(r'\x1b\[[0-9;]*[a-zA-Z]', '', raw_line.rstrip("\n"))
|
|
2299
|
+
task.output_lines.append(clean)
|
|
2289
2300
|
proc.stdout.close()
|
|
2290
2301
|
|
|
2291
2302
|
await asyncio.wait_for(
|
|
@@ -2314,14 +2325,31 @@ async def chat_session(session_id: str, req: ChatRequest) -> JSONResponse:
|
|
|
2314
2325
|
except (ProcessLookupError, OSError):
|
|
2315
2326
|
proc.kill()
|
|
2316
2327
|
proc.wait()
|
|
2317
|
-
# Detect changed files
|
|
2328
|
+
# Detect changed files (both committed and uncommitted)
|
|
2318
2329
|
try:
|
|
2319
|
-
|
|
2330
|
+
changed = set()
|
|
2331
|
+
# Check uncommitted changes (working tree + staged)
|
|
2332
|
+
r1 = subprocess.run(
|
|
2333
|
+
["git", "diff", "--name-only"],
|
|
2334
|
+
cwd=str(target), capture_output=True, text=True, timeout=10,
|
|
2335
|
+
)
|
|
2336
|
+
if r1.returncode == 0:
|
|
2337
|
+
changed.update(f for f in r1.stdout.strip().splitlines() if f)
|
|
2338
|
+
# Check staged changes
|
|
2339
|
+
r2 = subprocess.run(
|
|
2340
|
+
["git", "diff", "--name-only", "--cached"],
|
|
2341
|
+
cwd=str(target), capture_output=True, text=True, timeout=10,
|
|
2342
|
+
)
|
|
2343
|
+
if r2.returncode == 0:
|
|
2344
|
+
changed.update(f for f in r2.stdout.strip().splitlines() if f)
|
|
2345
|
+
# Check recent commit if any
|
|
2346
|
+
r3 = subprocess.run(
|
|
2320
2347
|
["git", "diff", "--name-only", "HEAD~1"],
|
|
2321
2348
|
cwd=str(target), capture_output=True, text=True, timeout=10,
|
|
2322
2349
|
)
|
|
2323
|
-
if
|
|
2324
|
-
|
|
2350
|
+
if r3.returncode == 0:
|
|
2351
|
+
changed.update(f for f in r3.stdout.strip().splitlines() if f)
|
|
2352
|
+
task.files_changed = sorted(changed)
|
|
2325
2353
|
except Exception:
|
|
2326
2354
|
pass
|
|
2327
2355
|
task.complete = True
|