omnilane 0.10.4 → 0.12.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/routing.yaml CHANGED
@@ -7,9 +7,12 @@
7
7
  # Fallback chain: the first candidate whose vendor CLI is installed wins, so the
8
8
  # same table degrades gracefully when you only subscribe to one or two vendors.
9
9
  # Override any line in ~/.omnilane/routing.local.yaml (same format; local wins).
10
- # Provenance (audited 2026-07-12, re-audited 2026-07-25 vs official model cards;
11
- # Gemini Flash candidates moved 3.5 -> 3.6 on 2026-07-22; Claude Opus defaults moved
12
- # 4.8 -> 5 after the 2026-07-24 release see docs/model-capabilities-2026-07.md):
10
+ # Every benchmark score, price and throughput figure behind these orderings lives in
11
+ # docs/model-capabilities-2026-07.md, with the date it was retrieved. The comments below
12
+ # deliberately carry no numbers: they state WHY a lane is ordered the way it is, which
13
+ # stays true for months, while the numbers move every few weeks. Change an ordering and
14
+ # you update the doc; a figure going stale should never need a routing-table edit.
15
+ # (Audited 2026-07-12; re-audited 2026-07-25, 2026-08-02 and 2026-08-03.)
13
16
  # defaults follow Artificial Analysis data, 2026-07
14
17
  # snapshot. Verified against AA site records + vendor pricing pages: Intelligence &
15
18
  # Coding indexes and 7:2:1 blended prices all match (AA field price1mBlended7To2To1);
@@ -17,28 +20,27 @@
17
20
  # standard short-context API tier — on subscription CLIs treat $ as relative ranking.
18
21
  # Your own job outcomes (~/.omnilane/jobs/) outrank these priors; edit lanes to match.
19
22
 
20
- hardest-coding: codex gpt-5.6-sol max | claude claude-opus-5 xhigh # Opus 5 xhigh is joint-first on AA Coding Agent Index (2026-07-24) and is Anthropic's documented starting point for coding/agentic work; max shows diminishing returns and can overthink. Keep Sol first for the established Codex harness lane.
21
- bulk-mechanical: codex gpt-5.6-terra max | claude claude-sonnet-5 high | gemini "Gemini 3.6 Flash (High)" - # AA Coding Agent Index v1.1: Terra 77.4 ~= Fable 77.2 at a fraction of the cost
22
- triage: codex gpt-5.6-luna medium | gemini "Gemini 3.6 Flash (Low)" - | claude claude-haiku-4-5 - # high-volume scans
23
- hard-judgment: claude claude-opus-5 xhigh | codex gpt-5.6-sol max # AA Intelligence Index 2026-07-24: Opus 5 61, Sol max 59; Opus leads AA agentic knowledge-work benchmarks. xhigh per Anthropic guidance (high is the documented floor for intelligence-sensitive work; max is for correctness-over-cost only) — raise to max locally via `omnilane configure set` if your workload needs it.
23
+ hardest-coding: codex gpt-5.6-sol xhigh | claude claude-opus-5 xhigh # ordered on coding capability specifically, not general intelligence. Sol dropped from max to xhigh on 2026-08-03: on AA's per-effort Coding Index, Sol at xhigh outscores both Sol at max and every Claude tier, at a third less cost — max buys overthinking here, not accuracy. xhigh is also Anthropic's documented starting point for coding/agentic work. Keep Sol first for the established Codex harness lane.
24
+ bulk-mechanical: codex gpt-5.6-terra max | claude claude-sonnet-5 high | gemini "Gemini 3.6 Flash (High)" - # ordered on endurance per dollar: Terra leads Sonnet 5 on both intelligence and cost per task
25
+ triage: codex gpt-5.6-luna medium | gemini "Gemini 3.6 Flash (Low)" - | claude claude-haiku-4-5 - # high-volume scans, ordered on cost per task: Luna is the cheapest model at its intelligence tier by a wide margin
26
+ hard-judgment: claude claude-opus-5 xhigh | codex gpt-5.6-sol max # ordered on agentic knowledge work, where Opus 5 leads Sol on AA's benchmarks. xhigh per Anthropic guidance (high is the documented floor for intelligence-sensitive work; max is for correctness-over-cost only) — raise to max locally via `omnilane configure set` if your workload needs it.
24
27
  taste-final: claude claude-opus-5 high | codex gpt-5.6-sol max # user-facing prose, prompt/doc polish, Chinese phrasing, style arbitration
25
28
  consult: codex gpt-5.6-sol max | claude claude-opus-5 high | grok grok-4.5 - | gemini "Gemini 3.1 Pro (High)" - # direct named-model consultation; use --vendor to prevent fallback
26
29
  ui-draft: codex gpt-5.6-sol xhigh | claude claude-opus-5 high # only with a design system / reference images; open-ended visual taste -> taste-final
