agent-bios 0.10.0 → 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/DEPENDENCIES.md +3 -3
- package/README.md +4 -4
- package/claude/guides/cli-multi-model-workflow.md +50 -4
- package/claude/guides/coding-staged-workflow.md +1 -1
- package/claude/guides/session-distill-workflow.md +3 -3
- package/claude/hooks/tooling-gotchas-hook.py +37 -2
- package/claude/skills/repo-charter/SKILL.md +149 -0
- package/codex/guides/cli-multi-model-workflow.md +50 -4
- package/codex/guides/coding-staged-workflow.md +1 -1
- package/codex/guides/session-distill-workflow.md +3 -3
- package/compose/assemble.py +184 -21
- package/compose/canary.sh +13 -0
- package/compose/check-domains.py +144 -20
- package/compose/domains.json +3 -0
- package/compose/prune-backups.py +57 -7
- package/install.sh +442 -30
- package/launch/agent-launch.py +4567 -659
- package/launch/agent-launch.toml +65 -110
- package/launch/agent-launch.zsh +7 -2
- package/launch/i18n/en.toml +186 -0
- package/launch/i18n/ja.toml +182 -0
- package/launch/i18n/ko.toml +182 -0
- package/learn/check-learning.py +19 -1
- package/learn/collect-learning.py +57 -2
- package/learn/migrate-learnings.py +140 -16
- package/learn/redact.py +14 -5
- package/package.json +4 -2
- package/provenance.json +1 -1
- package/session-cost.py +402 -33
- package/wrappers/claude-run.sh +49 -4
- package/wrappers/codex-run.sh +1 -1
package/launch/agent-launch.toml
CHANGED
|
@@ -1,43 +1,37 @@
|
|
|
1
1
|
schema_version = 1
|
|
2
2
|
|
|
3
|
+
# `bare_launch_args` are appended ONLY on a bare launch — no preset, no --custom, no
|
|
4
|
+
# --dry-run — where nothing else decides policy. A configured launch projects the
|
|
5
|
+
# preset's own policy (`claude_permission_mode` / `codex_execution_policy`) and never
|
|
6
|
+
# carries these: with them, a preset that chose `standard` would launch with
|
|
7
|
+
# `--dangerously-skip-permissions` from here. The key was `passthrough_args`, which read
|
|
8
|
+
# as universal and made that omission look like a defect (round 18, #3).
|
|
3
9
|
[backends.codex]
|
|
4
10
|
command = "codex"
|
|
5
|
-
|
|
11
|
+
bare_launch_args = []
|
|
6
12
|
|
|
7
13
|
[backends.claude]
|
|
8
14
|
command = "claude"
|
|
9
|
-
|
|
15
|
+
bare_launch_args = ["--dangerously-skip-permissions"]
|
|
10
16
|
|
|
11
17
|
# Optional dependencies. `command` gates the route: unresolvable means the route
|
|
12
18
|
# is unavailable and the review setup degrades without it. `install` is the single
|
|
13
19
|
# source for both the one-line hint shown when it is missing and what
|
|
14
|
-
# `agent-bios install --with <name>` runs.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
# and getting them the wrong way round is the mistake to avoid: the package name is
|
|
30
|
-
# "ultracode, ported for codex", not "the codex one is the real one".
|
|
31
|
-
#
|
|
32
|
-
# What they are FOR, which is what a reader choosing between reviewers actually needs:
|
|
33
|
-
# both drive a dynamic workflow, used here as a flexible many-perspective check on an
|
|
34
|
-
# IMPLEMENTATION — does it function, does it survive an adversary, does the logic hold,
|
|
35
|
-
# does it hold under a real scenario, does it hold under stress. That makes them
|
|
36
|
-
# COMPLEMENTARY to onto rather than competing with it: onto looks hardest at whether
|
|
37
|
-
# authority, gates and harness are consistent with each other. The two are independently
|
|
38
|
-
# selectable, and both single-sided choices are legitimate — a thing whose whole point is
|
|
39
|
-
# that it WORKS can be reviewed by the workflow alone, and a logic-bearing document,
|
|
40
|
-
# ontology, harness or gate can be reviewed by onto alone.
|
|
20
|
+
# `agent-bios install --with <name>` runs. How a tool exposes an operation is its
|
|
21
|
+
# `offers` list: the adapter there is a protocol codec owned by core, never a method
|
|
22
|
+
# identity, so a second method reusing the tag is data-only, and `evidence` names what
|
|
23
|
+
# the tool reports back about the dispatch it performed — a receipt missing any of it
|
|
24
|
+
# is not credited.
|
|
25
|
+
|
|
26
|
+
# ── deep review, one concept and two host-bound mechanisms ─────────────────
|
|
27
|
+
# Both shipped deep reviewers are the host CLIs themselves — nothing to install beyond
|
|
28
|
+
# the CLI, which is a host rather than a reviewer. `ultracode` runs ON CLAUDE (the
|
|
29
|
+
# Claude Code workflow keyword); `codex-exec` runs ON CODEX (the CLI's non-interactive
|
|
30
|
+
# exec mode). What they are FOR: a deep check on an IMPLEMENTATION — does it function,
|
|
31
|
+
# does it survive an adversary, does the logic hold, does it hold under a real scenario,
|
|
32
|
+
# does it hold under stress. The Claude side fans that across many agents; the Codex
|
|
33
|
+
# side hands the whole packet to one frontier-effort pass. Personal or third-party
|
|
34
|
+
# reviewers register in the user-owned methods file, never here.
|
|
41
35
|
|
|
42
36
|
[capabilities.ultracode]
|
|
43
37
|
# Not a separate tool: the Claude Code CLI's own dynamic workflow, opened by putting the
|
|
@@ -55,17 +49,24 @@ command = "${backend}"
|
|
|
55
49
|
# claude only: the keyword trigger is a Claude Code feature, so a codex seat cannot run it.
|
|
56
50
|
offers = [{ operation = "workflow-review", adapter = "host-workflow-v1", hosts = ["claude"] }]
|
|
57
51
|
|
|
58
|
-
[capabilities.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
|
|
52
|
+
[capabilities.codex-exec]
|
|
53
|
+
# The Codex CLI's own non-interactive exec mode. As with `ultracode` above, the command
|
|
54
|
+
# IS the configured backend — `${backend}` and not a duplicated literal, because a
|
|
55
|
+
# duplicated default breaks for anyone whose backend is a wrapper or an absolute path.
|
|
56
|
+
# No `install`: that field is EXECUTED by `agent-bios install --with`, and a missing
|
|
57
|
+
# codex CLI is a missing host, not a missing reviewer.
|
|
58
|
+
command = "${backend}"
|
|
59
|
+
# codex only, and this is the tool's nature rather than a policy: `exec`,
|
|
60
|
+
# `-s read-only`, `-c model_reasoning_effort` and `-c service_tier` are Codex CLI
|
|
61
|
+
# surface (verified against installed codex-cli 0.146.0), so a claude seat cannot
|
|
62
|
+
# run it. `-s read-only` pins the sandbox the descriptor promises; what stays
|
|
63
|
+
# inherited is the ambient ~/.codex configuration (AGENTS.md, config.toml), so
|
|
64
|
+
# this reviewer is read-only but not hermetic — the codex-run wrapper remains the
|
|
65
|
+
# hermetic dispatch when that matters.
|
|
65
66
|
#
|
|
66
|
-
# Between the two, this review is available CROSS-FAMILY from
|
|
67
|
-
#
|
|
68
|
-
offers = [{ operation = "
|
|
67
|
+
# Between the two, this review is available CROSS-FAMILY from a claude main — the
|
|
68
|
+
# opposite family's CLI is dispatched as a fresh read-only subprocess.
|
|
69
|
+
offers = [{ operation = "exec-review", adapter = "exec-stdio-v1", hosts = ["codex"] }]
|
|
69
70
|
|
|
70
71
|
# ── review methods (DESIGN.md §1) ───────────────────────────────────────────
|
|
71
72
|
# Data only. Adding a method here — including one this repo has never seen — must
|
|
@@ -92,59 +93,33 @@ aggregation = "majority"
|
|
|
92
93
|
severity_emits = ["blocker", "high", "medium", "low", "info"]
|
|
93
94
|
severity_map = { blocker = "blocker", high = "high", medium = "medium", low = "low", info = "info" }
|
|
94
95
|
|
|
95
|
-
[review_methods.
|
|
96
|
-
label = "
|
|
97
|
-
|
|
98
|
-
capability
|
|
99
|
-
|
|
100
|
-
#
|
|
101
|
-
#
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
#
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
#
|
|
109
|
-
|
|
110
|
-
instructions = 'call onto_review/onto_prepare_review with llmOverride={{"provider":"{provider}","model":"{model}","effort":"{effort}"}} so onto runs on {provider} at {effort}'
|
|
96
|
+
[review_methods.codex-exec]
|
|
97
|
+
label = "Codex deep exec review"
|
|
98
|
+
# Named for the mechanism, not for the legacy layer. The legacy route token `ultracode`
|
|
99
|
+
# used to BE its capability's key, so naming another tool with the bare name silently
|
|
100
|
+
# repointed the legacy route — the golden caught that, and the fix was to bind the legacy
|
|
101
|
+
# token to a capability explicitly (`LEGACY_ULTRACODE_CAPABILITY`) rather than let a setup
|
|
102
|
+
# name and a tool id be the same string.
|
|
103
|
+
description = "One deep pass by the Codex CLI in non-interactive exec mode: the whole packet handed to a single frontier-effort model rather than fanned out over agents. Use it on things that have to WORK when the strongest single reader beats many angles; the Claude-side workflow below is the fan-out counterpart. Reviews whatever packet you hand it on stdin, so it needs no working-tree state and nothing installed beyond the codex CLI itself."
|
|
104
|
+
capability = "codex-exec"
|
|
105
|
+
operation = "exec-review"
|
|
106
|
+
# The exec flags are the whole mechanism, so they are stated as literals rather than left
|
|
107
|
+
# to the dispatcher's memory. The severity ladder is stated too, and that is what makes
|
|
108
|
+
# the identity map below TRUE rather than copied: this reviewer has no vocabulary of its
|
|
109
|
+
# own — it reports on the ladder because the request tells it to.
|
|
110
|
+
instructions = 'dispatch {command} exec -s read-only -m {model} -c model_reasoning_effort="{effort}" as a fresh read-only process with a self-contained review packet on stdin (the -s flag is what makes read-only true rather than promised; append -c service_tier="fast" only when a faster, shallower turnaround is explicitly wanted), and require every finding to carry one of {severities}'
|
|
111
111
|
output = "review-v1"
|
|
112
|
-
perspectives = ["
|
|
112
|
+
perspectives = ["deep-exec"]
|
|
113
113
|
trials = 1
|
|
114
114
|
order = "fixed"
|
|
115
115
|
swap_augmentation = false
|
|
116
116
|
aggregation = "union"
|
|
117
|
-
# onto's own REVIEW_SEVERITY_ORDER is this same ladder — read in its source, not
|
|
118
|
-
# assumed. Identity is correct here for a different reason than the panel below.
|
|
119
117
|
severity_emits = ["blocker", "high", "medium", "low", "info"]
|
|
120
118
|
severity_map = { blocker = "blocker", high = "high", medium = "medium", low = "low", info = "info" }
|
|
121
119
|
|
|
122
|
-
[review_methods.ultracode-for-codex]
|
|
123
|
-
label = "Ultracode workflow review (Codex)"
|
|
124
|
-
# Named for the tool, not for the legacy layer. The legacy route token `ultracode` used to
|
|
125
|
-
# BE this capability's key, so naming the Claude tool `ultracode` silently repointed the
|
|
126
|
-
# legacy route at it — the golden caught that, and the fix was to bind the legacy token to
|
|
127
|
-
# a capability explicitly (`LEGACY_ULTRACODE_CAPABILITY`) rather than let a setup name and
|
|
128
|
-
# a tool id be the same string.
|
|
129
|
-
description = "The same dynamic workflow, ported to Codex — same use: things that have to WORK, checked from many angles rather than one. Fans dozens of Codex agents over your UNCOMMITTED working-tree changes for file:line defects, each candidate verified by its own agent. Its built-in code-review fails before spawning anything when the tree holds no reviewable change — clean, or only types it excludes such as .java, Dockerfile or dist/. Passing that gate is not the same as your files being reviewed. Detached: launching exits 0 even when the run dies."
|
|
130
|
-
capability = "ultracode-for-codex"
|
|
131
|
-
operation = "workflow-review"
|
|
132
|
-
instructions = "run {command} against a self-contained review packet on {model}/{effort}"
|
|
133
|
-
output = "review-v1"
|
|
134
|
-
perspectives = ["orchestration"]
|
|
135
|
-
trials = 1
|
|
136
|
-
order = "fixed"
|
|
137
|
-
swap_augmentation = false
|
|
138
|
-
aggregation = "union"
|
|
139
|
-
# P0..P3 plus a null severity, taken from the tool's own result contract. The mapping
|
|
140
|
-
# is the owner's call: the tool documents the vocabulary but not what each level
|
|
141
|
-
# means, so it cannot be derived. "null" keys a finding the tool reports with none.
|
|
142
|
-
severity_emits = ["P0", "P1", "P2", "P3", "null"]
|
|
143
|
-
severity_map = { P0 = "blocker", P1 = "high", P2 = "medium", P3 = "low", null = "info" }
|
|
144
|
-
|
|
145
120
|
[review_methods.ultracode]
|
|
146
121
|
label = "Ultracode workflow review (Claude)"
|
|
147
|
-
description = "Claude Code's own dynamic workflow, on Claude. Decomposes the request across many agents and adversarially verifies each candidate finding before it survives. Use it on things that have to WORK — functional, adversarial, logic, scenario and stress passes
|
|
122
|
+
description = "Claude Code's own dynamic workflow, on Claude. Decomposes the request across many agents and adversarially verifies each candidate finding before it survives. Use it on things that have to WORK — functional, adversarial, logic, scenario and stress passes; the Codex-side deep exec review above is the single-reader counterpart. Reviews whatever packet you hand it, so it needs no working-tree state. The keyword in the prompt is what opens the workflow: without it the turn is an ordinary session that will answer, plausibly, alone. PRECONDITION this launcher cannot establish: the keyword trigger must be enabled (`workflowKeywordTriggerEnabled`, default true, verified in claude 2.1.220). A resolvable claude CLI proves the command exists, not that the workflow opens — with that setting off the review runs as an ordinary session and would report as though it were orchestrated."
|
|
148
123
|
capability = "ultracode"
|
|
149
124
|
operation = "workflow-review"
|
|
150
125
|
# The keyword is the whole mechanism, so it is stated as a literal rather than left to the
|
|
@@ -167,9 +142,6 @@ severity_map = { blocker = "blocker", high = "high", medium = "medium", low = "l
|
|
|
167
142
|
# the reverse map must be unique so it resolves to exactly one validatable seat.
|
|
168
143
|
provider = "openai"
|
|
169
144
|
models = ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"]
|
|
170
|
-
# onto review seat used when a CROSS-family main (Claude) routes onto review to
|
|
171
|
-
# this (gpt/codex) family; must be an onto review-role registered (provider, model).
|
|
172
|
-
onto_review = { provider = "openai", model = "gpt-5.6-sol" }
|
|
173
145
|
|
|
174
146
|
[hosts.codex.tiers.frontier]
|
|
175
147
|
model = "gpt-5.6-sol"
|
|
@@ -209,9 +181,6 @@ sweep = "${CODEX_HOME}/agents/sweep.toml"
|
|
|
209
181
|
[hosts.claude]
|
|
210
182
|
provider = "anthropic"
|
|
211
183
|
models = ["claude-fable-5", "claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5"]
|
|
212
|
-
# onto review seat used when a CROSS-family main (Codex) routes onto review to
|
|
213
|
-
# this (anthropic/claude) family; must be an onto review-role registered (provider, model).
|
|
214
|
-
onto_review = { provider = "anthropic", model = "claude-fable-5" }
|
|
215
184
|
|
|
216
185
|
[hosts.claude.tiers.frontier]
|
|
217
186
|
model = "claude-fable-5"
|
|
@@ -241,7 +210,7 @@ claude_permission_mode = "bypassPermissions"
|
|
|
241
210
|
|
|
242
211
|
[presets.deep-review]
|
|
243
212
|
label = "Deep review"
|
|
244
|
-
description = "HELM with
|
|
213
|
+
description = "HELM with the base panel plus the deep reviewer from the OTHER provider — Codex exec at ultra when you launch Claude, the Claude workflow when you launch Codex — at FRONTIER effort."
|
|
245
214
|
mode = "builder"
|
|
246
215
|
main_tier = "helm"
|
|
247
216
|
frontier_effort = { codex = "ultra", claude = "max" }
|
|
@@ -261,7 +230,7 @@ claude_permission_mode = "bypassPermissions"
|
|
|
261
230
|
|
|
262
231
|
[presets.solo]
|
|
263
232
|
label = "Solo"
|
|
264
|
-
description = "Single-model session: delegation off (no tier fan-out; the standing spawn policy is lifted)
|
|
233
|
+
description = "Single-model session: delegation off (no tier fan-out; the standing spawn policy is lifted) and no review route requested — review is whatever you run yourself."
|
|
265
234
|
mode = "builder"
|
|
266
235
|
main_tier = "helm"
|
|
267
236
|
frontier_effort = "max"
|
|
@@ -318,22 +287,15 @@ tier = "helm"
|
|
|
318
287
|
provider = "openai"
|
|
319
288
|
tier = "frontier"
|
|
320
289
|
|
|
321
|
-
[presets.deep-review.review.hosts.claude.methods."
|
|
322
|
-
provider = "openai"
|
|
323
|
-
tier = "frontier"
|
|
324
|
-
|
|
325
|
-
[presets.deep-review.review.hosts.claude.methods."ultracode-for-codex"]
|
|
290
|
+
[presets.deep-review.review.hosts.claude.methods."codex-exec"]
|
|
326
291
|
provider = "openai"
|
|
327
|
-
|
|
292
|
+
model = "gpt-5.6-sol"
|
|
293
|
+
effort = "ultra"
|
|
328
294
|
|
|
329
295
|
[presets.deep-review.review.hosts.codex.base]
|
|
330
296
|
provider = "anthropic"
|
|
331
297
|
tier = "frontier"
|
|
332
298
|
|
|
333
|
-
[presets.deep-review.review.hosts.codex.methods."onto"]
|
|
334
|
-
provider = "anthropic"
|
|
335
|
-
tier = "frontier"
|
|
336
|
-
|
|
337
299
|
[presets.deep-review.review.hosts.codex.methods."ultracode"]
|
|
338
300
|
provider = "anthropic"
|
|
339
301
|
tier = "frontier"
|
|
@@ -350,22 +312,15 @@ tier = "workhorse"
|
|
|
350
312
|
provider = "openai"
|
|
351
313
|
tier = "frontier"
|
|
352
314
|
|
|
353
|
-
[presets.session-distill.review.hosts.claude.methods."
|
|
315
|
+
[presets.session-distill.review.hosts.claude.methods."codex-exec"]
|
|
354
316
|
provider = "openai"
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
[presets.session-distill.review.hosts.claude.methods."ultracode-for-codex"]
|
|
358
|
-
provider = "openai"
|
|
359
|
-
tier = "frontier"
|
|
317
|
+
model = "gpt-5.6-sol"
|
|
318
|
+
effort = "ultra"
|
|
360
319
|
|
|
361
320
|
[presets.session-distill.review.hosts.codex.base]
|
|
362
321
|
provider = "anthropic"
|
|
363
322
|
tier = "frontier"
|
|
364
323
|
|
|
365
|
-
[presets.session-distill.review.hosts.codex.methods."onto"]
|
|
366
|
-
provider = "anthropic"
|
|
367
|
-
tier = "frontier"
|
|
368
|
-
|
|
369
324
|
[presets.session-distill.review.hosts.codex.methods."ultracode"]
|
|
370
325
|
provider = "anthropic"
|
|
371
326
|
tier = "frontier"
|
package/launch/agent-launch.zsh
CHANGED
|
@@ -4,10 +4,15 @@
|
|
|
4
4
|
_agent_launch_direct() {
|
|
5
5
|
local host="$1"
|
|
6
6
|
shift
|
|
7
|
+
# `builtin command`, not bare `command`. The point of this line is to reach the real
|
|
8
|
+
# binary without re-entering a shell function, and zsh lets a user define `command()`
|
|
9
|
+
# — at which point the bare form calls THAT, and the direct path this wrapper exists to
|
|
10
|
+
# provide is handed to whatever the user's function does. `builtin` cannot be shadowed,
|
|
11
|
+
# so the resolution is the one the comment above already promised.
|
|
7
12
|
if [[ "$host" == "claude" ]]; then
|
|
8
|
-
command claude --dangerously-skip-permissions "$@"
|
|
13
|
+
builtin command claude --dangerously-skip-permissions "$@"
|
|
9
14
|
else
|
|
10
|
-
command codex "$@"
|
|
15
|
+
builtin command codex "$@"
|
|
11
16
|
fi
|
|
12
17
|
}
|
|
13
18
|
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# UI text catalog: English, the reference key-set. Every `t("key")` in
|
|
2
|
+
# launch/agent-launch.py must exist here, and ko.toml/ja.toml must carry
|
|
3
|
+
# exactly this key-set — the parity gate holds all three, both directions.
|
|
4
|
+
# Chrome only: launch-contract text is never sourced from a catalog.
|
|
5
|
+
|
|
6
|
+
"mode.title" = "Mode"
|
|
7
|
+
"mode.swe.label" = "Software Engineer"
|
|
8
|
+
"mode.swe.description" = "Repo-scoped work that defers to the project's own AGENTS.md/CLAUDE.md: a bare Vanilla session, or Custom to configure one."
|
|
9
|
+
"mode.builder.label" = "Builder"
|
|
10
|
+
"mode.builder.description" = "Tune tiers, review routes, and permissions across fixed presets; includes Custom."
|
|
11
|
+
"mode.distill.label" = "Session distill"
|
|
12
|
+
"mode.distill.description" = "Enter the dedicated session-distill hub: status, packages, versions, and session start."
|
|
13
|
+
|
|
14
|
+
"language.label" = "Language"
|
|
15
|
+
"language.description" = "Choose the TUI language (English / 한국어 / 日本語). The corpus the AI consumes stays English; this changes the launcher's screens only."
|
|
16
|
+
"language.title" = "Language"
|
|
17
|
+
"language.en.description" = "Show the launcher's screens in English."
|
|
18
|
+
"language.ko.description" = "런처 화면을 한국어로 표시합니다."
|
|
19
|
+
"language.ja.description" = "ランチャーの画面を日本語で表示します。"
|
|
20
|
+
|
|
21
|
+
"corpus.label" = "Corpus packages"
|
|
22
|
+
"corpus.description" = "Choose which corpus domain packages are installed; applying runs the installer's onboard loop (install + activation canary)."
|
|
23
|
+
"corpus.title" = "Corpus packages"
|
|
24
|
+
"corpus.core.line" = "core + infra always install; the checklist covers the optional domain packages."
|
|
25
|
+
"corpus.toggle.description" = "Toggle this domain package. Nothing changes until Apply."
|
|
26
|
+
"corpus.apply.label" = "Apply selection{pending}"
|
|
27
|
+
"corpus.apply.description" = "Run agent-bios onboard with exactly the checked set; the installer deploys, canaries, and records the outcome."
|
|
28
|
+
"corpus.apply.unchanged" = "the checked set equals the applied one — nothing to apply"
|
|
29
|
+
"corpus.unavailable.line1" = "The corpus status projection is missing or predates domain reporting."
|
|
30
|
+
"corpus.none.line" = "This projection lists no optional domain packages — core and infra always install, so there is nothing to choose here."
|
|
31
|
+
"corpus.unavailable.line2" = "Run: agent-bios install (it rewrites the projection this screen reads)"
|
|
32
|
+
"corpus.back.hint" = "Return to the mode menu."
|
|
33
|
+
|
|
34
|
+
"wizard.title" = "Register another reviewer"
|
|
35
|
+
"wizard.id.label" = "Method id (kebab-case)"
|
|
36
|
+
"wizard.label.label" = "Label (shown in the method list)"
|
|
37
|
+
"wizard.description.label" = "Description (what it reviews best)"
|
|
38
|
+
"wizard.drives.title" = "What runs this reviewer?"
|
|
39
|
+
"wizard.drives.tool.label" = "An installed tool"
|
|
40
|
+
"wizard.drives.tool.description" = "The method drives a capability: a command this machine can resolve, with an operation/adapter/hosts offer."
|
|
41
|
+
"wizard.drives.panel.label" = "Fresh host subprocesses (panel-shaped)"
|
|
42
|
+
"wizard.drives.panel.description" = "No tool: isolated passes by the host CLI itself. If this lands on the main seat the review is graded perspective_floor — its perspectives are then the only thing separating it from you."
|
|
43
|
+
"wizard.cap.name.label" = "Capability name"
|
|
44
|
+
"wizard.cap.command.label" = "Command (resolved on PATH, or ${backend} for the host CLI)"
|
|
45
|
+
"wizard.cap.install.label" = "Install line (runs via agent-bios install --with; '-' for none)"
|
|
46
|
+
"wizard.cap.operation.label" = "Operation (the join key between method and offer)"
|
|
47
|
+
"wizard.cap.adapter.title" = "Adapter (core protocol codec)"
|
|
48
|
+
"wizard.cap.hosts.title" = "Which host seats can this tool fill?"
|
|
49
|
+
"wizard.cap.hosts.both" = "both (codex and claude)"
|
|
50
|
+
"wizard.perspectives.label" = "Perspectives (comma-separated; one is enough for a reviewer that reads in its own context)"
|
|
51
|
+
"wizard.perspectives.refused" = "Name at least one perspective — this is what the reviewer is told to look for."
|
|
52
|
+
"wizard.trials.label" = "Trials (isolated passes; 1 or more)"
|
|
53
|
+
"wizard.trials.refused" = "Needs a whole number of 1 or more."
|
|
54
|
+
"wizard.instructions.label" = "Instructions (slots: {command} {model} {effort} {provider} {host} {service_tier} {perspectives} {trials} {severities})"
|
|
55
|
+
"wizard.emits.label" = "Severity values YOUR reviewer reports, verbatim (comma-separated)"
|
|
56
|
+
"wizard.map.title" = "Map to the canonical ladder — {value}"
|
|
57
|
+
"wizard.confirm.title" = "The reader accepted this block — write it?"
|
|
58
|
+
"wizard.confirm.target" = "Appends to: {target}"
|
|
59
|
+
"wizard.confirm.write.label" = "Write it"
|
|
60
|
+
"wizard.confirm.write.description" = "Append atomically; your file's existing content is untouched."
|
|
61
|
+
"wizard.confirm.edit.label" = "Edit answers again"
|
|
62
|
+
"wizard.refused.title" = "The reader refused this block"
|
|
63
|
+
"wizard.refused.header" = "Validation is the reader's own; its message, verbatim:"
|
|
64
|
+
"wizard.refused.edit.label" = "Edit answers (kept as defaults)"
|
|
65
|
+
"wizard.refused.edit.description" = "Walk the questions again; every answer is pre-filled."
|
|
66
|
+
"wizard.refused.contract.label" = "Show the file contract"
|
|
67
|
+
"wizard.raced.line" = "The methods file changed while the wizard was open; nothing was written. Re-run the registration."
|
|
68
|
+
"wizard.postwrite.line" = "Post-write re-read did not show the method; the file was restored from your shell's perspective — inspect it by hand."
|
|
69
|
+
"wizard.postwrite.raced.line" = "Post-write re-read did not show the method, and the file changed underneath — another writer's edit was left exactly as it stands, not rolled back. Inspect it by hand."
|
|
70
|
+
"wizard.done.line" = "Registered and live in this launcher: {method_id}"
|
|
71
|
+
|
|
72
|
+
# Custom settings hub — the tiers, review, and execution policy of one launch.
|
|
73
|
+
"custom.title" = "Custom settings"
|
|
74
|
+
"custom.main.label" = "Main tier: {tier}"
|
|
75
|
+
"custom.main.description" = "Choose the primary orchestrator used for this session."
|
|
76
|
+
"custom.review.label" = "Review setup: {setup}"
|
|
77
|
+
"custom.review.description" = "Choose the review routes requested when review gates fire."
|
|
78
|
+
"custom.policy.label" = "Execution policy: {policy}"
|
|
79
|
+
"custom.policy.description" = "Choose the host-specific permission or sandbox behavior."
|
|
80
|
+
"custom.tier.description" = "Edit the {tier} model and reasoning effort, then return here."
|
|
81
|
+
"custom.save.label" = "Save these settings globally and start"
|
|
82
|
+
"custom.save.description" = "Save this setup as a named preset in your user config for reuse elsewhere, then launch."
|
|
83
|
+
"custom.save.prompt" = "Save as preset name"
|
|
84
|
+
"custom.start.label" = "Start with these settings"
|
|
85
|
+
"custom.start.description" = "Confirm the complete setup shown above and continue to launch."
|
|
86
|
+
"custom.exit.label" = "Exit without launching"
|
|
87
|
+
"custom.exit.description" = "Discard this launch and return to the shell."
|
|
88
|
+
|
|
89
|
+
"tier.title" = "Main tier"
|
|
90
|
+
"tier.frontier.description" = "Highest-capability specialist for hard, high-impact work and deep review."
|
|
91
|
+
"tier.helm.description" = "Primary orchestrator for planning, delegation, integration, and final decisions."
|
|
92
|
+
"tier.workhorse.description" = "Cost-conscious executor for high-volume implementation and analysis."
|
|
93
|
+
"tier.sweep.description" = "Fast, low-cost worker for narrow searches, checks, and mechanical tasks."
|
|
94
|
+
|
|
95
|
+
"model.title" = "{tier} model"
|
|
96
|
+
"model.use.description" = "Use {model} as this tier's model."
|
|
97
|
+
"model.other.label" = "Other (enter a model id)"
|
|
98
|
+
"model.other.description" = "Type any model id the backend accepts, even if it is not in the catalog."
|
|
99
|
+
|
|
100
|
+
"effort.title" = "{tier} effort"
|
|
101
|
+
"effort.low.description" = "Minimize reasoning cost and latency for straightforward work."
|
|
102
|
+
"effort.medium.description" = "Use moderate reasoning for routine work with some ambiguity."
|
|
103
|
+
"effort.high.description" = "Spend more reasoning on complex implementation and analysis."
|
|
104
|
+
"effort.xhigh.description" = "Use deeper reasoning for difficult coordination and high-impact decisions."
|
|
105
|
+
"effort.max.description" = "Use the host's strongest standard reasoning mode for frontier work."
|
|
106
|
+
"effort.ultra.description" = "Use Codex Ultra for exceptionally deep, divisible frontier work."
|
|
107
|
+
"effort.unsupported.host" = "not supported by {host}"
|
|
108
|
+
"effort.unsupported.model" = "not supported by {model}"
|
|
109
|
+
|
|
110
|
+
"policy.codex.title" = "Codex execution policy"
|
|
111
|
+
"policy.codex.bypass.label" = "Bypass approvals and sandbox"
|
|
112
|
+
"policy.codex.bypass.description" = "Run without Codex approval or sandbox restrictions."
|
|
113
|
+
"policy.codex.workspace-write.label" = "Workspace write sandbox"
|
|
114
|
+
"policy.codex.workspace-write.description" = "Allow workspace writes under Codex's workspace-write sandbox."
|
|
115
|
+
"policy.codex.read-only.label" = "Read-only sandbox"
|
|
116
|
+
"policy.codex.read-only.description" = "Allow inspection while blocking file writes through the Codex sandbox."
|
|
117
|
+
"policy.codex.standard.label" = "Standard"
|
|
118
|
+
"policy.codex.standard.description" = "Pass no policy flag; use Codex's own default approval and sandbox behavior."
|
|
119
|
+
|
|
120
|
+
"policy.claude.title" = "Claude permission mode (not an OS sandbox)"
|
|
121
|
+
"policy.claude.bypassPermissions.label" = "Bypass permissions"
|
|
122
|
+
"policy.claude.bypassPermissions.description" = "Skip Claude permission prompts; this is not an OS sandbox setting."
|
|
123
|
+
"policy.claude.acceptEdits.label" = "Accept edits"
|
|
124
|
+
"policy.claude.acceptEdits.description" = "Automatically accept file edits while retaining other permission checks."
|
|
125
|
+
"policy.claude.auto.label" = "Auto permissions"
|
|
126
|
+
"policy.claude.auto.description" = "Use Claude's automatic permission mode."
|
|
127
|
+
"policy.claude.manual.label" = "Manual permissions"
|
|
128
|
+
"policy.claude.manual.description" = "Ask before actions according to Claude's manual permission flow."
|
|
129
|
+
"policy.claude.dontAsk.label" = "Do not ask"
|
|
130
|
+
"policy.claude.dontAsk.description" = "Use Claude's dontAsk permission mode."
|
|
131
|
+
"policy.claude.plan.label" = "Plan mode"
|
|
132
|
+
"policy.claude.plan.description" = "Start Claude in planning mode without direct implementation."
|
|
133
|
+
"policy.claude.standard.label" = "Standard"
|
|
134
|
+
"policy.claude.standard.description" = "Pass no policy flag; use Claude's own default permission prompts."
|
|
135
|
+
|
|
136
|
+
# Session Distill area — corpus content versions, packages, and rollback.
|
|
137
|
+
"distill.title" = "Session Distill"
|
|
138
|
+
"distill.start.label" = "Start a session distill run"
|
|
139
|
+
"distill.start.description" = "Launch with the Session distill preset: the mission line directs the session to the workflow guide and the SSOT."
|
|
140
|
+
"distill.start.unavailable" = "preset {preset} not configured"
|
|
141
|
+
"distill.packages.label" = "Corpus packages"
|
|
142
|
+
"distill.packages.description" = "What corpus content is applied, as installable packages (v1: single core corpus)."
|
|
143
|
+
"distill.versions.label" = "Versions & rollback"
|
|
144
|
+
"distill.versions.description" = "Corpus content versions (distinct from system deployment); roll the corpus back or forward."
|
|
145
|
+
"distill.back.label" = "Back"
|
|
146
|
+
"distill.back.hint" = "Return to Session Distill."
|
|
147
|
+
"distill.back.launch" = "Return to the launch menu."
|
|
148
|
+
"distill.version.current" = "{version} (current)"
|
|
149
|
+
"distill.version.description" = "closed {closed} · commit {commit} · {summary}"
|
|
150
|
+
"distill.version.applied.title" = "{version} is the currently applied version"
|
|
151
|
+
"distill.version.applied.line" = "Select a different version to roll back or forward."
|
|
152
|
+
"distill.package.core.label" = "core corpus @ {version}"
|
|
153
|
+
"distill.package.core.description" = "All corpus domains in one package until domain packaging lands (backlog). Layers: {layers}. Per-domain selection, versions, and rollback will appear here."
|
|
154
|
+
"distill.rollback.title" = "Roll back corpus to {version}?"
|
|
155
|
+
"distill.rollback.cancel.label" = "Cancel"
|
|
156
|
+
"distill.rollback.cancel.description" = "Keep the currently deployed corpus content."
|
|
157
|
+
"distill.rollback.confirm.label" = "Roll back to {version}"
|
|
158
|
+
"distill.rollback.confirm.description" = "Re-deploys globals/guides/hooks as of that corpus version. System deployment (launcher, wrappers) stays current. Roll forward again by selecting the latest version."
|
|
159
|
+
"distill.rollback.done" = "Rollback complete."
|
|
160
|
+
"distill.rollback.failed" = "Rollback FAILED."
|
|
161
|
+
|
|
162
|
+
# Corpus status panel — shared by the Session Distill area and the checklist.
|
|
163
|
+
# Labels are padded to a column measured in display cells, so a translation may
|
|
164
|
+
# be any width without ragging the panel.
|
|
165
|
+
"panel.unprojected" = "corpus status not projected yet — run: agent-bios install"
|
|
166
|
+
"panel.version.label" = "Applied version"
|
|
167
|
+
"panel.mechanisms.label" = "Mechanisms"
|
|
168
|
+
"panel.ledger.label" = "Ledger"
|
|
169
|
+
"panel.domains.label" = "Domains"
|
|
170
|
+
"panel.rolled-back" = "(ROLLED BACK; latest is {latest})"
|
|
171
|
+
"panel.layers.none" = "none"
|
|
172
|
+
"panel.ledger.value" = "placed {placed} · incubating {incubating} · versions {versions}"
|
|
173
|
+
"panel.domains.unset" = "(none selected yet)"
|
|
174
|
+
"panel.last-apply" = "⚠ LAST APPLY {outcome} at {at} — requested: {requested}"
|
|
175
|
+
"corpus.core-only" = "core+infra only"
|
|
176
|
+
|
|
177
|
+
# Numbered-prompt chrome. These were printed as English literals from the renderer
|
|
178
|
+
# while every line of content around them was translated, so the Korean and Japanese
|
|
179
|
+
# screens answered in one language and asked in another.
|
|
180
|
+
"prompt.select" = "Select [{default}] ({actions}): "
|
|
181
|
+
"prompt.back" = "b back"
|
|
182
|
+
"prompt.cancel" = "q cancel"
|
|
183
|
+
"prompt.unavailable" = "Unavailable"
|
|
184
|
+
"prompt.unavailable.retry" = "Unavailable: {reason}. Select an enabled option."
|
|
185
|
+
"prompt.no.previous" = "No previous menu. Use q to cancel."
|
|
186
|
+
"prompt.corpus.header" = "-- Corpus status --"
|