loki-mode 11.90.0 → 11.92.0
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/completion-council.sh +16 -2
- package/autonomy/council-v2.sh +10 -2
- package/autonomy/grill.sh +4 -1
- package/autonomy/lib/done-recognition.sh +12 -4
- package/autonomy/lib/prd-enrich.sh +5 -2
- package/autonomy/lib/voter-agents.sh +1 -1
- package/autonomy/loki +128 -45
- package/autonomy/quickstart.sh +13 -2
- package/completions/_loki +7 -4
- package/completions/loki.bash +3 -3
- package/dashboard/__init__.py +1 -1
- package/docs/CLI-REFERENCE.md +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/v11/VERIFY-PR-SANDBOX.md +1 -1
- package/loki-ts/dist/loki.js +1421 -1414
- package/mcp/__init__.py +1 -1
- package/package.json +2 -2
- package/packages/control-plane/dist/server.js +20346 -20211
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-CZL0cONl.js → AdminPage-2eApQhkp.js} +1 -1
- package/web-app/dist/assets/{Avatar-tJZxSP21.js → Avatar-V-WXQ0hZ.js} +1 -1
- package/web-app/dist/assets/{Badge-B-uFJM_y.js → Badge-uw9uv8IY.js} +1 -1
- package/web-app/dist/assets/{Button-DfKU7ctr.js → Button-34AooGBc.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-CRNp09jN.js → CockpitPage-DHVPvw4u.js} +1 -1
- package/web-app/dist/assets/{ComparePage-Cdvjcs57.js → ComparePage-CXuFkRpn.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-C_benNK3.js → ErrorBoundary-DpPNWkHN.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-Ch_6YkUO.js → EvidenceReceiptPanel-C3Mc9c1x.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-C_a7mAlw.js → GitHubIssuesPanel-Bsqa3l6c.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-xMr7IKsr.js → GitHubPRsPanel-B0xZbM-K.js} +1 -1
- package/web-app/dist/assets/{HomePage-BVe6s1kz.js → HomePage-D0aizXzO.js} +2 -2
- package/web-app/dist/assets/{LoginPage-DKlLaNw0.js → LoginPage-DjQ5-faQ.js} +1 -1
- package/web-app/dist/assets/{MagicPage-StmxQunX.js → MagicPage-mzwFEhXD.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-C7e2CioT.js → MetricsPage-Be61Umuv.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-B2IopV0V.js → NotFoundPage-CjmTN3Z6.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-CXs8d6Cx.js → ProjectPage-Bj1dJlmV.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-BfgMJYYj.js → ProjectsPage-DPgt37Ev.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-CZ8lwCF2.js → SettingsPage-CtaHS1ob.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-iNCfKZj0.js → ShowcasePage-DD7t6JHO.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-FMV2pNNz.js → SystemSettingsPage-CzgVPzMw.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-D_SzTjuD.js → TeamsPage-CBouFUwW.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-BMF_6X7R.js → TemplatesPage-BArudpPa.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-ClZtwhW8.js → TerminalOutput-DxA5HoZ5.js} +1 -1
- package/web-app/dist/assets/{activity-DSOGDSlj.js → activity-BR76ZMBh.js} +1 -1
- package/web-app/dist/assets/{bell-BQaMS_Ge.js → bell-Br9K5dz8.js} +1 -1
- package/web-app/dist/assets/{bot-Iw0qLbSN.js → bot-DWOsO7gw.js} +1 -1
- package/web-app/dist/assets/{check-BNNpt5tE.js → check-CbHxZskh.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DDFdacve.js → chevron-left-B7VJtFeE.js} +1 -1
- package/web-app/dist/assets/{circle-alert-CiRTbi7c.js → circle-alert-DFxljQkZ.js} +1 -1
- package/web-app/dist/assets/{clock-hudCD7-Z.js → clock-BDhyJZBv.js} +1 -1
- package/web-app/dist/assets/{cloud-Brn55LA3.js → cloud-BxVf6gss.js} +1 -1
- package/web-app/dist/assets/{code-xml-kiS4rISP.js → code-xml-BsBy-SZC.js} +1 -1
- package/web-app/dist/assets/{database-BD1l1Tuw.js → database-Bqz0cKPA.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-DT5e3PIo.js → dollar-sign-Nma2_5tQ.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-DmixJzQ5.js → file-code-corner-DDiKT74Y.js} +1 -1
- package/web-app/dist/assets/{file-plus-CeQieVbR.js → file-plus-Bsi1eh4g.js} +1 -1
- package/web-app/dist/assets/{globe-BayFHork.js → globe-BrDJU35Q.js} +1 -1
- package/web-app/dist/assets/{hammer-BzJ_7lDH.js → hammer-Cc0dGdYB.js} +1 -1
- package/web-app/dist/assets/{index-DgDlNUmy.js → index-CwRUHGRH.js} +3 -3
- package/web-app/dist/assets/{layers-CfWES4J2.js → layers-dBYYRarz.js} +1 -1
- package/web-app/dist/assets/{loader-circle-CH0UbcAO.js → loader-circle-Bgp8OiC8.js} +1 -1
- package/web-app/dist/assets/{lock-BuKglb_x.js → lock-mYd7M_sm.js} +1 -1
- package/web-app/dist/assets/{package-BkpU_Qb_.js → package-Bl6u282j.js} +1 -1
- package/web-app/dist/assets/{plus-BFMNyc0G.js → plus-H-VgX3FJ.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-DQnQVKNC.js → refresh-cw-emJQn2ZS.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-B_M9AdjB.js → rotate-ccw-CTDYewXA.js} +1 -1
- package/web-app/dist/assets/{scroll-text-1P39rc_L.js → scroll-text-Bx_yfYId.js} +1 -1
- package/web-app/dist/assets/{server-BjGwVEsb.js → server-CfCbWR2b.js} +1 -1
- package/web-app/dist/assets/{shield-alert-CKcYjHu8.js → shield-alert-ODyUhCBO.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-BC_5mpCw.js → thumbs-up-D4rG_0Db.js} +1 -1
- package/web-app/dist/assets/{trash-2-CjtQl9fg.js → trash-2-CLW0eSji.js} +1 -1
- package/web-app/dist/assets/{trending-down-D9MnFNOD.js → trending-down-B_9FnZty.js} +1 -1
- package/web-app/dist/assets/{trending-up-DrHz29bk.js → trending-up-fEvDswGA.js} +1 -1
- package/web-app/dist/assets/{upload-D7jmahPb.js → upload-DvgEs5QL.js} +1 -1
- package/web-app/dist/assets/{usePolling-C-zxuzqz.js → usePolling-KK1QY8nW.js} +1 -1
- package/web-app/dist/assets/{user-DE2Mkf9B.js → user-Cp4-qLBC.js} +1 -1
- package/web-app/dist/index.html +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: Runs an autonomous software factory that knows what it is supposed to deliver and proves it did, with a signed receipt. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v11.
|
|
6
|
+
# Loki Mode v11.92.0
|
|
7
7
|
|
|
8
8
|
**Current entry points (Loki 10 engine):** `loki "<task>"`, `loki owner/repo#N` and `loki quick "<task>"` run the Loki 10 engine and end with a signed receipt (`loki verify`). `loki backlog owner/repo --all` runs many issues in parallel. Guide: `docs/v10/GUIDE.md`. The skill instructions below, and `loki start`, describe the previous bash loop. PRD-file starts (`loki start ./prd.md`) and the opencode provider still run on it until FC38-SWEEP ports them; the legacy-engine command and the LOKI_ENGINE switch remain removed. Prefer `loki owner/repo#N` for issues.
|
|
9
9
|
|
|
@@ -475,4 +475,4 @@ Implemented, planned and deprecated items, with the version each landed in: `ski
|
|
|
475
475
|
|
|
476
476
|
---
|
|
477
477
|
|
|
478
|
-
**v11.
|
|
478
|
+
**v11.92.0 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
11.
|
|
1
|
+
11.92.0
|
|
@@ -3268,6 +3268,13 @@ ISSUES: CRITICAL:description (optional, one per line per issue)"
|
|
|
3268
3268
|
# out of scope when this file is sourced standalone, so each is
|
|
3269
3269
|
# type-guarded (degrades to the prior bare invocation).
|
|
3270
3270
|
local _cm_argv=("--model" "$council_model")
|
|
3271
|
+
local _cm_shell
|
|
3272
|
+
_cm_shell="$(
|
|
3273
|
+
type _loki_claude_shell_value >/dev/null 2>&1 \
|
|
3274
|
+
|| . "${BASH_SOURCE[0]%/*}/lib/claude-flags.sh" >/dev/null 2>&1 || exit 1
|
|
3275
|
+
_loki_claude_shell_value
|
|
3276
|
+
)" || _cm_shell=""
|
|
3277
|
+
[ -n "$_cm_shell" ] || _cm_shell="${SHELL-}"
|
|
3271
3278
|
if type loki_subcall_bare_enabled >/dev/null 2>&1 && loki_subcall_bare_enabled; then
|
|
3272
3279
|
_cm_argv+=("--bare")
|
|
3273
3280
|
fi
|
|
@@ -3299,7 +3306,7 @@ ISSUES: CRITICAL:description (optional, one per line per issue)"
|
|
|
3299
3306
|
# required safe default. pipefail (run.sh:172) makes the assignment's
|
|
3300
3307
|
# $? equal timeout's 124 when the CLI is killed. _provider_rc is read
|
|
3301
3308
|
# after the case to force a conservative REJECT on timeout.
|
|
3302
|
-
verdict=$(echo "$prompt" | timeout "${LOKI_COUNCIL_REVIEW_TIMEOUT:-600}" env CAVEMAN_DEFAULT_MODE=off claude "${_cm_argv[@]}" -p 2>/dev/null)
|
|
3309
|
+
verdict=$(echo "$prompt" | timeout "${LOKI_COUNCIL_REVIEW_TIMEOUT:-600}" env "SHELL=$_cm_shell" CAVEMAN_DEFAULT_MODE=off claude "${_cm_argv[@]}" -p 2>/dev/null)
|
|
3303
3310
|
_provider_rc=$?
|
|
3304
3311
|
fi
|
|
3305
3312
|
;;
|
|
@@ -3476,6 +3483,13 @@ REASON: one-line justification citing path:line evidence"
|
|
|
3476
3483
|
# reviewer must never mutate the tree). Gated + opt-out
|
|
3477
3484
|
# LOKI_BARE_SUBCALLS=0 / LOKI_REVIEW_TOOL_GUARD=0; type-guarded.
|
|
3478
3485
|
local _co_argv=("--model" "$council_model")
|
|
3486
|
+
local _co_shell
|
|
3487
|
+
_co_shell="$(
|
|
3488
|
+
type _loki_claude_shell_value >/dev/null 2>&1 \
|
|
3489
|
+
|| . "${BASH_SOURCE[0]%/*}/lib/claude-flags.sh" >/dev/null 2>&1 || exit 1
|
|
3490
|
+
_loki_claude_shell_value
|
|
3491
|
+
)" || _co_shell=""
|
|
3492
|
+
[ -n "$_co_shell" ] || _co_shell="${SHELL-}"
|
|
3479
3493
|
if type loki_subcall_bare_enabled >/dev/null 2>&1 && loki_subcall_bare_enabled; then
|
|
3480
3494
|
_co_argv+=("--bare")
|
|
3481
3495
|
fi
|
|
@@ -3491,7 +3505,7 @@ REASON: one-line justification citing path:line evidence"
|
|
|
3491
3505
|
# bash-F3: timeout-guard the devil's-advocate subcall (same 600s
|
|
3492
3506
|
# default as the member subcalls / Bun council.ts). An empty
|
|
3493
3507
|
# verdict on timeout hits the conservative REJECT fallback below.
|
|
3494
|
-
verdict=$(echo "$prompt" | timeout "${LOKI_COUNCIL_REVIEW_TIMEOUT:-600}" env CAVEMAN_DEFAULT_MODE=off claude "${_co_argv[@]}" -p 2>/dev/null)
|
|
3508
|
+
verdict=$(echo "$prompt" | timeout "${LOKI_COUNCIL_REVIEW_TIMEOUT:-600}" env "SHELL=$_co_shell" CAVEMAN_DEFAULT_MODE=off claude "${_co_argv[@]}" -p 2>/dev/null)
|
|
3495
3509
|
fi
|
|
3496
3510
|
;;
|
|
3497
3511
|
codex)
|
package/autonomy/council-v2.sh
CHANGED
|
@@ -426,6 +426,14 @@ Respond ONLY with a valid JSON object. No markdown fencing."
|
|
|
426
426
|
# opt-out LOKI_BARE_SUBCALLS=0 / LOKI_REVIEW_TOOL_GUARD=0;
|
|
427
427
|
# type-guarded for standalone sourcing.
|
|
428
428
|
local _c2_argv=("--model" "${_c2_agent_model:-haiku}")
|
|
429
|
+
# Pin SHELL=/bin/bash for the claude child (LOKI_E10_KEEP_USER_SHELL=1 keeps the user shell).
|
|
430
|
+
local _c2_shell
|
|
431
|
+
_c2_shell="$(
|
|
432
|
+
type _loki_claude_shell_value >/dev/null 2>&1 \
|
|
433
|
+
|| . "${BASH_SOURCE[0]%/*}/lib/claude-flags.sh" >/dev/null 2>&1 || exit 1
|
|
434
|
+
_loki_claude_shell_value
|
|
435
|
+
)" || _c2_shell=""
|
|
436
|
+
[ -n "$_c2_shell" ] || _c2_shell="${SHELL-}"
|
|
429
437
|
if type loki_subcall_bare_enabled >/dev/null 2>&1 && loki_subcall_bare_enabled; then
|
|
430
438
|
_c2_argv+=("--bare")
|
|
431
439
|
fi
|
|
@@ -458,7 +466,7 @@ Respond ONLY with a valid JSON object. No markdown fencing."
|
|
|
458
466
|
local _c2_schema_content _c2_json
|
|
459
467
|
_c2_schema_content="$(cat "$_c2_schema" 2>/dev/null)" || _c2_schema_content=""
|
|
460
468
|
if [ -n "$_c2_schema_content" ]; then
|
|
461
|
-
_c2_json="$(echo "$full_prompt" | CAVEMAN_DEFAULT_MODE=off claude "${_c2_argv[@]}" -p \
|
|
469
|
+
_c2_json="$(echo "$full_prompt" | SHELL="$_c2_shell" CAVEMAN_DEFAULT_MODE=off claude "${_c2_argv[@]}" -p \
|
|
462
470
|
--json-schema "$_c2_schema_content" --output-format json 2>/dev/null)" || _c2_json=""
|
|
463
471
|
if [ -n "$_c2_json" ]; then
|
|
464
472
|
# Pull the schema-validated object out of the envelope.
|
|
@@ -480,7 +488,7 @@ except Exception:
|
|
|
480
488
|
fi
|
|
481
489
|
# Fall through to the plain text call (+ sed-carve) on any miss.
|
|
482
490
|
if [ -z "$result" ]; then
|
|
483
|
-
result=$(echo "$full_prompt" | CAVEMAN_DEFAULT_MODE=off claude "${_c2_argv[@]}" -p 2>/dev/null || echo '{"verdict":"INCONCLUSIVE","justification":"review execution failed (no verdict obtained; NOT a rejection)","issues":[]}')
|
|
491
|
+
result=$(echo "$full_prompt" | SHELL="$_c2_shell" CAVEMAN_DEFAULT_MODE=off claude "${_c2_argv[@]}" -p 2>/dev/null || echo '{"verdict":"INCONCLUSIVE","justification":"review execution failed (no verdict obtained; NOT a rejection)","issues":[]}')
|
|
484
492
|
fi
|
|
485
493
|
else
|
|
486
494
|
result='{"verdict":"INCONCLUSIVE","justification":"reviewer CLI unavailable (no verdict obtained; NOT a rejection)","issues":[]}'
|
package/autonomy/grill.sh
CHANGED
|
@@ -251,6 +251,9 @@ grill_invoke_provider() {
|
|
|
251
251
|
_LOKI_PERM_ARGV=(--dangerously-skip-permissions)
|
|
252
252
|
! type _loki_claude_permission_argv >/dev/null 2>&1 || _loki_claude_permission_argv
|
|
253
253
|
local _gr_argv=("${_LOKI_PERM_ARGV[@]}" "--model" "${LOKI_GRILL_MODEL:-sonnet}")
|
|
254
|
+
# Pin SHELL=/bin/bash for the claude child (LOKI_E10_KEEP_USER_SHELL=1 keeps the user shell).
|
|
255
|
+
local _gr_shell
|
|
256
|
+
_gr_shell="$(_loki_claude_shell_value 2>/dev/null || printf '%s' "${SHELL-}")"
|
|
254
257
|
# lean child flags (text-only role, no tools/MCP/slash commands) and
|
|
255
258
|
# a ledger line per call via --output-format json (unwrapped below).
|
|
256
259
|
local _gr_lf _gr_ledger=false
|
|
@@ -275,7 +278,7 @@ grill_invoke_provider() {
|
|
|
275
278
|
# (not a bare VAR=val prefix) because the call goes through
|
|
276
279
|
# _grill_with_timeout, where the first token is exec'd as the command.
|
|
277
280
|
out="$(printf '%s' "$prompt" \
|
|
278
|
-
| _grill_with_timeout "${LOKI_GRILL_TIMEOUT:-180}" env CAVEMAN_DEFAULT_MODE=off claude "${_gr_argv[@]}" -p - 2>/dev/null)"
|
|
281
|
+
| _grill_with_timeout "${LOKI_GRILL_TIMEOUT:-180}" env "SHELL=$_gr_shell" CAVEMAN_DEFAULT_MODE=off claude "${_gr_argv[@]}" -p - 2>/dev/null)"
|
|
279
282
|
if [ "$_gr_ledger" = true ] && [ -n "$out" ]; then
|
|
280
283
|
loki_child_ledger_append "$role" "$out" >/dev/null 2>&1 || true
|
|
281
284
|
out="$(printf '%s' "$out" | python3 -I -c 'import json,sys
|
|
@@ -141,6 +141,14 @@ _loki_done_recog_invoke() {
|
|
|
141
141
|
|| . "$(dirname "${BASH_SOURCE[0]}")/../../providers/loader.sh" 2>/dev/null
|
|
142
142
|
loki_claude_sidecall_allowed 2>/dev/null || return 1
|
|
143
143
|
command -v claude >/dev/null 2>&1 || return 1
|
|
144
|
+
# Pin SHELL=/bin/bash for the claude child (LOKI_E10_KEEP_USER_SHELL=1 keeps the user shell).
|
|
145
|
+
local _dr_shell
|
|
146
|
+
_dr_shell="$(
|
|
147
|
+
type _loki_claude_shell_value >/dev/null 2>&1 \
|
|
148
|
+
|| . "$(dirname "${BASH_SOURCE[0]}")/claude-flags.sh" >/dev/null 2>&1 || exit 1
|
|
149
|
+
_loki_claude_shell_value
|
|
150
|
+
)" || _dr_shell=""
|
|
151
|
+
[ -n "$_dr_shell" ] || _dr_shell="${SHELL-}"
|
|
144
152
|
|
|
145
153
|
# STRUCTURED VERDICT (v8.x): when the CLI supports --json-schema, force valid
|
|
146
154
|
# JSON so parse_object never has to brace-slice prose. --json-schema takes
|
|
@@ -160,11 +168,11 @@ _loki_done_recog_invoke() {
|
|
|
160
168
|
_LOKI_PERM_ARGV=(--dangerously-skip-permissions)
|
|
161
169
|
! type _loki_claude_permission_argv >/dev/null 2>&1 || _loki_claude_permission_argv
|
|
162
170
|
if command -v timeout >/dev/null 2>&1; then
|
|
163
|
-
_dr_json=$(CAVEMAN_DEFAULT_MODE=off timeout "${LOKI_DONE_RECOG_TIMEOUT}" \
|
|
171
|
+
_dr_json=$(SHELL="$_dr_shell" CAVEMAN_DEFAULT_MODE=off timeout "${LOKI_DONE_RECOG_TIMEOUT}" \
|
|
164
172
|
claude "${_LOKI_PERM_ARGV[@]}" -p "$prompt" \
|
|
165
173
|
--json-schema "$_dr_schema_content" --output-format json 2>/dev/null) || _dr_json=""
|
|
166
174
|
else
|
|
167
|
-
_dr_json=$(CAVEMAN_DEFAULT_MODE=off \
|
|
175
|
+
_dr_json=$(SHELL="$_dr_shell" CAVEMAN_DEFAULT_MODE=off \
|
|
168
176
|
claude "${_LOKI_PERM_ARGV[@]}" -p "$prompt" \
|
|
169
177
|
--json-schema "$_dr_schema_content" --output-format json 2>/dev/null) || _dr_json=""
|
|
170
178
|
fi
|
|
@@ -197,10 +205,10 @@ except Exception:
|
|
|
197
205
|
_LOKI_PERM_ARGV=(--dangerously-skip-permissions)
|
|
198
206
|
! type _loki_claude_permission_argv >/dev/null 2>&1 || _loki_claude_permission_argv
|
|
199
207
|
if command -v timeout >/dev/null 2>&1; then
|
|
200
|
-
out=$(CAVEMAN_DEFAULT_MODE=off timeout "${LOKI_DONE_RECOG_TIMEOUT}" \
|
|
208
|
+
out=$(SHELL="$_dr_shell" CAVEMAN_DEFAULT_MODE=off timeout "${LOKI_DONE_RECOG_TIMEOUT}" \
|
|
201
209
|
claude "${_LOKI_PERM_ARGV[@]}" -p "$prompt" 2>/dev/null) || rc=$?
|
|
202
210
|
else
|
|
203
|
-
out=$(CAVEMAN_DEFAULT_MODE=off \
|
|
211
|
+
out=$(SHELL="$_dr_shell" CAVEMAN_DEFAULT_MODE=off \
|
|
204
212
|
claude "${_LOKI_PERM_ARGV[@]}" -p "$prompt" 2>/dev/null) || rc=$?
|
|
205
213
|
fi
|
|
206
214
|
[ "$rc" -ne 0 ] && return 1
|
|
@@ -101,13 +101,16 @@ _loki_prd_enrich_invoke() {
|
|
|
101
101
|
_pe_ledger=true
|
|
102
102
|
_pe_argv+=("--output-format" "json")
|
|
103
103
|
fi
|
|
104
|
+
# Pin SHELL=/bin/bash for the claude child (LOKI_E10_KEEP_USER_SHELL=1 keeps the user shell).
|
|
105
|
+
local _pe_shell
|
|
106
|
+
_pe_shell="$(_loki_claude_shell_value 2>/dev/null || printf '%s' "${SHELL-}")"
|
|
104
107
|
if command -v timeout >/dev/null 2>&1; then
|
|
105
|
-
out=$(CAVEMAN_DEFAULT_MODE=off timeout "${LOKI_PRD_ENRICH_TIMEOUT}" \
|
|
108
|
+
out=$(SHELL="$_pe_shell" CAVEMAN_DEFAULT_MODE=off timeout "${LOKI_PRD_ENRICH_TIMEOUT}" \
|
|
106
109
|
claude "${_pe_argv[@]}" -p "$prompt" 2>/dev/null) || rc=$?
|
|
107
110
|
else
|
|
108
111
|
# No coreutils timeout (e.g. bare macOS). Run without it; the model
|
|
109
112
|
# call is a one-shot and the caller still tolerates failure.
|
|
110
|
-
out=$(CAVEMAN_DEFAULT_MODE=off \
|
|
113
|
+
out=$(SHELL="$_pe_shell" CAVEMAN_DEFAULT_MODE=off \
|
|
111
114
|
claude "${_pe_argv[@]}" -p "$prompt" 2>/dev/null) || rc=$?
|
|
112
115
|
fi
|
|
113
116
|
if [ "$rc" -eq 0 ] && [ "$_pe_ledger" = true ] && [ -n "$out" ]; then
|
|
@@ -401,7 +401,7 @@ loki_council_dispatch_agents() {
|
|
|
401
401
|
_va_fmt=(--output-format json)
|
|
402
402
|
fi
|
|
403
403
|
response=$(timeout "${LOKI_COUNCIL_REVIEW_TIMEOUT:-600}" \
|
|
404
|
-
env CAVEMAN_DEFAULT_MODE=off claude "${_LOKI_PERM_ARGV[@]}" \
|
|
404
|
+
env "SHELL=$(_loki_claude_shell_value 2>/dev/null || printf '%s' "${SHELL-}")" CAVEMAN_DEFAULT_MODE=off claude "${_LOKI_PERM_ARGV[@]}" \
|
|
405
405
|
${_va_lean[@]+"${_va_lean[@]}"} \
|
|
406
406
|
${_va_fmt[@]+"${_va_fmt[@]}"} \
|
|
407
407
|
-p "$prompt" \
|