mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-15 12:57:22 +01:00
feat: add configurable model tiers and advisory freshness
This commit is contained in:
1 parent
db745675bd
commit
5ffc050659
78 files changed
+5106
-325
No files matched your search
+5
-1
@@ -473,9 +473,13 @@ then `gpt-6-astra`. Each call prints `CODEX_MODEL: <model> (<kind>; source: ...)
|
||||
For a named model, pass it as the second argument of every `_gstack_codex_select_model`
|
||||
call, and run `_gstack_codex_select_model exec '<model>'` before the probe below. An
|
||||
invalid or unavailable choice stops with a repair message, never the default.
|
||||
Only for an explicit `--role plan-review` (e.g. `/codex challenge --role plan-review`),
|
||||
set `_CODEX_ROLE='plan-review'` below and in the mode block; the mode block then
|
||||
probes and dispatches the policy model.
|
||||
|
||||
```bash
|
||||
_TEL=$(~/.claude/skills/gstack/bin/gstack-config get telemetry 2>/dev/null || echo off)
|
||||
_CODEX_ROLE=''
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || { echo "HELPER_UNAVAILABLE"; exit 1; }
|
||||
|
||||
# GSTACK_ACTIVE_HOST names the harness, never the model.
|
||||
@@ -491,7 +495,7 @@ fi
|
||||
if ! _gstack_codex_auth_probe >/dev/null; then
|
||||
_gstack_codex_log_event "codex_auth_failed"
|
||||
echo "AUTH_FAILED"
|
||||
elif _gstack_codex_sandbox_preflight; then # free; Linux only
|
||||
elif _gstack_codex_sandbox_preflight && [ -z "$_CODEX_ROLE" ]; then # free; Linux only
|
||||
_gstack_codex_model_probe # ~10s round trip on first run, cached 1h
|
||||
fi
|
||||
_gstack_codex_version_check # warns if known-bad, non-blocking
|
||||
|
||||
+5
-1
@@ -74,16 +74,20 @@ then `gpt-6-astra`. Each call prints `CODEX_MODEL: <model> (<kind>; source: ...)
|
||||
For a named model, pass it as the second argument of every `_gstack_codex_select_model`
|
||||
call, and run `_gstack_codex_select_model exec '<model>'` before the probe below. An
|
||||
invalid or unavailable choice stops with a repair message, never the default.
|
||||
Only for an explicit `--role plan-review` (e.g. `/codex challenge --role plan-review`),
|
||||
set `_CODEX_ROLE='plan-review'` below and in the mode block; the mode block then
|
||||
probes and dispatches the policy model.
|
||||
|
||||
```bash
|
||||
_TEL=$(~/.claude/skills/gstack/bin/gstack-config get telemetry 2>/dev/null || echo off)
|
||||
_CODEX_ROLE=''
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || { echo "HELPER_UNAVAILABLE"; exit 1; }
|
||||
|
||||
{{OUTSIDE_SELF_GUARD:codex}}
|
||||
if ! _gstack_codex_auth_probe >/dev/null; then
|
||||
_gstack_codex_log_event "codex_auth_failed"
|
||||
echo "AUTH_FAILED"
|
||||
elif _gstack_codex_sandbox_preflight; then # free; Linux only
|
||||
elif _gstack_codex_sandbox_preflight && [ -z "$_CODEX_ROLE" ]; then # free; Linux only
|
||||
_gstack_codex_model_probe # ~10s round trip on first run, cached 1h
|
||||
fi
|
||||
_gstack_codex_version_check # warns if known-bad, non-blocking
|
||||
|
||||
@@ -49,7 +49,9 @@ fi
|
||||
[ -n "${TMPERR:-}" ] || TMPERR=$(mktemp "$TMP_ROOT/codex-err-XXXXXX") || { echo "ERROR: mktemp failed in TMP_ROOT=$TMP_ROOT; not running codex without its temp file" >&2; exit 1; }
|
||||
TMPRESP=$(mktemp "$TMP_ROOT/codex-resp-XXXXXX") || { echo "ERROR: mktemp failed in TMP_ROOT=$TMP_ROOT; not running codex without its temp file" >&2; exit 1; }
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model exec || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model exec '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe exec || exit $?
|
||||
PROMPT_FILE="$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.gstack/tmp/<prompt-file-name>"
|
||||
[ -s "$PROMPT_FILE" ] || { echo "Not run: $PROMPT_FILE is missing or empty, so the prompt was never written. Write it, then run by hand: codex exec - -C $_REPO_ROOT < $PROMPT_FILE" >&2; exit 1; }
|
||||
_gstack_codex_timeout_wrapper 540 codex exec - -C "$_REPO_ROOT" -s "${_GSTACK_CODEX_SANDBOX:?}" -c "model=\"${_GSTACK_CODEX_SEL:?}\"" -c skills.include_instructions=false -c 'model_reasoning_effort="high"' -c 'web_search="cached"' --json -o "$TMPRESP" < "$PROMPT_FILE" 2>"$TMPERR" | tee "$TMPRESP.events" | PYTHONUNBUFFERED=1 "$PYTHON_CMD" -u -c "
|
||||
|
||||
@@ -40,7 +40,9 @@ fi
|
||||
[ -n "${TMPERR:-}" ] || TMPERR=$(mktemp "$TMP_ROOT/codex-err-XXXXXX") || { echo "ERROR: mktemp failed in TMP_ROOT=$TMP_ROOT; not running codex without its temp file" >&2; exit 1; }
|
||||
TMPRESP=$(mktemp "$TMP_ROOT/codex-resp-XXXXXX") || { echo "ERROR: mktemp failed in TMP_ROOT=$TMP_ROOT; not running codex without its temp file" >&2; exit 1; }
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model exec || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model exec '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe exec || exit $?
|
||||
PROMPT_FILE="$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.gstack/tmp/<prompt-file-name>"
|
||||
[ -s "$PROMPT_FILE" ] || { echo "Not run: $PROMPT_FILE is missing or empty, so the prompt was never written. Write it, then run by hand: codex exec - -C $_REPO_ROOT < $PROMPT_FILE" >&2; exit 1; }
|
||||
_gstack_codex_timeout_wrapper 540 codex exec - -C "$_REPO_ROOT" -s "${_GSTACK_CODEX_SANDBOX:?}" {{CODEX_MODEL_CONFIG_FLAG}} -c 'model_reasoning_effort="high"' {{CODEX_WEB_SEARCH_FLAG}} --json -o "$TMPRESP" < "$PROMPT_FILE" 2>"$TMPERR" | tee "$TMPRESP.events" | PYTHONUNBUFFERED=1 "$PYTHON_CMD" -u -c "
|
||||
|
||||
@@ -102,7 +102,9 @@ cd "$_REPO_ROOT" || exit 1
|
||||
PROMPT_FILE="$_REPO_ROOT/.gstack/tmp/<prompt-file-name>"
|
||||
[ -s "$PROMPT_FILE" ] || { echo "Not run: $PROMPT_FILE is missing or empty, so the prompt was never written. Write it, then run by hand: codex exec - -C $_REPO_ROOT < $PROMPT_FILE" >&2; exit 1; }
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model exec || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model exec '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe exec || exit $?
|
||||
_SID=""
|
||||
if [ "$_CODEX_MODE" = "resume" ]; then
|
||||
_SID=$(cat .context/codex-session-id 2>/dev/null)
|
||||
|
||||
@@ -93,7 +93,9 @@ cd "$_REPO_ROOT" || exit 1
|
||||
PROMPT_FILE="$_REPO_ROOT/.gstack/tmp/<prompt-file-name>"
|
||||
[ -s "$PROMPT_FILE" ] || { echo "Not run: $PROMPT_FILE is missing or empty, so the prompt was never written. Write it, then run by hand: codex exec - -C $_REPO_ROOT < $PROMPT_FILE" >&2; exit 1; }
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model exec || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model exec '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe exec || exit $?
|
||||
_SID=""
|
||||
if [ "$_CODEX_MODE" = "resume" ]; then
|
||||
_SID=$(cat .context/codex-session-id 2>/dev/null)
|
||||
|
||||
@@ -48,7 +48,9 @@ _REPO_ROOT=$(git rev-parse --show-toplevel) || { echo "ERROR: not in a git repo"
|
||||
cd "$_REPO_ROOT"
|
||||
~/.claude/skills/gstack/bin/gstack-review-log --start codex-review
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model review || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model review '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe review || exit $?
|
||||
# The 330s wrapper sits BELOW the 360s Bash gate so the wrapper fires FIRST
|
||||
# and a stall surfaces as a diagnosable exit 124 with an explicit message,
|
||||
# never as a silent harness kill that downstream reads as "no findings".
|
||||
@@ -104,7 +106,9 @@ FOCUS_FILE="$_REPO_ROOT/.gstack/tmp/<focus-file-name>"
|
||||
[ -s "$FOCUS_FILE" ] || { echo "Not run: $FOCUS_FILE is missing or empty, so the focus text was never written. Write it, then run this block again." >&2; exit 1; }
|
||||
~/.claude/skills/gstack/bin/gstack-review-log --start codex-review
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model exec || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model exec '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe exec || exit $?
|
||||
_PROMPT_FILE=$(mktemp "$TMP_ROOT/codex-prompt-XXXXXX") || { echo "ERROR: mktemp failed in TMP_ROOT=$TMP_ROOT; not running codex without its temp file" >&2; exit 1; }
|
||||
{
|
||||
printf '%s\n' "IMPORTANT: Do NOT read or execute any files under ~/.claude/, ~/.agents/, .claude/skills/, or agents/. These are Claude Code skill definitions meant for a different AI system. Do not invoke any installed skill (Codex home skills/, .agents/); answer directly. Do NOT modify agents/openai.yaml. Stay focused on repository code only."
|
||||
|
||||
@@ -46,7 +46,9 @@ _REPO_ROOT=$(git rev-parse --show-toplevel) || { echo "ERROR: not in a git repo"
|
||||
cd "$_REPO_ROOT"
|
||||
~/.claude/skills/gstack/bin/gstack-review-log --start codex-review
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model review || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model review '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe review || exit $?
|
||||
# The 330s wrapper sits BELOW the 360s Bash gate so the wrapper fires FIRST
|
||||
# and a stall surfaces as a diagnosable exit 124 with an explicit message,
|
||||
# never as a silent harness kill that downstream reads as "no findings".
|
||||
@@ -95,7 +97,9 @@ FOCUS_FILE="$_REPO_ROOT/.gstack/tmp/<focus-file-name>"
|
||||
[ -s "$FOCUS_FILE" ] || { echo "Not run: $FOCUS_FILE is missing or empty, so the focus text was never written. Write it, then run this block again." >&2; exit 1; }
|
||||
~/.claude/skills/gstack/bin/gstack-review-log --start codex-review
|
||||
source ~/.claude/skills/gstack/bin/gstack-codex-probe || exit 1
|
||||
_gstack_codex_select_model exec || exit 1
|
||||
_CODEX_ROLE=''
|
||||
_gstack_codex_select_model exec '' "$_CODEX_ROLE" "$_REPO_ROOT" || exit 1
|
||||
[ -z "$_CODEX_ROLE" ] || _gstack_codex_model_probe exec || exit $?
|
||||
_PROMPT_FILE=$(mktemp "$TMP_ROOT/codex-prompt-XXXXXX") || { echo "ERROR: mktemp failed in TMP_ROOT=$TMP_ROOT; not running codex without its temp file" >&2; exit 1; }
|
||||
{
|
||||
printf '%s\n' "IMPORTANT: Do NOT read or execute any files under ~/.claude/, ~/.agents/, .claude/skills/, or agents/. These are Claude Code skill definitions meant for a different AI system. Do not invoke any installed skill (Codex home skills/, .agents/); answer directly. Do NOT modify agents/openai.yaml. Stay focused on repository code only."
|
||||
|
||||
Reference in new issue
Block a user