loki-mode 6.5.0 → 6.6.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/README.md +7 -5
- package/SKILL.md +8 -4
- package/VERSION +1 -1
- package/autonomy/completion-council.sh +29 -1
- package/autonomy/council-v2.sh +14 -0
- package/autonomy/loki +155 -27
- package/autonomy/run.sh +172 -10
- package/autonomy/sandbox.sh +20 -0
- package/dashboard/__init__.py +1 -1
- package/dashboard/control.py +1 -1
- package/dashboard/server.py +3 -1
- package/docs/INSTALLATION.md +2 -2
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/providers/aider.sh +129 -0
- package/providers/cline.sh +122 -0
- package/providers/loader.sh +1 -1
- package/skills/model-selection.md +3 -1
- package/skills/providers.md +140 -17
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[]()
|
|
10
10
|
[](https://www.autonomi.dev/)
|
|
11
11
|
|
|
12
|
-
**Current Version: v6.
|
|
12
|
+
**Current Version: v6.6.1**
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -36,7 +36,7 @@ Every iteration follows the **RARV cycle**: Reason (read state, identify next ta
|
|
|
36
36
|
| **Code Generation** | Full-stack apps from PRDs | Complex domain logic may need human review |
|
|
37
37
|
| **Deployment** | Generates configs, Dockerfiles, CI/CD workflows | Does not deploy -- human provides cloud credentials and runs deploy |
|
|
38
38
|
| **Testing** | 9 automated quality gates, blind review | Test quality depends on AI-generated assertions |
|
|
39
|
-
| **Multi-Provider** | Claude (full), Codex/Gemini (sequential only) |
|
|
39
|
+
| **Multi-Provider** | Claude (full), Codex/Gemini/Cline/Aider (sequential only) | Non-Claude providers lack parallel agents and Task tool |
|
|
40
40
|
| **Enterprise** | TLS, OIDC, RBAC, audit trail | Self-signed certs only; some features require env var activation |
|
|
41
41
|
| **Dashboard** | Real-time status, task queue, agents | Single-machine only; no multi-node clustering |
|
|
42
42
|
|
|
@@ -44,7 +44,7 @@ Every iteration follows the **RARV cycle**: Reason (read state, identify next ta
|
|
|
44
44
|
|
|
45
45
|
## Quick Start
|
|
46
46
|
|
|
47
|
-
**Requirements:** Node.js 18+, Python 3.8+, macOS/Linux/WSL2, and at least one AI CLI (Claude Code, Codex, or
|
|
47
|
+
**Requirements:** Node.js 18+, Python 3.8+, macOS/Linux/WSL2, and at least one AI CLI (Claude Code, Codex, Gemini, Cline, or Aider).
|
|
48
48
|
|
|
49
49
|
### CLI Mode
|
|
50
50
|
|
|
@@ -129,7 +129,7 @@ See [full architecture documentation](docs/enterprise/architecture.md) for the d
|
|
|
129
129
|
| **Quality** | 9 gates: blind review, anti-sycophancy, mock/mutation detection | [Quality Gates](skills/quality-gates.md) |
|
|
130
130
|
| **Dashboard** | Real-time monitoring, API v2, WebSocket, auto-starts with `loki start` | [Dashboard Guide](docs/dashboard-guide.md) |
|
|
131
131
|
| **Memory** | 3-tier (episodic/semantic/procedural), knowledge graph, vector search | [Memory System](references/memory-system.md) |
|
|
132
|
-
| **Providers** | Claude (full), Codex
|
|
132
|
+
| **Providers** | Claude (full), Codex/Gemini/Cline/Aider (sequential) | [Provider Guide](skills/providers.md) |
|
|
133
133
|
| **Enterprise** | TLS, OIDC/SSO, RBAC, OTEL, policy engine, audit trails | [Enterprise Guide](docs/enterprise/architecture.md) |
|
|
134
134
|
| **Integrations** | Jira, Slack, Teams, GitHub Actions (Linear: partial) | [Integration Cookbook](docs/enterprise/integration-cookbook.md) |
|
|
135
135
|
| **Deployment** | Helm, Docker Compose, Terraform configs (AWS/Azure/GCP) | [Deployment Guide](deploy/helm/README.md) |
|
|
@@ -142,8 +142,10 @@ See [full architecture documentation](docs/enterprise/architecture.md) for the d
|
|
|
142
142
|
| Claude Code | `npm i -g @anthropic-ai/claude-code` | `--dangerously-skip-permissions` | Yes (10+) |
|
|
143
143
|
| Codex CLI | `npm i -g @openai/codex` | `--full-auto` | No (sequential) |
|
|
144
144
|
| Gemini CLI | `npm i -g @google/gemini-cli` | `--approval-mode=yolo` | No (sequential) |
|
|
145
|
+
| Cline CLI | `npm i -g @anthropic-ai/cline` | `--auto-approve` | No (sequential) |
|
|
146
|
+
| Aider | `pip install aider-chat` | `--yes-always` | No (sequential) |
|
|
145
147
|
|
|
146
|
-
Claude gets full features (subagents, parallelization, MCP, Task tool).
|
|
148
|
+
Claude gets full features (subagents, parallelization, MCP, Task tool). All other providers run in sequential mode -- one agent at a time, no Task tool. See [Provider Guide](skills/providers.md) for the full comparison.
|
|
147
149
|
|
|
148
150
|
---
|
|
149
151
|
|
package/SKILL.md
CHANGED
|
@@ -3,11 +3,11 @@ 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.
|
|
6
|
+
# Loki Mode v6.6.1
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
10
|
-
**New in v5.0.0:** Multi-provider support (Claude/Codex/Gemini), abstract model tiers, degraded mode for non-Claude providers. See `skills/providers.md`.
|
|
10
|
+
**New in v5.0.0:** Multi-provider support (Claude/Codex/Gemini/Cline/Aider), abstract model tiers, degraded mode for non-Claude providers. See `skills/providers.md`.
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -95,7 +95,7 @@ These rules guide autonomous operation. Test results and code quality always tak
|
|
|
95
95
|
|
|
96
96
|
**Parallelization rule (Claude only):** Launch up to 10 agents simultaneously for independent tasks.
|
|
97
97
|
|
|
98
|
-
**Degraded mode (Codex/Gemini):** No parallel agents or Task tool. Codex has MCP support. Runs RARV cycle sequentially. See `skills/model-selection.md`.
|
|
98
|
+
**Degraded mode (Codex/Gemini/Cline/Aider):** No parallel agents or Task tool. Codex has MCP support. Runs RARV cycle sequentially. See `skills/model-selection.md`.
|
|
99
99
|
|
|
100
100
|
**Git worktree parallelism:** For true parallel feature development, use `--parallel` flag with run.sh. See `skills/parallel-workflows.md`.
|
|
101
101
|
|
|
@@ -187,6 +187,8 @@ claude --dangerously-skip-permissions
|
|
|
187
187
|
./autonomy/run.sh --provider claude ./prd.md # Default, full features
|
|
188
188
|
./autonomy/run.sh --provider codex ./prd.json # GPT-5.3 Codex, degraded mode
|
|
189
189
|
./autonomy/run.sh --provider gemini ./prd.md # Gemini 3 Pro, degraded mode
|
|
190
|
+
./autonomy/run.sh --provider cline ./prd.md # Cline CLI, degraded mode
|
|
191
|
+
./autonomy/run.sh --provider aider ./prd.md # Aider (18+ providers), degraded mode
|
|
190
192
|
|
|
191
193
|
# Or via CLI wrapper
|
|
192
194
|
loki start --provider codex ./prd.md
|
|
@@ -199,6 +201,8 @@ loki start --provider codex ./prd.md
|
|
|
199
201
|
- **Claude**: Opus 4.6, 1M context (beta), 128K output, adaptive thinking, agent teams, full features (Task tool, parallel agents, MCP)
|
|
200
202
|
- **Codex**: GPT-5.3, 400K context, 128K output, MCP support, --full-auto mode, degraded (sequential only, no Task tool)
|
|
201
203
|
- **Gemini**: Degraded mode (sequential only, no Task tool, 1M context)
|
|
204
|
+
- **Cline**: Multi-provider CLI, degraded mode (sequential only, no Task tool)
|
|
205
|
+
- **Aider**: 18+ provider backends, degraded mode (sequential only, no Task tool)
|
|
202
206
|
|
|
203
207
|
---
|
|
204
208
|
|
|
@@ -263,4 +267,4 @@ The following features are documented in skill modules but not yet fully automat
|
|
|
263
267
|
| Quality gates 3-reviewer system | Implemented (v5.35.0) | 5 specialist reviewers in `skills/quality-gates.md`; execution in run.sh |
|
|
264
268
|
| Benchmarks (HumanEval, SWE-bench) | Infrastructure only | Runner scripts and datasets exist in `benchmarks/`; no published results |
|
|
265
269
|
|
|
266
|
-
**v6.
|
|
270
|
+
**v6.6.1 | [Autonomi](https://www.autonomi.dev/) flagship product | ~260 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
6.
|
|
1
|
+
6.6.1
|
|
@@ -141,7 +141,11 @@ council_track_iteration() {
|
|
|
141
141
|
# Check last 200 lines for completion-like language
|
|
142
142
|
local done_indicators
|
|
143
143
|
done_indicators=$(tail -200 "$log_file" 2>/dev/null | grep -ciE \
|
|
144
|
-
"(all tests pass|all requirements met|implementation complete|feature complete|task complete|project complete|all tasks done|everything is working)" 2>/dev/null ||
|
|
144
|
+
"(all tests pass|all requirements met|implementation complete|feature complete|task complete|project complete|all tasks done|everything is working)" 2>/dev/null) || true
|
|
145
|
+
done_indicators="${done_indicators:-0}"
|
|
146
|
+
# Ensure we have a clean integer (strip any whitespace/newlines)
|
|
147
|
+
done_indicators=$(echo "$done_indicators" | tr -dc '0-9')
|
|
148
|
+
done_indicators="${done_indicators:-0}"
|
|
145
149
|
|
|
146
150
|
if [ "$done_indicators" -gt 0 ]; then
|
|
147
151
|
((COUNCIL_DONE_SIGNALS++))
|
|
@@ -663,6 +667,8 @@ council_member_review() {
|
|
|
663
667
|
claude) command -v claude >/dev/null 2>&1 || { log_error "Claude CLI not found"; return 1; } ;;
|
|
664
668
|
codex) command -v codex >/dev/null 2>&1 || { log_error "Codex CLI not found"; return 1; } ;;
|
|
665
669
|
gemini) command -v gemini >/dev/null 2>&1 || { log_error "Gemini CLI not found"; return 1; } ;;
|
|
670
|
+
cline) command -v cline >/dev/null 2>&1 || { log_error "Cline CLI not found"; return 1; } ;;
|
|
671
|
+
aider) command -v aider >/dev/null 2>&1 || { log_error "Aider not found"; return 1; } ;;
|
|
666
672
|
esac
|
|
667
673
|
|
|
668
674
|
local evidence
|
|
@@ -753,6 +759,16 @@ ISSUES: CRITICAL:description (optional, one per line per issue)"
|
|
|
753
759
|
verdict=$(echo "$prompt" | gemini 2>/dev/null | tail -5)
|
|
754
760
|
fi
|
|
755
761
|
;;
|
|
762
|
+
cline)
|
|
763
|
+
if command -v cline &>/dev/null; then
|
|
764
|
+
verdict=$(cline -y "$prompt" 2>/dev/null | tail -5)
|
|
765
|
+
fi
|
|
766
|
+
;;
|
|
767
|
+
aider)
|
|
768
|
+
if command -v aider &>/dev/null; then
|
|
769
|
+
verdict=$(aider --message "$prompt" --yes-always --no-auto-commits --no-git 2>/dev/null | tail -5)
|
|
770
|
+
fi
|
|
771
|
+
;;
|
|
756
772
|
esac
|
|
757
773
|
|
|
758
774
|
# Fallback: if no AI provider available, use heuristic-based review
|
|
@@ -777,6 +793,8 @@ council_devils_advocate() {
|
|
|
777
793
|
claude) command -v claude >/dev/null 2>&1 || { log_error "Claude CLI not found"; return 1; } ;;
|
|
778
794
|
codex) command -v codex >/dev/null 2>&1 || { log_error "Codex CLI not found"; return 1; } ;;
|
|
779
795
|
gemini) command -v gemini >/dev/null 2>&1 || { log_error "Gemini CLI not found"; return 1; } ;;
|
|
796
|
+
cline) command -v cline >/dev/null 2>&1 || { log_error "Cline CLI not found"; return 1; } ;;
|
|
797
|
+
aider) command -v aider >/dev/null 2>&1 || { log_error "Aider not found"; return 1; } ;;
|
|
780
798
|
esac
|
|
781
799
|
|
|
782
800
|
local evidence
|
|
@@ -830,6 +848,16 @@ REASON: your reasoning"
|
|
|
830
848
|
verdict=$(echo "$prompt" | gemini 2>/dev/null | tail -5)
|
|
831
849
|
fi
|
|
832
850
|
;;
|
|
851
|
+
cline)
|
|
852
|
+
if command -v cline &>/dev/null; then
|
|
853
|
+
verdict=$(cline -y "$prompt" 2>/dev/null | tail -5)
|
|
854
|
+
fi
|
|
855
|
+
;;
|
|
856
|
+
aider)
|
|
857
|
+
if command -v aider &>/dev/null; then
|
|
858
|
+
verdict=$(aider --message "$prompt" --yes-always --no-auto-commits --no-git 2>/dev/null | tail -5)
|
|
859
|
+
fi
|
|
860
|
+
;;
|
|
833
861
|
esac
|
|
834
862
|
|
|
835
863
|
if [ -z "$verdict" ]; then
|
package/autonomy/council-v2.sh
CHANGED
|
@@ -282,6 +282,20 @@ Respond ONLY with a valid JSON object. No markdown fencing."
|
|
|
282
282
|
result='{"verdict":"REJECT","reasoning":"reviewer CLI unavailable","issues":[]}'
|
|
283
283
|
fi
|
|
284
284
|
;;
|
|
285
|
+
cline)
|
|
286
|
+
if command -v cline &>/dev/null; then
|
|
287
|
+
result=$(cline -y "$full_prompt" 2>/dev/null || echo '{"verdict":"REJECT","reasoning":"review execution failed","issues":[]}')
|
|
288
|
+
else
|
|
289
|
+
result='{"verdict":"REJECT","reasoning":"reviewer CLI unavailable","issues":[]}'
|
|
290
|
+
fi
|
|
291
|
+
;;
|
|
292
|
+
aider)
|
|
293
|
+
if command -v aider &>/dev/null; then
|
|
294
|
+
result=$(aider --message "$full_prompt" --yes-always --no-auto-commits --no-git 2>/dev/null || echo '{"verdict":"REJECT","reasoning":"review execution failed","issues":[]}')
|
|
295
|
+
else
|
|
296
|
+
result='{"verdict":"REJECT","reasoning":"reviewer CLI unavailable","issues":[]}'
|
|
297
|
+
fi
|
|
298
|
+
;;
|
|
285
299
|
*)
|
|
286
300
|
result='{"verdict":"REJECT","reasoning":"review not supported for this provider","issues":[]}'
|
|
287
301
|
;;
|
package/autonomy/loki
CHANGED
|
@@ -433,7 +433,7 @@ show_help() {
|
|
|
433
433
|
echo " help Show this help"
|
|
434
434
|
echo ""
|
|
435
435
|
echo "Options for 'start':"
|
|
436
|
-
echo " --provider NAME AI provider: claude (default), codex, gemini"
|
|
436
|
+
echo " --provider NAME AI provider: claude (default), codex, gemini, cline, aider"
|
|
437
437
|
echo " --parallel Enable parallel mode with git worktrees"
|
|
438
438
|
echo " --bg, --background Run in background mode"
|
|
439
439
|
echo " --simple Force simple complexity tier (3 phases)"
|
|
@@ -450,7 +450,7 @@ show_help() {
|
|
|
450
450
|
echo " --dry-run Preview generated PRD without starting"
|
|
451
451
|
echo " --no-start Generate PRD but don't start execution"
|
|
452
452
|
echo " --output FILE Save PRD to custom path"
|
|
453
|
-
echo " --provider NAME AI provider: claude (default), codex, gemini"
|
|
453
|
+
echo " --provider NAME AI provider: claude (default), codex, gemini, cline, aider"
|
|
454
454
|
echo " --parallel Enable parallel mode with git worktrees"
|
|
455
455
|
echo " --budget USD Set cost budget limit"
|
|
456
456
|
echo ""
|
|
@@ -499,7 +499,7 @@ cmd_start() {
|
|
|
499
499
|
echo " PRD Path to PRD file (optional)"
|
|
500
500
|
echo ""
|
|
501
501
|
echo "Options:"
|
|
502
|
-
echo " --provider NAME AI provider: claude (default), codex, gemini"
|
|
502
|
+
echo " --provider NAME AI provider: claude (default), codex, gemini, cline, aider"
|
|
503
503
|
echo " --parallel Enable parallel mode with git worktrees"
|
|
504
504
|
echo " --bg, --background Run in background mode"
|
|
505
505
|
echo " --simple Force simple complexity tier (3 phases)"
|
|
@@ -536,7 +536,7 @@ cmd_start() {
|
|
|
536
536
|
args+=("--provider" "$provider")
|
|
537
537
|
shift 2
|
|
538
538
|
else
|
|
539
|
-
echo -e "${RED}--provider requires a value (claude, codex, gemini)${NC}"
|
|
539
|
+
echo -e "${RED}--provider requires a value (claude, codex, gemini, cline, aider)${NC}"
|
|
540
540
|
exit 1
|
|
541
541
|
fi
|
|
542
542
|
;;
|
|
@@ -545,6 +545,45 @@ cmd_start() {
|
|
|
545
545
|
args+=("--provider" "$provider")
|
|
546
546
|
shift
|
|
547
547
|
;;
|
|
548
|
+
--aider-model)
|
|
549
|
+
if [[ -n "${2:-}" ]]; then
|
|
550
|
+
export LOKI_AIDER_MODEL="$2"
|
|
551
|
+
shift 2
|
|
552
|
+
else
|
|
553
|
+
echo -e "${RED}--aider-model requires a value${NC}"
|
|
554
|
+
exit 1
|
|
555
|
+
fi
|
|
556
|
+
;;
|
|
557
|
+
--aider-model=*)
|
|
558
|
+
export LOKI_AIDER_MODEL="${1#*=}"
|
|
559
|
+
shift
|
|
560
|
+
;;
|
|
561
|
+
--aider-flags)
|
|
562
|
+
if [[ -n "${2:-}" ]]; then
|
|
563
|
+
export LOKI_AIDER_FLAGS="$2"
|
|
564
|
+
shift 2
|
|
565
|
+
else
|
|
566
|
+
echo -e "${RED}--aider-flags requires a value${NC}"
|
|
567
|
+
exit 1
|
|
568
|
+
fi
|
|
569
|
+
;;
|
|
570
|
+
--aider-flags=*)
|
|
571
|
+
export LOKI_AIDER_FLAGS="${1#*=}"
|
|
572
|
+
shift
|
|
573
|
+
;;
|
|
574
|
+
--cline-model)
|
|
575
|
+
if [[ -n "${2:-}" ]]; then
|
|
576
|
+
export LOKI_CLINE_MODEL="$2"
|
|
577
|
+
shift 2
|
|
578
|
+
else
|
|
579
|
+
echo -e "${RED}--cline-model requires a value${NC}"
|
|
580
|
+
exit 1
|
|
581
|
+
fi
|
|
582
|
+
;;
|
|
583
|
+
--cline-model=*)
|
|
584
|
+
export LOKI_CLINE_MODEL="${1#*=}"
|
|
585
|
+
shift
|
|
586
|
+
;;
|
|
548
587
|
--parallel)
|
|
549
588
|
args+=("--parallel")
|
|
550
589
|
shift
|
|
@@ -1342,12 +1381,15 @@ cmd_status() {
|
|
|
1342
1381
|
# Show provider with capability
|
|
1343
1382
|
local capability="full features"
|
|
1344
1383
|
case "$current_provider" in
|
|
1345
|
-
codex|gemini)
|
|
1384
|
+
codex|gemini|aider)
|
|
1346
1385
|
capability="degraded mode"
|
|
1347
1386
|
;;
|
|
1387
|
+
cline)
|
|
1388
|
+
capability="near-full mode"
|
|
1389
|
+
;;
|
|
1348
1390
|
esac
|
|
1349
1391
|
echo -e "${CYAN}Provider:${NC} $current_provider ($capability)"
|
|
1350
|
-
echo -e "${DIM} Switch with: loki provider set <claude|codex|gemini>${NC}"
|
|
1392
|
+
echo -e "${DIM} Switch with: loki provider set <claude|codex|gemini|cline|aider>${NC}"
|
|
1351
1393
|
echo ""
|
|
1352
1394
|
|
|
1353
1395
|
# Show running sessions (v6.4.0 - concurrent session support)
|
|
@@ -1624,12 +1666,14 @@ cmd_provider() {
|
|
|
1624
1666
|
}
|
|
1625
1667
|
|
|
1626
1668
|
cmd_provider_show() {
|
|
1669
|
+
local positional_arg="${1:-}"
|
|
1670
|
+
|
|
1627
1671
|
local saved_provider=""
|
|
1628
1672
|
if [ -f "$LOKI_DIR/state/provider" ]; then
|
|
1629
1673
|
saved_provider=$(cat "$LOKI_DIR/state/provider" 2>/dev/null)
|
|
1630
1674
|
fi
|
|
1631
1675
|
|
|
1632
|
-
local current="${saved_provider:-${LOKI_PROVIDER:-claude}}"
|
|
1676
|
+
local current="${positional_arg:-${saved_provider:-${LOKI_PROVIDER:-claude}}}"
|
|
1633
1677
|
|
|
1634
1678
|
echo -e "${BOLD}Current Provider${NC}"
|
|
1635
1679
|
echo ""
|
|
@@ -1640,7 +1684,10 @@ cmd_provider_show() {
|
|
|
1640
1684
|
claude)
|
|
1641
1685
|
echo -e "${GREEN}Status:${NC} Full features (subagents, parallel, MCP)"
|
|
1642
1686
|
;;
|
|
1643
|
-
|
|
1687
|
+
cline)
|
|
1688
|
+
echo -e "${GREEN}Status:${NC} Near-full mode (subagents, MCP, 12+ providers)"
|
|
1689
|
+
;;
|
|
1690
|
+
codex|gemini|aider)
|
|
1644
1691
|
echo -e "${YELLOW}Status:${NC} Degraded mode (sequential only)"
|
|
1645
1692
|
;;
|
|
1646
1693
|
esac
|
|
@@ -1661,17 +1708,17 @@ cmd_provider_set() {
|
|
|
1661
1708
|
|
|
1662
1709
|
if [ -z "$new_provider" ]; then
|
|
1663
1710
|
echo -e "${RED}Error: Provider name required${NC}"
|
|
1664
|
-
echo "Usage: loki provider set <claude|codex|gemini>"
|
|
1711
|
+
echo "Usage: loki provider set <claude|codex|gemini|cline|aider>"
|
|
1665
1712
|
exit 1
|
|
1666
1713
|
fi
|
|
1667
1714
|
|
|
1668
1715
|
# Validate provider
|
|
1669
1716
|
case "$new_provider" in
|
|
1670
|
-
claude|codex|gemini)
|
|
1717
|
+
claude|codex|gemini|cline|aider)
|
|
1671
1718
|
;;
|
|
1672
1719
|
*)
|
|
1673
1720
|
echo -e "${RED}Error: Invalid provider '$new_provider'${NC}"
|
|
1674
|
-
echo "Valid providers: claude, codex, gemini"
|
|
1721
|
+
echo "Valid providers: claude, codex, gemini, cline, aider"
|
|
1675
1722
|
exit 1
|
|
1676
1723
|
;;
|
|
1677
1724
|
esac
|
|
@@ -1690,6 +1737,12 @@ cmd_provider_set() {
|
|
|
1690
1737
|
gemini)
|
|
1691
1738
|
echo "Install: npm install -g @google/gemini-cli"
|
|
1692
1739
|
;;
|
|
1740
|
+
cline)
|
|
1741
|
+
echo "Install: npm install -g cline"
|
|
1742
|
+
;;
|
|
1743
|
+
aider)
|
|
1744
|
+
echo "Install: pip install aider-chat"
|
|
1745
|
+
;;
|
|
1693
1746
|
esac
|
|
1694
1747
|
echo ""
|
|
1695
1748
|
echo -e "${DIM}Setting provider anyway...${NC}"
|
|
@@ -1719,6 +1772,8 @@ cmd_provider_list() {
|
|
|
1719
1772
|
local claude_status="${RED}not installed${NC}"
|
|
1720
1773
|
local codex_status="${RED}not installed${NC}"
|
|
1721
1774
|
local gemini_status="${RED}not installed${NC}"
|
|
1775
|
+
local cline_status="${RED}not installed${NC}"
|
|
1776
|
+
local aider_status="${RED}not installed${NC}"
|
|
1722
1777
|
|
|
1723
1778
|
if command -v claude &> /dev/null; then
|
|
1724
1779
|
claude_status="${GREEN}installed${NC}"
|
|
@@ -1729,6 +1784,12 @@ cmd_provider_list() {
|
|
|
1729
1784
|
if command -v gemini &> /dev/null; then
|
|
1730
1785
|
gemini_status="${GREEN}installed${NC}"
|
|
1731
1786
|
fi
|
|
1787
|
+
if command -v cline &> /dev/null; then
|
|
1788
|
+
cline_status="${GREEN}installed${NC}"
|
|
1789
|
+
fi
|
|
1790
|
+
if command -v aider &> /dev/null; then
|
|
1791
|
+
aider_status="${GREEN}installed${NC}"
|
|
1792
|
+
fi
|
|
1732
1793
|
|
|
1733
1794
|
# Display providers
|
|
1734
1795
|
local marker=""
|
|
@@ -1743,6 +1804,14 @@ cmd_provider_list() {
|
|
|
1743
1804
|
[ "$current" = "gemini" ] && marker=" ${CYAN}(current)${NC}"
|
|
1744
1805
|
echo -e " gemini - Gemini CLI (Google) $gemini_status$marker"
|
|
1745
1806
|
|
|
1807
|
+
marker=""
|
|
1808
|
+
[ "$current" = "cline" ] && marker=" ${CYAN}(current)${NC}"
|
|
1809
|
+
echo -e " cline - Cline (multi-provider) $cline_status$marker"
|
|
1810
|
+
|
|
1811
|
+
marker=""
|
|
1812
|
+
[ "$current" = "aider" ] && marker=" ${CYAN}(current)${NC}"
|
|
1813
|
+
echo -e " aider - Aider (terminal pair prog) $aider_status$marker"
|
|
1814
|
+
|
|
1746
1815
|
echo ""
|
|
1747
1816
|
echo -e "Set provider: ${CYAN}loki provider set <name>${NC}"
|
|
1748
1817
|
}
|
|
@@ -1792,6 +1861,34 @@ cmd_provider_info() {
|
|
|
1792
1861
|
echo ""
|
|
1793
1862
|
echo "Status: Degraded mode"
|
|
1794
1863
|
;;
|
|
1864
|
+
cline)
|
|
1865
|
+
echo "Name: Cline CLI (Multi-Provider)"
|
|
1866
|
+
echo "Vendor: Cline (supports 12+ providers)"
|
|
1867
|
+
echo "CLI: cline"
|
|
1868
|
+
echo "Flag: -y (YOLO mode)"
|
|
1869
|
+
echo ""
|
|
1870
|
+
echo "Features:"
|
|
1871
|
+
echo " - Autonomous mode"
|
|
1872
|
+
echo " - Subagent support"
|
|
1873
|
+
echo " - MCP server support"
|
|
1874
|
+
echo " - 12+ model providers"
|
|
1875
|
+
echo ""
|
|
1876
|
+
echo "Status: Near-full mode (Tier 2)"
|
|
1877
|
+
;;
|
|
1878
|
+
aider)
|
|
1879
|
+
echo "Name: Aider (18+ Providers)"
|
|
1880
|
+
echo "Vendor: Aider (supports 18+ providers)"
|
|
1881
|
+
echo "CLI: aider"
|
|
1882
|
+
echo "Flag: --yes-always"
|
|
1883
|
+
echo ""
|
|
1884
|
+
echo "Features:"
|
|
1885
|
+
echo " - Autonomous mode"
|
|
1886
|
+
echo " - 18+ model providers"
|
|
1887
|
+
echo " - Architect mode (dual model)"
|
|
1888
|
+
echo " - Built-in lint/test integration"
|
|
1889
|
+
echo ""
|
|
1890
|
+
echo "Status: Degraded mode (Tier 3)"
|
|
1891
|
+
;;
|
|
1795
1892
|
*)
|
|
1796
1893
|
echo -e "${RED}Unknown provider: $provider${NC}"
|
|
1797
1894
|
exit 1
|
|
@@ -2770,7 +2867,7 @@ cmd_run() {
|
|
|
2770
2867
|
echo " --dry-run Preview generated PRD without starting"
|
|
2771
2868
|
echo " --no-start Generate PRD but don't start execution"
|
|
2772
2869
|
echo " --output FILE Save PRD to custom path"
|
|
2773
|
-
echo " --provider NAME AI provider: claude (default), codex, gemini"
|
|
2870
|
+
echo " --provider NAME AI provider: claude (default), codex, gemini, cline, aider"
|
|
2774
2871
|
echo " --parallel Enable parallel mode with git worktrees"
|
|
2775
2872
|
echo " --bg, --background Run in background mode"
|
|
2776
2873
|
echo " --simple Force simple complexity tier"
|
|
@@ -2867,7 +2964,6 @@ cmd_run() {
|
|
|
2867
2964
|
shift
|
|
2868
2965
|
;;
|
|
2869
2966
|
--worktree|-w)
|
|
2870
|
-
start_args+=("--parallel")
|
|
2871
2967
|
use_worktree=true
|
|
2872
2968
|
shift
|
|
2873
2969
|
;;
|
|
@@ -3219,7 +3315,7 @@ cmd_issue() {
|
|
|
3219
3315
|
echo " --output FILE Save PRD to custom path (default: .loki/prd-issue-N.md)"
|
|
3220
3316
|
echo ""
|
|
3221
3317
|
echo "Options passed to 'start' (when --start is used):"
|
|
3222
|
-
echo " --provider NAME AI provider: claude (default), codex, gemini"
|
|
3318
|
+
echo " --provider NAME AI provider: claude (default), codex, gemini, cline, aider"
|
|
3223
3319
|
echo " --parallel Enable parallel mode with git worktrees"
|
|
3224
3320
|
echo " --bg, --background Run in background mode"
|
|
3225
3321
|
echo ""
|
|
@@ -3932,7 +4028,7 @@ cmd_config() {
|
|
|
3932
4028
|
echo " model.planning Model for planning tier"
|
|
3933
4029
|
echo " model.development Model for development tier"
|
|
3934
4030
|
echo " model.fast Model for fast tier"
|
|
3935
|
-
echo " provider Default AI provider: claude, codex, gemini"
|
|
4031
|
+
echo " provider Default AI provider: claude, codex, gemini, cline, aider"
|
|
3936
4032
|
echo " issue.provider Default issue provider: github, gitlab, jira, azure_devops"
|
|
3937
4033
|
echo " blind_validation Blind validation mode: true, false (default: true)"
|
|
3938
4034
|
echo " adversarial_testing Adversarial testing: true, false (default: true)"
|
|
@@ -3975,8 +4071,8 @@ cmd_config_set() {
|
|
|
3975
4071
|
;;
|
|
3976
4072
|
provider)
|
|
3977
4073
|
case "$value" in
|
|
3978
|
-
claude|codex|gemini) ;;
|
|
3979
|
-
*) echo -e "${RED}Invalid provider: $value (expected: claude, codex, gemini)${NC}"; return 1 ;;
|
|
4074
|
+
claude|codex|gemini|cline|aider) ;;
|
|
4075
|
+
*) echo -e "${RED}Invalid provider: $value (expected: claude, codex, gemini, cline, aider)${NC}"; return 1 ;;
|
|
3980
4076
|
esac
|
|
3981
4077
|
;;
|
|
3982
4078
|
issue.provider)
|
|
@@ -4272,6 +4368,8 @@ cmd_setup_skill() {
|
|
|
4272
4368
|
"$HOME/.claude/skills/loki-mode:Claude Code"
|
|
4273
4369
|
"$HOME/.codex/skills/loki-mode:Codex CLI"
|
|
4274
4370
|
"$HOME/.gemini/skills/loki-mode:Gemini CLI"
|
|
4371
|
+
"$HOME/.cline/skills/loki-mode:Cline CLI"
|
|
4372
|
+
"$HOME/.aider/skills/loki-mode:Aider CLI"
|
|
4275
4373
|
)
|
|
4276
4374
|
|
|
4277
4375
|
local created=0
|
|
@@ -4420,6 +4518,12 @@ cmd_doctor() {
|
|
|
4420
4518
|
gemini)
|
|
4421
4519
|
version=$(gemini --version 2>/dev/null | head -1 | sed 's/[^0-9.]//g' | head -1)
|
|
4422
4520
|
;;
|
|
4521
|
+
cline)
|
|
4522
|
+
version=$(cline --version 2>/dev/null | head -1 | sed 's/[^0-9.]//g' | head -1)
|
|
4523
|
+
;;
|
|
4524
|
+
aider)
|
|
4525
|
+
version=$(aider --version 2>/dev/null | head -1 | sed 's/[^0-9.]//g' | head -1)
|
|
4526
|
+
;;
|
|
4423
4527
|
esac
|
|
4424
4528
|
|
|
4425
4529
|
local version_display=""
|
|
@@ -4454,17 +4558,19 @@ cmd_doctor() {
|
|
|
4454
4558
|
}
|
|
4455
4559
|
|
|
4456
4560
|
echo -e "${CYAN}Required:${NC}"
|
|
4457
|
-
doctor_check "Node.js (>= 18)" node required 18.0
|
|
4458
|
-
doctor_check "Python 3 (>= 3.8)" python3 required 3.8
|
|
4459
|
-
doctor_check "jq" jq required
|
|
4460
|
-
doctor_check "git" git required
|
|
4461
|
-
doctor_check "curl" curl required
|
|
4561
|
+
doctor_check "Node.js (>= 18)" node required 18.0 || true
|
|
4562
|
+
doctor_check "Python 3 (>= 3.8)" python3 required 3.8 || true
|
|
4563
|
+
doctor_check "jq" jq required || true
|
|
4564
|
+
doctor_check "git" git required || true
|
|
4565
|
+
doctor_check "curl" curl required || true
|
|
4462
4566
|
echo ""
|
|
4463
4567
|
|
|
4464
4568
|
echo -e "${CYAN}AI Providers:${NC}"
|
|
4465
|
-
doctor_check "Claude CLI" claude optional
|
|
4466
|
-
doctor_check "Codex CLI" codex optional
|
|
4467
|
-
doctor_check "Gemini CLI" gemini optional
|
|
4569
|
+
doctor_check "Claude CLI" claude optional || true
|
|
4570
|
+
doctor_check "Codex CLI" codex optional || true
|
|
4571
|
+
doctor_check "Gemini CLI" gemini optional || true
|
|
4572
|
+
doctor_check "Cline CLI" cline optional || true
|
|
4573
|
+
doctor_check "Aider CLI" aider optional || true
|
|
4468
4574
|
echo ""
|
|
4469
4575
|
|
|
4470
4576
|
echo -e "${CYAN}Skills:${NC}"
|
|
@@ -4472,6 +4578,8 @@ cmd_doctor() {
|
|
|
4472
4578
|
"$HOME/.claude/skills/loki-mode:Claude Code"
|
|
4473
4579
|
"$HOME/.codex/skills/loki-mode:Codex CLI"
|
|
4474
4580
|
"$HOME/.gemini/skills/loki-mode:Gemini CLI"
|
|
4581
|
+
"$HOME/.cline/skills/loki-mode:Cline CLI"
|
|
4582
|
+
"$HOME/.aider/skills/loki-mode:Aider CLI"
|
|
4475
4583
|
)
|
|
4476
4584
|
for entry in "${skill_dirs[@]}"; do
|
|
4477
4585
|
local sdir="${entry%%:*}"
|
|
@@ -4491,7 +4599,7 @@ cmd_doctor() {
|
|
|
4491
4599
|
echo ""
|
|
4492
4600
|
|
|
4493
4601
|
echo -e "${CYAN}System:${NC}"
|
|
4494
|
-
doctor_check "bash (>= 4.0)" bash recommended 4.0
|
|
4602
|
+
doctor_check "bash (>= 4.0)" bash recommended 4.0 || true
|
|
4495
4603
|
|
|
4496
4604
|
# Disk space check
|
|
4497
4605
|
local disk_avail
|
|
@@ -4591,6 +4699,8 @@ checks.append(check_tool('bash', 'bash', 'recommended', '4.0'))
|
|
|
4591
4699
|
checks.append(check_tool('Claude CLI', 'claude', 'optional'))
|
|
4592
4700
|
checks.append(check_tool('Codex CLI', 'codex', 'optional'))
|
|
4593
4701
|
checks.append(check_tool('Gemini CLI', 'gemini', 'optional'))
|
|
4702
|
+
checks.append(check_tool('Cline CLI', 'cline', 'optional'))
|
|
4703
|
+
checks.append(check_tool('Aider CLI', 'aider', 'optional'))
|
|
4594
4704
|
|
|
4595
4705
|
# Disk space
|
|
4596
4706
|
disk_gb = None
|
|
@@ -6742,8 +6852,17 @@ except Exception: pass
|
|
|
6742
6852
|
gemini)
|
|
6743
6853
|
(cd "$codebase_path" && gemini --approval-mode=yolo "$phase_prompt" 2>&1) || phase_exit=$?
|
|
6744
6854
|
;;
|
|
6855
|
+
cline)
|
|
6856
|
+
(cd "$codebase_path" && cline -y "$phase_prompt" 2>&1) || phase_exit=$?
|
|
6857
|
+
;;
|
|
6858
|
+
aider)
|
|
6859
|
+
local aider_model="${LOKI_AIDER_MODEL:-claude-3.7-sonnet}"
|
|
6860
|
+
local aider_flags="${LOKI_AIDER_FLAGS:-}"
|
|
6861
|
+
# shellcheck disable=SC2086
|
|
6862
|
+
(cd "$codebase_path" && aider --message "$phase_prompt" --yes-always --no-auto-commits --model "$aider_model" $aider_flags 2>&1) || phase_exit=$?
|
|
6863
|
+
;;
|
|
6745
6864
|
*)
|
|
6746
|
-
echo -e "${RED}Error: Unknown provider '${provider_name}'. Supported: claude, codex, gemini${NC}"
|
|
6865
|
+
echo -e "${RED}Error: Unknown provider '${provider_name}'. Supported: claude, codex, gemini, cline, aider${NC}"
|
|
6747
6866
|
phase_exit=1
|
|
6748
6867
|
;;
|
|
6749
6868
|
esac
|
|
@@ -6903,6 +7022,15 @@ except Exception: pass
|
|
|
6903
7022
|
gemini)
|
|
6904
7023
|
(cd "$codebase_path" && gemini --approval-mode=yolo "$doc_prompt" 2>&1) || doc_exit=$?
|
|
6905
7024
|
;;
|
|
7025
|
+
cline)
|
|
7026
|
+
(cd "$codebase_path" && cline -y "$doc_prompt" 2>&1) || doc_exit=$?
|
|
7027
|
+
;;
|
|
7028
|
+
aider)
|
|
7029
|
+
local aider_model="${LOKI_AIDER_MODEL:-claude-3.7-sonnet}"
|
|
7030
|
+
local aider_flags="${LOKI_AIDER_FLAGS:-}"
|
|
7031
|
+
# shellcheck disable=SC2086
|
|
7032
|
+
(cd "$codebase_path" && aider --message "$doc_prompt" --yes-always --no-auto-commits --model "$aider_model" $aider_flags 2>&1) || doc_exit=$?
|
|
7033
|
+
;;
|
|
6906
7034
|
esac
|
|
6907
7035
|
|
|
6908
7036
|
if [ "$doc_exit" -eq 0 ] && [ -d "${codebase_path}/migration_docs" ]; then
|