agent-bios 0.18.0 → 0.19.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/DEPENDENCIES.md +236 -80
- package/INSTALL.md +112 -0
- package/README.md +187 -524
- package/claude/CLAUDE.md +1 -1
- package/claude/guides/cli-multi-model-workflow.md +1 -1
- package/claude/guides/learning-flow.md +23 -12
- package/claude/guides/session-distill-workflow.md +22 -12
- package/claude/skills/understand/SKILL.md +52 -22
- package/codex/AGENTS.md +1 -1
- package/codex/guides/cli-multi-model-workflow.md +1 -1
- package/codex/guides/learning-flow.md +23 -12
- package/codex/guides/session-distill-workflow.md +22 -12
- package/compose/app_bridge/SKILL.md +75 -0
- package/compose/app_bridge/agents/openai.yaml +2 -0
- package/compose/app_bridge/scripts/bridge.py +76 -0
- package/compose/bootstrap/SKILL.md +12 -1
- package/compose/corpus.py +31 -9
- package/compose/corpus_app.py +456 -0
- package/compose/corpus_import.py +529 -0
- package/compose/corpus_install.py +202 -18
- package/compose/corpus_session.py +27 -0
- package/compose/corpus_setup.py +676 -0
- package/compose/corpus_setup_cli.py +585 -0
- package/compose/corpus_setup_i18n.py +324 -0
- package/compose/corpus_setup_ui.py +647 -0
- package/compose/corpus_store.py +213 -32
- package/compose/corpus_transaction.py +43 -10
- package/compose/corpus_ui_runtime.py +278 -0
- package/compose/corpus_understand.py +173 -22
- package/compose/setup/START.md +158 -0
- package/compose/ui_runtime/linkify_it_py-2.2.0-py3-none-any.whl +0 -0
- package/compose/ui_runtime/manifest.json +238 -0
- package/compose/ui_runtime/markdown_it_py-4.2.0-py3-none-any.whl +0 -0
- package/compose/ui_runtime/mdit_py_plugins-0.6.1-py3-none-any.whl +0 -0
- package/compose/ui_runtime/mdurl-0.1.2-py3-none-any.whl +0 -0
- package/compose/ui_runtime/platformdirs-4.11.8-py3-none-any.whl +0 -0
- package/compose/ui_runtime/pygments-2.21.0-py3-none-any.whl +0 -0
- package/compose/ui_runtime/rich-15.0.0-py3-none-any.whl +0 -0
- package/compose/ui_runtime/textual-8.2.8-py3-none-any.whl +0 -0
- package/compose/ui_runtime/typing_extensions-4.16.0-py3-none-any.whl +0 -0
- package/docs/advanced-launch.md +131 -0
- package/docs/assets/corpus-studio.svg +227 -0
- package/docs/corpus.md +117 -0
- package/docs/recovery.md +201 -0
- package/docs/session-model.md +120 -0
- package/docs/setup.md +206 -0
- package/docs/understand.md +88 -0
- package/install.sh +75 -46
- package/launch/agent-launch.py +99 -52
- package/launch/provision-venv.sh +44 -13
- package/learn/collect-learning.py +14 -5
- package/learn/learning.schema.json +2 -2
- package/package.json +14 -2
- package/provenance.json +1 -1
- package/wrappers/claude-run.sh +10 -13
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Set up agent-bios through conversation
|
|
2
|
+
|
|
3
|
+
This guide uses the same installation controller as the terminal wizard. The
|
|
4
|
+
conversation collects choices and presents effects; `setup` validates and executes
|
|
5
|
+
them. It needs local command and file access on the intended machine, Bash, and
|
|
6
|
+
Python 3.11 or newer. Codex CLI, an additional model login, and Textual are not
|
|
7
|
+
requirements for this route.
|
|
8
|
+
|
|
9
|
+
## Start without an installed skill
|
|
10
|
+
|
|
11
|
+
The user can request installation using the public repository link. Follow the
|
|
12
|
+
repository's root `INSTALL.md` to obtain and verify the source, select the language
|
|
13
|
+
and run `setup start`. The agent resolves paths; the user does not need a checkout,
|
|
14
|
+
an installed skill or a long installation prompt. An explicitly selected trusted
|
|
15
|
+
local source remains valid. Preserve the acquisition's exact revision and location
|
|
16
|
+
for the review and any resume. If the selected public revision lacks conversation
|
|
17
|
+
setup, report that limitation instead of invoking an older installation route.
|
|
18
|
+
|
|
19
|
+
## Choose the entrypoint and language
|
|
20
|
+
|
|
21
|
+
For an already registered app bridge, run `python3 "$BRIDGE" setup start`, where
|
|
22
|
+
`BRIDGE` is the absolute helper path beside the loaded skill. Read the returned
|
|
23
|
+
`guide_path`. For an acquired source, use the verified `setup_argv` from its start
|
|
24
|
+
response. Keep using that entrypoint and the reported private roots throughout
|
|
25
|
+
the review. Shell variables from one app tool call do not persist to the next;
|
|
26
|
+
pass absolute arguments or set the variable in the same call.
|
|
27
|
+
|
|
28
|
+
`start` returns language choices, a suggested language and execution context without
|
|
29
|
+
probing dependencies or creating private setup state. Confirm English, 한국어 or
|
|
30
|
+
日本語, honoring an explicit language already chosen by the user, before `inspect`.
|
|
31
|
+
Use the selected language for questions and explanations; retain identifiers,
|
|
32
|
+
paths, versions, raw diagnostics and command arguments exactly. Use a native
|
|
33
|
+
question control when the current host exposes one for this interaction, or ask
|
|
34
|
+
ordinary concise questions. The conversation does not require custom widgets.
|
|
35
|
+
|
|
36
|
+
The commands below use `agent-bios` as shorthand for that verified entrypoint. In
|
|
37
|
+
an app bridge call, replace `agent-bios setup` with `python3 "$BRIDGE" setup`.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
agent-bios setup inspect --language ko
|
|
41
|
+
agent-bios setup discover --project-root /absolute/project
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Collect and review the choices
|
|
45
|
+
|
|
46
|
+
Use `inspect`'s `default_plan`, inventory and choices. Present all dependency
|
|
47
|
+
capabilities with readiness, purpose and installation destination. Ready dependencies
|
|
48
|
+
are observations, not requested actions: include only chosen missing dependencies
|
|
49
|
+
with returned recipes in `dependencies`. Do not create shell recipes from model
|
|
50
|
+
memory. A dependency's presence does not authorize installing another one.
|
|
51
|
+
|
|
52
|
+
`retained_corpus` reports local personal instructions and host learning records
|
|
53
|
+
already stored on this device as `{target, label, item_count}`; localized labels are
|
|
54
|
+
in `display.retained_corpus`. Present this separately as a read-only storage view,
|
|
55
|
+
not as extra installation choices or evidence of active use. Counts cover stored,
|
|
56
|
+
nonremoved items regardless of enable overrides or current host/project eligibility,
|
|
57
|
+
and reveal no bodies. Do not copy these rows into `targets`; use the source `choices`
|
|
58
|
+
and the user's activation-policy decision.
|
|
59
|
+
|
|
60
|
+
Collect the six plan fields without asking the user to author JSON:
|
|
61
|
+
|
|
62
|
+
- `selection_mode` and `targets`: keep saved policy, no active corpus, all available
|
|
63
|
+
corpus, or specific returned package/domain/item targets. Start from the returned
|
|
64
|
+
default. No active corpus retains private library assets but delivers no corpus.
|
|
65
|
+
- `dependencies`: chosen installable inventory IDs; an empty list installs none.
|
|
66
|
+
- `app_bridge`: the explicit **Connect to the Codex app** choice, adding `$agent-bios`
|
|
67
|
+
for setup and personal instruction management. Registration enables discovery only;
|
|
68
|
+
each task still requires its own explicit corpus use.
|
|
69
|
+
- `project_roots` and `import_paths`: absolute project folders and explicitly
|
|
70
|
+
selected files from discovery. Capture is independent of corpus selection.
|
|
71
|
+
|
|
72
|
+
Keep saved policy uses `selection_mode: null` and `targets: null`. No active corpus
|
|
73
|
+
uses `"none"` and `[]`. Explicit choices use `"selected"` and their target list;
|
|
74
|
+
all available corpus uses `"selected"` and `["all"]`.
|
|
75
|
+
|
|
76
|
+
Discovery checks known global instruction locations and the specified project
|
|
77
|
+
roots. Show detected sources before selecting them. Capture preserves originals
|
|
78
|
+
and prepares private evidence for later model review; it is not an automatically
|
|
79
|
+
optimized personal corpus. Read the import procedure only when the user requests
|
|
80
|
+
that subsequent review.
|
|
81
|
+
|
|
82
|
+
Save choices to a new caller-owned artifact. Run `plan` and save its complete
|
|
83
|
+
stdout bytes to another new caller-owned artifact:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
agent-bios setup plan --language ko --input /absolute/choices.json > /absolute/review.json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The returned review envelope contains `review_id`, `context`, `language`,
|
|
90
|
+
`preview` and `summary`. Keep the entire envelope; do not reconstruct it from the
|
|
91
|
+
summary, copy only `preview`, change its IDs, or accept truncated output. Show the
|
|
92
|
+
concrete private paths, selected dependency commands/destinations, corpus policy,
|
|
93
|
+
app discovery change and selected capture sources. Keep the exact artifact
|
|
94
|
+
available for inspection. Preparing these caller-owned files is separate from
|
|
95
|
+
applying installation effects.
|
|
96
|
+
|
|
97
|
+
Apply the saved envelope only when its concrete choices are authorized. Existing
|
|
98
|
+
authorization for those exact choices does not require another confirmation.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
agent-bios setup apply --input /absolute/review.json --review-id REVIEW_ID --yes
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The engine checks the reviewed context, source bytes, private state and package
|
|
105
|
+
before its effects. If the review is stale, show a fresh plan and explain the
|
|
106
|
+
changed effects; do not bypass checks. Report completed dependencies, private
|
|
107
|
+
installation, bridge registration and pending import separately. A partial failure
|
|
108
|
+
or cancellation does not roll back completed external package installations.
|
|
109
|
+
|
|
110
|
+
## Continue or resume
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
agent-bios setup status --review-id REVIEW_ID
|
|
114
|
+
agent-bios setup resume --review-id REVIEW_ID
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
These commands do not execute the remaining installation. `status` reports the
|
|
118
|
+
recorded attempt in `receipt`, `result` and `state`; a past `complete` result does
|
|
119
|
+
not establish the current runtime's health. Inspect `handoff` for current readiness
|
|
120
|
+
and any `needs_action`. Package verification, full runtime verification and helper
|
|
121
|
+
verification are independent observations; one does not prove the others.
|
|
122
|
+
`replayed: true` means the existing attempt was returned without executing it again.
|
|
123
|
+
If `handoff.verification` is `"deferred"`, its readiness fields are null: they are
|
|
124
|
+
unverified, not false. Status can return recorded progress while setup holds the
|
|
125
|
+
private-state lock. Follow `needs_action` and retry status when that operation has
|
|
126
|
+
settled; require checked readiness before using a handoff to continue.
|
|
127
|
+
|
|
128
|
+
`resume` adds `remaining_plan`, `review` and `needs_action`. When `review` is
|
|
129
|
+
non-null, save that entire nested review object to a new caller-owned JSON artifact
|
|
130
|
+
using deterministic JSON extraction. Do not pass the enclosing status response or
|
|
131
|
+
`remaining_plan` to Apply. Preserve every review field, including `continuation`,
|
|
132
|
+
and use the nested review's own `review_id`. Review its remaining effects before
|
|
133
|
+
applying within the user's authorization. If `review` is null, inspect the stated
|
|
134
|
+
reason; unknown prior effects are not permission to replay package installation.
|
|
135
|
+
When `resumed_from` is present, the response has followed a receipt's `continued_by`
|
|
136
|
+
link to an existing continuation. Report the returned child `review_id` rather than
|
|
137
|
+
assuming the original ID is current.
|
|
138
|
+
|
|
139
|
+
After an explicit app registration succeeds, use `handoff.helper_argv` only when
|
|
140
|
+
`helper_usable` is true, appending `setup` and the desired operation.
|
|
141
|
+
`helper_verified` confirms helper bytes, while `helper_usable` also requires a
|
|
142
|
+
verified package and no pending work blocking it. Otherwise inspect `needs_action`
|
|
143
|
+
and current readiness before continuing. A usable helper can continue in this task
|
|
144
|
+
even if native skill discovery has not refreshed. Without a
|
|
145
|
+
verified helper, a verified runtime's `setup_argv` already includes `setup`;
|
|
146
|
+
`cli_argv` does not. Supply the returned `environment` with each call. These arrays
|
|
147
|
+
are command arguments, not shell snippets. Finish applying an existing review
|
|
148
|
+
through its reviewed entrypoint/context; changing entrypoints requires a fresh
|
|
149
|
+
review. Status and subsequent setup can use the verified handoff.
|
|
150
|
+
Do not create a duplicate personal skill or edit host discovery settings to force
|
|
151
|
+
refresh. Once discovered, `$agent-bios` is the ordinary entrypoint. Registration
|
|
152
|
+
on disk is not proof of discovery or corpus loading.
|
|
153
|
+
|
|
154
|
+
If capture completed, report its actual capture ID and returned next action. Its
|
|
155
|
+
semantic review, proposed consumption placement and revision-checked import are
|
|
156
|
+
separate from installation. Setup enables no hooks, native agent registration,
|
|
157
|
+
permissions or edits to global/project instruction files. Each app task requires
|
|
158
|
+
its own explicit corpus use; neither setup nor opening the app performs it.
|
|
Binary file
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"source": "pypi",
|
|
4
|
+
"python_requirement": ">=3.11",
|
|
5
|
+
"root_requirement": "textual==8.2.8",
|
|
6
|
+
"packages": [
|
|
7
|
+
{
|
|
8
|
+
"name": "linkify-it-py",
|
|
9
|
+
"version": "2.2.0",
|
|
10
|
+
"filename": "linkify_it_py-2.2.0-py3-none-any.whl",
|
|
11
|
+
"sha256": "3adc40eb5af300b2605fcfdb968c24e1d780a90f1f2221af7c15e5111e94d443",
|
|
12
|
+
"size_bytes": 21971,
|
|
13
|
+
"expanded_bytes": 66766,
|
|
14
|
+
"modules": [
|
|
15
|
+
"linkify_it"
|
|
16
|
+
],
|
|
17
|
+
"license_files": [
|
|
18
|
+
"linkify_it_py-2.2.0.dist-info/licenses/LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"requires_python": ">=3.10",
|
|
21
|
+
"requires_dist": [
|
|
22
|
+
"pytest; extra == \"test\"",
|
|
23
|
+
"coverage; extra == \"test\"",
|
|
24
|
+
"pytest-cov; extra == \"test\"",
|
|
25
|
+
"pytest-timeout; extra == \"test\"",
|
|
26
|
+
"pre-commit; extra == \"dev\"",
|
|
27
|
+
"isort; extra == \"dev\"",
|
|
28
|
+
"flake8; extra == \"dev\"",
|
|
29
|
+
"black; extra == \"dev\"",
|
|
30
|
+
"pyproject-flake8; extra == \"dev\"",
|
|
31
|
+
"pytest; extra == \"benchmark\"",
|
|
32
|
+
"pytest-benchmark; extra == \"benchmark\"",
|
|
33
|
+
"sphinx; extra == \"doc\"",
|
|
34
|
+
"sphinx_book_theme; extra == \"doc\"",
|
|
35
|
+
"myst-parser; extra == \"doc\""
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "markdown-it-py",
|
|
40
|
+
"version": "4.2.0",
|
|
41
|
+
"filename": "markdown_it_py-4.2.0-py3-none-any.whl",
|
|
42
|
+
"sha256": "9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a",
|
|
43
|
+
"size_bytes": 91687,
|
|
44
|
+
"expanded_bytes": 244684,
|
|
45
|
+
"modules": [
|
|
46
|
+
"markdown_it"
|
|
47
|
+
],
|
|
48
|
+
"license_files": [
|
|
49
|
+
"markdown_it_py-4.2.0.dist-info/licenses/LICENSE",
|
|
50
|
+
"markdown_it_py-4.2.0.dist-info/licenses/LICENSE.markdown-it"
|
|
51
|
+
],
|
|
52
|
+
"requires_python": ">=3.10",
|
|
53
|
+
"requires_dist": [
|
|
54
|
+
"mdurl~=0.1",
|
|
55
|
+
"psutil ; extra == \"benchmarking\"",
|
|
56
|
+
"pytest ; extra == \"benchmarking\"",
|
|
57
|
+
"pytest-benchmark ; extra == \"benchmarking\"",
|
|
58
|
+
"commonmark~=0.9 ; extra == \"compare\"",
|
|
59
|
+
"markdown~=3.4 ; extra == \"compare\"",
|
|
60
|
+
"mistletoe~=1.0 ; extra == \"compare\"",
|
|
61
|
+
"mistune~=3.0 ; extra == \"compare\"",
|
|
62
|
+
"panflute~=2.3 ; extra == \"compare\"",
|
|
63
|
+
"markdown-it-pyrs ; extra == \"compare\"",
|
|
64
|
+
"linkify-it-py>=1,<3 ; extra == \"linkify\"",
|
|
65
|
+
"mdit-py-plugins>=0.5.0 ; extra == \"plugins\"",
|
|
66
|
+
"gprof2dot ; extra == \"profiling\"",
|
|
67
|
+
"mdit-py-plugins>=0.5.0 ; extra == \"rtd\"",
|
|
68
|
+
"myst-parser ; extra == \"rtd\"",
|
|
69
|
+
"pyyaml ; extra == \"rtd\"",
|
|
70
|
+
"sphinx ; extra == \"rtd\"",
|
|
71
|
+
"sphinx-copybutton ; extra == \"rtd\"",
|
|
72
|
+
"sphinx-design ; extra == \"rtd\"",
|
|
73
|
+
"sphinx-book-theme~=1.0 ; extra == \"rtd\"",
|
|
74
|
+
"jupyter_sphinx ; extra == \"rtd\"",
|
|
75
|
+
"ipykernel ; extra == \"rtd\"",
|
|
76
|
+
"coverage ; extra == \"testing\"",
|
|
77
|
+
"pytest ; extra == \"testing\"",
|
|
78
|
+
"pytest-cov ; extra == \"testing\"",
|
|
79
|
+
"pytest-regressions ; extra == \"testing\"",
|
|
80
|
+
"pytest-timeout ; extra == \"testing\"",
|
|
81
|
+
"requests ; extra == \"testing\""
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "mdit-py-plugins",
|
|
86
|
+
"version": "0.6.1",
|
|
87
|
+
"filename": "mdit_py_plugins-0.6.1-py3-none-any.whl",
|
|
88
|
+
"sha256": "214c82fb2ac524472ab6a5bcab1de80f73b50443e187f401bfd77efbc7c6481d",
|
|
89
|
+
"size_bytes": 66663,
|
|
90
|
+
"expanded_bytes": 172036,
|
|
91
|
+
"modules": [
|
|
92
|
+
"mdit_py_plugins"
|
|
93
|
+
],
|
|
94
|
+
"license_files": [
|
|
95
|
+
"mdit_py_plugins-0.6.1.dist-info/licenses/LICENSE"
|
|
96
|
+
],
|
|
97
|
+
"requires_python": ">=3.10",
|
|
98
|
+
"requires_dist": [
|
|
99
|
+
"markdown-it-py>=2.0.0,<5.0.0",
|
|
100
|
+
"pre-commit ; extra == \"code-style\"",
|
|
101
|
+
"myst-parser ; extra == \"rtd\"",
|
|
102
|
+
"sphinx-book-theme ; extra == \"rtd\"",
|
|
103
|
+
"coverage ; extra == \"testing\"",
|
|
104
|
+
"pytest ; extra == \"testing\"",
|
|
105
|
+
"pytest-cov ; extra == \"testing\"",
|
|
106
|
+
"pytest-regressions ; extra == \"testing\"",
|
|
107
|
+
"pytest-timeout ; extra == \"testing\""
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "mdurl",
|
|
112
|
+
"version": "0.1.2",
|
|
113
|
+
"filename": "mdurl-0.1.2-py3-none-any.whl",
|
|
114
|
+
"sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
|
|
115
|
+
"size_bytes": 9979,
|
|
116
|
+
"expanded_bytes": 23308,
|
|
117
|
+
"modules": [
|
|
118
|
+
"mdurl"
|
|
119
|
+
],
|
|
120
|
+
"license_files": [
|
|
121
|
+
"mdurl-0.1.2.dist-info/LICENSE"
|
|
122
|
+
],
|
|
123
|
+
"requires_python": ">=3.7",
|
|
124
|
+
"requires_dist": []
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "platformdirs",
|
|
128
|
+
"version": "4.11.8",
|
|
129
|
+
"filename": "platformdirs-4.11.8-py3-none-any.whl",
|
|
130
|
+
"sha256": "52f2f181bbfde907966932cc8312d967d02976422d66d537ea16092b8e291081",
|
|
131
|
+
"size_bytes": 24027,
|
|
132
|
+
"expanded_bytes": 129535,
|
|
133
|
+
"modules": [
|
|
134
|
+
"platformdirs"
|
|
135
|
+
],
|
|
136
|
+
"license_files": [
|
|
137
|
+
"platformdirs-4.11.8.dist-info/licenses/LICENSE"
|
|
138
|
+
],
|
|
139
|
+
"requires_python": ">=3.10",
|
|
140
|
+
"requires_dist": []
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"name": "pygments",
|
|
144
|
+
"version": "2.21.0",
|
|
145
|
+
"filename": "pygments-2.21.0-py3-none-any.whl",
|
|
146
|
+
"sha256": "2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9",
|
|
147
|
+
"size_bytes": 1250147,
|
|
148
|
+
"expanded_bytes": 4621166,
|
|
149
|
+
"modules": [
|
|
150
|
+
"pygments"
|
|
151
|
+
],
|
|
152
|
+
"license_files": [
|
|
153
|
+
"pygments-2.21.0.dist-info/licenses/AUTHORS",
|
|
154
|
+
"pygments-2.21.0.dist-info/licenses/LICENSE"
|
|
155
|
+
],
|
|
156
|
+
"requires_python": ">=3.9",
|
|
157
|
+
"requires_dist": [
|
|
158
|
+
"colorama>=0.4.6; extra == 'windows-terminal'"
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "rich",
|
|
163
|
+
"version": "15.0.0",
|
|
164
|
+
"filename": "rich-15.0.0-py3-none-any.whl",
|
|
165
|
+
"sha256": "33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb",
|
|
166
|
+
"size_bytes": 310654,
|
|
167
|
+
"expanded_bytes": 1245816,
|
|
168
|
+
"modules": [
|
|
169
|
+
"rich"
|
|
170
|
+
],
|
|
171
|
+
"license_files": [
|
|
172
|
+
"rich-15.0.0.dist-info/licenses/LICENSE"
|
|
173
|
+
],
|
|
174
|
+
"requires_python": ">=3.9.0",
|
|
175
|
+
"requires_dist": [
|
|
176
|
+
"ipywidgets (>=7.5.1,<9) ; extra == \"jupyter\"",
|
|
177
|
+
"markdown-it-py (>=2.2.0)",
|
|
178
|
+
"pygments (>=2.13.0,<3.0.0)"
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "textual",
|
|
183
|
+
"version": "8.2.8",
|
|
184
|
+
"filename": "textual-8.2.8-py3-none-any.whl",
|
|
185
|
+
"sha256": "267375fd402dc8d981457212efa71f0e3365fd17bba144ba9bb3ed7563cb374a",
|
|
186
|
+
"size_bytes": 731418,
|
|
187
|
+
"expanded_bytes": 2827661,
|
|
188
|
+
"modules": [
|
|
189
|
+
"textual"
|
|
190
|
+
],
|
|
191
|
+
"license_files": [
|
|
192
|
+
"textual-8.2.8.dist-info/licenses/LICENSE"
|
|
193
|
+
],
|
|
194
|
+
"requires_python": ">=3.9,<4.0",
|
|
195
|
+
"requires_dist": [
|
|
196
|
+
"markdown-it-py[linkify] (>=2.1.0)",
|
|
197
|
+
"mdit-py-plugins",
|
|
198
|
+
"platformdirs (>=3.6.0,<5)",
|
|
199
|
+
"pygments (>=2.19.2,<3.0.0)",
|
|
200
|
+
"rich (>=14.2.0)",
|
|
201
|
+
"tree-sitter (>=0.25.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
202
|
+
"tree-sitter-bash (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
203
|
+
"tree-sitter-css (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
204
|
+
"tree-sitter-go (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
205
|
+
"tree-sitter-html (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
206
|
+
"tree-sitter-java (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
207
|
+
"tree-sitter-javascript (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
208
|
+
"tree-sitter-json (>=0.24.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
209
|
+
"tree-sitter-markdown (>=0.3.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
210
|
+
"tree-sitter-python (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
211
|
+
"tree-sitter-regex (>=0.24.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
212
|
+
"tree-sitter-rust (>=0.23.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
213
|
+
"tree-sitter-sql (>=0.3.11) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
214
|
+
"tree-sitter-toml (>=0.6.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
215
|
+
"tree-sitter-xml (>=0.7.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
216
|
+
"tree-sitter-yaml (>=0.6.0) ; (python_version >= \"3.10\") and (extra == \"syntax\")",
|
|
217
|
+
"typing-extensions (>=4.4.0,<5.0.0)"
|
|
218
|
+
]
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"name": "typing-extensions",
|
|
222
|
+
"version": "4.16.0",
|
|
223
|
+
"filename": "typing_extensions-4.16.0-py3-none-any.whl",
|
|
224
|
+
"sha256": "481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8",
|
|
225
|
+
"size_bytes": 45571,
|
|
226
|
+
"expanded_bytes": 182767,
|
|
227
|
+
"modules": [
|
|
228
|
+
"typing_extensions"
|
|
229
|
+
],
|
|
230
|
+
"license_files": [
|
|
231
|
+
"typing_extensions-4.16.0.dist-info/licenses/LICENSE"
|
|
232
|
+
],
|
|
233
|
+
"requires_python": ">=3.9",
|
|
234
|
+
"requires_dist": []
|
|
235
|
+
}
|
|
236
|
+
],
|
|
237
|
+
"bundle_id": "f86c64655f21c67f45a1b43cf5ea16da5f4b6957a5ce0b8b222e8e8f8d2c1194"
|
|
238
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Launch configuration
|
|
2
|
+
|
|
3
|
+
[← Overview](../README.md) · [Setup](setup.md) · [Corpus](corpus.md) · [Sessions](session-model.md) · [Recovery](recovery.md) · [Launch](advanced-launch.md) · [Understand!](understand.md)
|
|
4
|
+
|
|
5
|
+
Inspect settings before launching. Some Builder and internal-wrapper defaults use permission bypass. A configured review or registered hook is not evidence that it ran.
|
|
6
|
+
|
|
7
|
+
## Preflight and settings
|
|
8
|
+
|
|
9
|
+
The preflight keeps the current setup above each choice, supports the configured model
|
|
10
|
+
catalog and **Other**, and offers Builder presets, Software Engineer / Vanilla,
|
|
11
|
+
Session distill, Custom, Language, and **Corpus Studio**. Studio is the same backend as
|
|
12
|
+
`agent-bios corpus`: it searches and renders the library, edits Markdown and
|
|
13
|
+
consumption surface, and requires Preview then revision-bound Apply. Packaged
|
|
14
|
+
entrypoints validate and temporarily extract their included UI bundle before loading
|
|
15
|
+
Rich/Textual. A missing or corrupt bundle fails explicitly; no preinstalled Textual
|
|
16
|
+
environment is required. Interface catalogs change only human UI text;
|
|
17
|
+
model-consumed corpus remains English.
|
|
18
|
+
|
|
19
|
+
Every arrow-key TUI selection screen keeps the complete current setup in a fixed top
|
|
20
|
+
panel, followed by the highlighted option's description and the option list. Custom
|
|
21
|
+
opens a persistent settings hub for the main tier, review setup, host policy, global instruction files, and tier
|
|
22
|
+
bindings. Every edit returns to that hub; **Start with these settings** is the final
|
|
23
|
+
launch confirmation, while **Exit without launching** cancels it. When the numbered
|
|
24
|
+
launcher flow is selected with `--no-tui`, `b` is the back command. These controls configure an explicit
|
|
25
|
+
agent-bios launch; they do not restore global instruction installation. Optional
|
|
26
|
+
shell wiring is controlled separately from the root **Shell connection** menu.
|
|
27
|
+
|
|
28
|
+
## Tiers and restricted seats
|
|
29
|
+
|
|
30
|
+
Tier defaults come from the launch profile and the guides' Environment Binding
|
|
31
|
+
tables. Claude Haiku 4.5 has no effort parameter: its tier entry, native agent
|
|
32
|
+
definition and projected call omit it. SWEEP is one-rule-per-item read-only work.
|
|
33
|
+
As a main seat it disables child delegation and requires review off (for example,
|
|
34
|
+
Solo); a requested review needs a HELM or WORKHORSE main instead. Codex SWEEP mains
|
|
35
|
+
use a read-only sandbox; Claude SWEEP mains use restricted Read/Glob/Grep tools
|
|
36
|
+
and an empty, strict MCP configuration. Other main roles retain their selected
|
|
37
|
+
policies, and explicit personal model/effort overrides remain available.
|
|
38
|
+
|
|
39
|
+
## Global instruction files
|
|
40
|
+
|
|
41
|
+
Activated sessions include the user's global instruction documents by default.
|
|
42
|
+
**Custom → My global instruction files** can exclude them, or use
|
|
43
|
+
`agent-launch --preset balanced --exclude-global-instructions claude`. The CLI flag
|
|
44
|
+
sets Custom's initial choice; the final visible choice is what gets saved and run.
|
|
45
|
+
The choice is retained by managed resume, which cannot change it through a new flag.
|
|
46
|
+
|
|
47
|
+
Exclusion currently supports Claude Code 2.1.263 and newer: a per-call
|
|
48
|
+
`claudeMdExcludes` setting omits the global `CLAUDE.md`, its imports, and user
|
|
49
|
+
`rules/`. Project instructions and project memory remain, as do native settings,
|
|
50
|
+
authentication, tool registrations, and permissions. No global file is rewritten.
|
|
51
|
+
An existing CLI `--settings` argument, ambiguous relative/empty configuration home,
|
|
52
|
+
symlinks, glob characters in the configuration path, or a project/global file alias
|
|
53
|
+
is refused rather than replaced or silently included. Current Codex exclusion is
|
|
54
|
+
unavailable; its native loader has no selective global-document switch. Vanilla
|
|
55
|
+
and ordinary CLI launches retain their native loading behavior.
|
|
56
|
+
This controls automatic instruction loading, not file access or memory erasure:
|
|
57
|
+
tools can still open files, and project memory or prior conversation content can
|
|
58
|
+
contain instructions independently of the excluded documents.
|
|
59
|
+
|
|
60
|
+
## Native hooks and agents
|
|
61
|
+
|
|
62
|
+
Native corpus consumption is default-off. `agent-bios corpus snapshot --host codex
|
|
63
|
+
--native --json` (or `--host claude`) composes a preview; `agent-launch --corpus-native`
|
|
64
|
+
opts one configured session into selected corpus hooks. Both hosts use the same
|
|
65
|
+
installed Python carrier and typed `event`/`matcher` binding. Authoring accepts the
|
|
66
|
+
combined event vocabulary; compilation reports an event unsupported by the selected
|
|
67
|
+
host without changing its name or executing it through another event.
|
|
68
|
+
|
|
69
|
+
Claude receives a namespaced plugin per CorpusRef through `--plugin-dir`. Codex
|
|
70
|
+
receives inline `hooks.<Event>` config through per-session `-c` arguments. Existing
|
|
71
|
+
user, project and session hooks remain present, and resume retains the pin's exact
|
|
72
|
+
registrations. Neither adapter installs global hooks. Codex hook enablement and native
|
|
73
|
+
trust still apply: new or changed definitions need review in `/hooks`. Discovery is
|
|
74
|
+
checked before launch, but discovery alone does not establish execution. Hooks use the
|
|
75
|
+
host's command permissions; opting in permits the selected carrier to run. Editing an
|
|
76
|
+
event binding does not rewrite the Python carrier's input/output contract.
|
|
77
|
+
|
|
78
|
+
Native corpus agents currently use Claude plugins and retain authored frontmatter and
|
|
79
|
+
plugin-qualified names, distinct from launcher's bare tier agents. A Codex agent
|
|
80
|
+
projection still needs to translate agent-specific model and tool restrictions; this
|
|
81
|
+
does not limit shared hook delivery. Arbitrary prose promoted to `event` or `delegated`
|
|
82
|
+
cannot become executable, and hidden discovery/config members are refused.
|
|
83
|
+
|
|
84
|
+
## Optional shell connection
|
|
85
|
+
|
|
86
|
+
**Shell connection** in the root TUI offers **Restore connection** and **Remove
|
|
87
|
+
connection**, with confirmation before writing. The same owner is available as
|
|
88
|
+
`agent-bios shell` (status), `agent-bios shell restore`, and `agent-bios shell remove`;
|
|
89
|
+
`--dry-run` previews either action. Restore backs up existing files and adds one
|
|
90
|
+
managed block to `${ZDOTDIR:-$HOME}/.zshrc`, plus a managed `shell.zsh`. Open a new
|
|
91
|
+
terminal or source that `.zshrc` to load it. Interactive, argument-free `claude` and
|
|
92
|
+
`codex` then open the TUI; argument-bearing and non-TTY calls go to the original CLI
|
|
93
|
+
without added permission flags. Removal preserves other shell text and withdraws
|
|
94
|
+
loaded managed wrappers on the next shell command. An edited managed file or block
|
|
95
|
+
is preserved and reported for reconciliation, not overwritten. Backups remain private
|
|
96
|
+
under `runtime/shell-backups/`; `ZDOTDIR` must match the connection's recorded path.
|
|
97
|
+
Updates preserve an opted-in connection; reset and uninstall remove it. This setting
|
|
98
|
+
never edits global `AGENTS.md`/`CLAUDE.md`, project files, or corpus content. Ordinary
|
|
99
|
+
private installation also leaves those globals alone; explicit `migrate` can remove
|
|
100
|
+
the old agent-bios-managed regions and imports while preserving user-authored text.
|
|
101
|
+
First opt-in records ownership before publishing shell wiring, so interrupted restores
|
|
102
|
+
remain recoverable. Reset and uninstall also detect receipt-less managed scripts from
|
|
103
|
+
older interrupted restores. Install repairs a missing or non-executable owned launcher;
|
|
104
|
+
an unavailable launcher falls back to the native CLI. Recovery rechecks path ancestors
|
|
105
|
+
before writing and refuses redirected symlink targets.
|
|
106
|
+
|
|
107
|
+
## Scripted launches and forwarded arguments
|
|
108
|
+
|
|
109
|
+
Both the legacy shell adapter and the optional private shell connection preserve
|
|
110
|
+
argument-bearing and non-TTY calls as direct backend invocations. The private
|
|
111
|
+
connection adds no permission flags on that path. Without opting in, the private
|
|
112
|
+
default installs no shell functions; an explicit `agent-launch` call projects a
|
|
113
|
+
launch profile or corpus snapshot.
|
|
114
|
+
|
|
115
|
+
Direct `agent-launch` calls still require a valid profile to resolve the backend command and its default arguments. `--preset`, `--custom`, or `--dry-run` select the configured-launch path even when non-TTY or combined with `--no-tui`; a non-TTY bare `--dry-run` deterministically uses Balanced, and a custom profile without that preset must pass `--preset NAME`. Forwarded backend arguments are appended verbatim after the projected defaults; one that would override a projected option (the seat, the contract, delegation, policy) is refused at launch so the contract keeps describing the run, and the summary discloses forwarded arguments when present. For scripted configured launches, call `$HOME/.local/bin/agent-launch --preset NAME --yes HOST -- ...` or add `$HOME/.local/bin` to `PATH`. The summary goes to stderr so backend stdout stays machine-consumable.
|
|
116
|
+
|
|
117
|
+
## Review routing
|
|
118
|
+
|
|
119
|
+
Review runs cross-family by default (`review_family`, default `cross`; `same` selects same-family projection): because the main's tiers are one model family, every dispatchable review route — native and the deep route — runs on the opposite family. The exception is `slash-review`, the host's own built-in review command (`/code-review` on Claude, with `ultra` for its deep multi-agent pass; `/review` on Codex): it needs no dependency and always resolves, but being the main's own command it cannot be dispatched cross-family, so under `cross` it runs as the same-family floor and its verdicts are labeled PROPOSED. A Claude main dispatches gpt/codex review (native via the `codex-run` reviewer wrapper resolved under `$CODEX_HOME/bin`, deep via plain `codex exec -m <frontier model> -c model_reasoning_effort="ultra"` with a self-contained packet on stdin — `-c service_tier="fast"` is the explicit faster, shallower opt-in); a Codex main dispatches Anthropic/Claude review (native via `claude -p --permission-mode plan`, deep via the `claude` CLI headless with the keyword `ultracode` in the prompt, which is what opens Claude Code's dynamic workflow for that turn). The concrete reviewer command, resolved absolute path, and opposite-family tier bindings are named in the injected session-start contract; cross-family reviewers are dispatched as read-only subprocesses, not CLI-native subagents, since neither CLI hosts the other family as a native subagent. When a cross-family route is unavailable at launch or unauthenticated at use time it degrades to same-family native subagent review labeled PROPOSED (family collapse) rather than blocking; a requested non-none review with no cross-family route and no same-family fallback (delegation off) stays fail-closed. A reviewer this launcher has never seen is yours to add: **Register another reviewer…** in the review editor asks for the descriptor a method needs, proves the candidate by running it through the real config reader before a byte is written, and appends it to `review-methods.local.toml` beside your config — a file the installer never deploys, verifies, or overwrites, whose entries face exactly the validation a shipped one does and whose name may not shadow a shipped method. A refusal shows the reader's own message and leaves that file byte-identical. Review setup means configured/requested; this launcher does not claim that review completed, and unavailable runtimes such as Ultrawork are not offered until integrated.
|
|
120
|
+
|
|
121
|
+
## Internal adapters and permission boundaries
|
|
122
|
+
|
|
123
|
+
When the internal Codex wrappers are available to a configured route, `codex-helm` follows the local CLI default and launches the HELM main with `--dangerously-bypass-approvals-and-sandbox`; an explicit `--sandbox MODE` disables bypass for that run regardless of flag order. `AGENTS.md` gives root/main local Codex sessions standing ordinary-subagent authorization when the delegation gates fire. A non-Ultra HELM main sets native multi-agent off by default and instructs HELM to send tiered dispatch through the internal `codex-run` adapter, where the selected model, effort, and sandbox are pinned; native multi-agent defaults on only when the HELM main itself is explicitly Ultra. FRONTIER is instructed to run as a separate `gpt-6-astra` root that is always read-only, at max by default, Ultra for genuinely divisible complex work, or a lower supported effort when cost or latency dominates. Because the HELM main has bypass authority and arbitrary expert `-c` by design, this dispatch route is an instruction-backed, live-E2E-verified default rather than a security boundary. Keep `codex-run` as the low-level internal adapter, not as a user-facing policy boundary. Both wrappers accept `-c key=value` as an expert override, and that override may intentionally change wrapper defaults for a single run. The private installer keeps wrapper files in its immutable release rather than populating `$CODEX_HOME/bin`; a route that still names a native-home wrapper is unavailable until its adapter path is resolved.
|
|
124
|
+
|
|
125
|
+
`claude-run` is the Claude-side review adapter carried by the release, and it takes `--model` and `--effort` to pin the seat. Omitting either warns and dispatches anyway, matching `codex-run`: refusing outright turned "the review ran unpinned" into "the review did not run", which is the worse of the two. The honest signal is downstream instead — an unpinned dispatch can name no seat, so it emits no receipt and the method adjudicates to UNKNOWN rather than to a clean pass. Its default denies the mutating tools, which is not the OS-level sandbox its Codex twin gets — do not read the two defaults as equivalent guarantees.
|
|
126
|
+
|
|
127
|
+
## Review receipts
|
|
128
|
+
|
|
129
|
+
**Review receipts.** A launch reports what it *projected*, because at launch no review has run — so a clean verdict without a receipt is PROPOSED, never ACHIEVED. Given `REVIEW_RECEIPT_DIR`, both adapters record what they observed of the dispatch they just performed: exit status, a hash of the packet fed in, a hash of the bytes returned, and the seat actually sent. Unset, they behave exactly as they would otherwise and write nothing. `agent-launch --fold-receipts DIR PACKET MAIN_DISPATCH_ID` folds a run into a `ReviewReceipts/v1` bundle — several passes of one method become the one record it is judged on — and `agent-launch --verify-receipts PLAN BUNDLE` adjudicates it, exiting non-zero unless every selected method verified. Adapting another tool needs no change here: call `agent-launch --emit-receipt` from your adapter and prove it conforms with `agent-launch --check-adapter SEAT -- CMD`, which is adjudicated by the same code that credits a real review. A receipt is still written by whoever ran the review, so this buys drift rather than honesty: what it stops is a reviewer that quietly never ran, returned nothing, or exited non-zero reading as a clean pass.
|
|
130
|
+
|
|
131
|
+
See [verification and limits](session-model.md#verification-and-limits) for the evidence boundary, authenticated resume, and unsupported native named profiles.
|