27
30
  long-context: gemini "Gemini 3.1 Pro (High)" - | claude claude-opus-5 high | codex gpt-5.6-sol high # all have 1M context; Gemini leads single-needle retrieval at full length and is the cheapest way to sweep volume, Flash for fast loops. For multi-hop synthesis across a large corpus prefer the claude candidate: published multi-needle scores at 1M favour Claude by a wide margin (see docs/model-capabilities-2026-07.md)
28
- fast-agentic: gemini "Gemini 3.6 Flash (High)" - | codex gpt-5.6-luna high # speed + agentic tool loops; 3.6 Flash (released 2026-07-21): AA Intelligence 50, #1 output speed 303.6 tok/s, -17% output tokens vs 3.5 Flash per Google
31
+ fast-agentic: codex gpt-5.6-luna max | gemini "Gemini 3.6 Flash (High)" - # fast multi-step tool loops. Reordered 2026-08-03: Luna leads Flash on agentic benchmarks AND costs a fraction as much per task, so Flash's remaining edge is raw throughput alone. Keep Flash first only if your loops are latency-bound. Both take image input, so the lane's multimodal checks are unaffected
29
32
  live-search: grok grok-4.5 - | off # native X/web search lane; no real substitute
30
- coding-overflow: grok grok-4.5 - | kimi kimi-k3 - | qwen qwen3-coder-plus - | opencode - - | off # codex-quota relief valve: mid-tier coding; Grok 4.5 (GA 2026-07-16) Terminal-Bench 83.3 / SWE-Bench Pro 64.7, but AA hallucination 54% — verify factual claims. qwen3-coder-plus = 2025-09-23 snapshot alias (Qwen 3.6 Plus exists; re-evaluate before swapping). kimi/qwen model fields are CLI aliases — adjust to your login. opencode "-" model = its own configured default.
33
+ coding-overflow: grok grok-4.5 - | kimi kimi-k3 - | qwen qwen3-coder-plus - | opencode - - | off # codex-quota relief valve: mid-tier coding; Grok 4.5 is a capable mid-tier coder but AA measures a high hallucination rate — verify every factual claim it ships. qwen3-coder-plus = 2025-09-23 snapshot alias (Qwen 3.6 Plus exists; re-evaluate before swapping). kimi/qwen model fields are CLI aliases — adjust to your login. opencode "-" model = its own configured default.
31
34
  arbitrate: off - - # opinion panel is OPT-IN: it costs one call per voter per round.
32
35
  # Enable: `arbitrate: vote codex,claude,grok -` (any 1-4 of codex/claude/grok/gemini)
33
36
  # Debate round (each voter rebuts the others): set the effort field to 2.
34
37
  # Custom gate: `arbitrate: exec /path/to/script -`
35
38
  # Claude Fable 5 (claude-fable-5) is deliberately absent from the defaults: the top Claude tier
36
- # is usually the MAIN LOOP itself, not a dispatched worker, and it prices at twice Opus 5
37
- # ($10/$50 vs $5/$25). This is a cost / guardrail / main-loop policy choice, NOT a capability
38
- # verdict AA calls Opus 5 (61) and Fable 5 (60) "effectively tied" on the Intelligence Index
39
- # (2026-07-24) and Epoch AI ranks them the other way, but Opus 5 leads AA-Briefcase by 146 Elo
40
- # and GDPval-AA v2 by 114 Elo at 20% lower cost per task. Fable 5 does keep the lead on factual
41
- # breadth (AA-Omniscience), so name it explicitly for recall-heavy consults. If you want
39
+ # is usually the MAIN LOOP itself, not a dispatched worker, and it prices at twice Opus 5.
40
+ # This is a cost / guardrail / main-loop policy choice, NOT a capability verdict — AA and
41
+ # Epoch AI disagree on which of the two leads general intelligence and call it effectively a
42
+ # tie, while Opus 5 leads clearly on agentic knowledge work at a lower cost per task. Fable 5
43
+ # does keep the lead on factual breadth, so name it explicitly for recall-heavy consults. If you want
42
44
  # to route to it anyway, pick it in the configurator or set e.g.
43
45
  # taste-final: claude claude-fable-5 high
44
46
  # in ~/.omnilane/routing.local.yaml.
@@ -3,7 +3,7 @@ set -euo pipefail
3
3
  # omnilane dispatch — one routing table, any harness.
4
4
  #
5
5
  # Usage:
6
- # dispatch.sh [--background] [--dry-run] [--mode advise|work] [--workdir DIR]
6
+ # dispatch.sh [--background] [--dry-run] [--mode advise|work|sysops] [--workdir DIR]
7
7
  # [--vendor V] [--model M] [--effort E] [--timeout SECONDS]
8
8
  # [--job-timeout SECONDS] LANE "TASK TEXT"
9
9
  # dispatch.sh [--json] --list [--json]
