loki-mode 6.25.0 → 6.25.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 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.25.0
6
+ # Loki Mode v6.25.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.25.0 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
270
+ **v6.25.1 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 6.25.0
1
+ 6.25.1
@@ -7,7 +7,7 @@ Modules:
7
7
  control: Session control API (start/stop/pause/resume)
8
8
  """
9
9
 
10
- __version__ = "6.25.0"
10
+ __version__ = "6.25.1"
11
11
 
12
12
  # Expose the control app for easy import
13
13
  try:
@@ -333,7 +333,7 @@ async def get_run_timeline(
333
333
  """Get the timeline of events for a run."""
334
334
  timeline = await runs_mod.get_run_timeline(db, run_id)
335
335
  if timeline is None:
336
- raise HTTPException(status_code=404, detail="Run not found")
336
+ return {"run_id": run_id, "phases": [], "current_phase": None, "events": []}
337
337
  return timeline
338
338
 
339
339
 
@@ -4174,16 +4174,32 @@ async def remove_checklist_waiver(item_id: str):
4174
4174
  # Council Hard Gate Endpoint (Phase 4)
4175
4175
  # =============================================================================
4176
4176
 
4177
+ _DEFAULT_QUALITY_GATES = [
4178
+ {"name": "Static Analysis", "description": "CodeQL, ESLint, type checking", "status": "pending"},
4179
+ {"name": "Parallel Code Review", "description": "3-reviewer blind review system", "status": "pending"},
4180
+ {"name": "Anti-Sycophancy Check", "description": "Devil's advocate on unanimous approval", "status": "pending"},
4181
+ {"name": "Severity Assessment", "description": "Critical/High/Medium = BLOCK", "status": "pending"},
4182
+ {"name": "Unit Test Coverage", "description": "Target >80% coverage, 100% pass", "status": "pending"},
4183
+ {"name": "Integration Tests", "description": "End-to-end verification", "status": "pending"},
4184
+ {"name": "Security Scan", "description": "Dependency audit, OWASP checks", "status": "pending"},
4185
+ {"name": "Build Verification", "description": "Clean build with no warnings", "status": "pending"},
4186
+ {"name": "Council Vote", "description": "Completion council consensus", "status": "pending"},
4187
+ ]
4188
+
4189
+
4177
4190
  @app.get("/api/council/gate")
4178
4191
  async def get_council_gate():
4179
4192
  """Get council hard gate status."""
4180
4193
  gate_file = _get_loki_dir() / "council" / "gate-block.json"
4181
4194
  if not gate_file.exists():
4182
- return {"blocked": False}
4195
+ return {"blocked": False, "gates": _DEFAULT_QUALITY_GATES}
4183
4196
  try:
4184
- return json.loads(gate_file.read_text())
4197
+ data = json.loads(gate_file.read_text())
4198
+ if "gates" not in data:
4199
+ data["gates"] = _DEFAULT_QUALITY_GATES
4200
+ return data
4185
4201
  except (json.JSONDecodeError, IOError):
4186
- return {"blocked": False, "error": "Failed to read gate file"}
4202
+ return {"blocked": False, "gates": _DEFAULT_QUALITY_GATES, "error": "Failed to read gate file"}
4187
4203
 
4188
4204
 
4189
4205
  # =============================================================================