@@ -50,7 +50,11 @@ flags:
50
50
  --background run in the background and print the JOB_ID
51
51
  --dry-run print the fully resolved dispatch plan and stop
52
52
  before any provider call or job state
53
- --mode advise|work advise (read-only, default) or work (may edit files)
53
+ --mode advise|work|sysops
54
+ advise (read-only, default), work (may edit files),
55
+ or sysops (work without the vendor sandbox, for
56
+ service operations like launchctl — codex only;
57
+ other vendors treat it as work)
54
58
  --workdir DIR working directory handed to the vendor CLI
55
59
  --vendor V pin one configured vendor (codex|claude|grok|gemini|kimi|qwen|opencode|openrouter|deepseek|zai|mistral|groq|cerebras)
56
60
  --model M override the routed model
@@ -124,7 +128,7 @@ print_dry_run_plan() {
124
128
  local background=no task_source=argument write_worktree=no job_timeout=disabled
125
129
  [[ "$BACKGROUND" -eq 1 ]] && background=yes
126
130
  [[ "$TASK" == "-" ]] && task_source=stdin
127
- [[ "$MODE" == "work" ]] && write_worktree=yes
131
+ [[ "$MODE" == "work" || "$MODE" == "sysops" ]] && write_worktree=yes
128
132
  [[ -n "$JOB_TIMEOUT" ]] && job_timeout="$JOB_TIMEOUT"
129
133
  printf 'dry_run=yes\n'
130
134
  print_dry_run_value lane "$LANE"
@@ -487,7 +491,7 @@ LANE="$1"
487
491
  TASK="$2"
488
492
  [[ "$LANE" =~ ^[a-z][a-z0-9-]*$ ]] || { echo "omnilane: invalid lane name" >&2; exit 2; }
489
493
  # A typo like --mode advice must not fall through to the write-enabled branch.
490
- [[ "$MODE" == "advise" || "$MODE" == "work" ]] || { echo "omnilane: invalid --mode (advise|work)" >&2; exit 2; }
494
+ [[ "$MODE" == "advise" || "$MODE" == "work" || "$MODE" == "sysops" ]] || { echo "omnilane: invalid --mode (advise|work|sysops)" >&2; exit 2; }
491
495
  if [[ -n "$OVERRIDE_VENDOR" ]] &&
492
496
  ! [[ "$OVERRIDE_VENDOR" =~ ^(${OMNILANE_OVERRIDE_VENDOR_ALT})$ ]]; then
493
497
  echo "omnilane: invalid vendor (${OMNILANE_OVERRIDE_VENDOR_ALT})" >&2
@@ -567,7 +571,7 @@ fi
567
571
  [[ -n "$JOB_TIMEOUT" ]] || JOB_TIMEOUT="${OMNILANE_JOB_TIMEOUT:-}"
568
572
  CODEX_NONGIT_WORK=0
569
573
  CODEX_NONGIT_AUTO_JOB_TIMEOUT=0
570
- if [[ "$VENDOR" == "codex" && "$MODE" == "work" ]]; then
574
+ if [[ "$VENDOR" == "codex" && ( "$MODE" == "work" || "$MODE" == "sysops" ) ]]; then
571
575
  # The target directory is authoritative. Caller-supplied GIT_* state must not
572
576
  # redirect or corrupt discovery, so probe with a minimal clean environment.
573
577
  GIT_WORKTREE_STATE="$(env -i PATH="$PATH" HOME="${HOME:-}" \
@@ -3,6 +3,9 @@ set -euo pipefail
3
3
  # omnilane runner: OpenAI Codex CLI
4
4
  # Usage: run-codex.sh MODE WORKDIR MODEL EFFORT PROMPT_FILE OUTPUT_FILE
5
5
  # MODE = advise (read-only, ephemeral) | work (may edit files in WORKDIR)
6
+ # | sysops (work minus the Seatbelt sandbox: service operations like
7
+ # launchctl are denied under workspace-write, so sysops runs with
8
+ # -s danger-full-access; explicit per-dispatch opt-in only)
6
9
 
7
10
  source "$(dirname "${BASH_SOURCE[0]}")/../lib/common.sh"
8
11
 
@@ -17,6 +20,8 @@ ARGS=(exec -m "$MODEL" -o "${OUTPUT_FILE}.tmp" --skip-git-repo-check)
17
20
  [[ -n "$EFFORT" && "$EFFORT" != "-" ]] && ARGS+=(-c "model_reasoning_effort=\"$EFFORT\"")
18
21
  if [[ "$MODE" == "advise" ]]; then
19
22
  ARGS+=(--ephemeral -s read-only)
23
+ elif [[ "$MODE" == "sysops" ]]; then
24
+ ARGS+=(-s danger-full-access)
20
25
  else
21
26
  ARGS+=(-s workspace-write)
22
27
  fi