agent-bios 0.17.1 → 0.19.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.
Files changed (55) hide show
  1. package/DEPENDENCIES.md +236 -80
  2. package/INSTALL.md +112 -0
  3. package/README.md +184 -486
  4. package/claude/CLAUDE.md +1 -1
  5. package/claude/guides/cli-multi-model-workflow.md +1 -1
  6. package/claude/guides/learning-flow.md +23 -12
  7. package/claude/guides/session-distill-workflow.md +22 -12
  8. package/codex/AGENTS.md +1 -1
  9. package/codex/guides/cli-multi-model-workflow.md +1 -1
  10. package/codex/guides/learning-flow.md +23 -12
  11. package/codex/guides/session-distill-workflow.md +22 -12
  12. package/compose/app_bridge/SKILL.md +75 -0
  13. package/compose/app_bridge/agents/openai.yaml +2 -0
  14. package/compose/app_bridge/scripts/bridge.py +76 -0
  15. package/compose/bootstrap/SKILL.md +23 -2
  16. package/compose/corpus.py +31 -9
  17. package/compose/corpus_app.py +456 -0
  18. package/compose/corpus_import.py +529 -0
  19. package/compose/corpus_install.py +196 -18
  20. package/compose/corpus_session.py +27 -0
  21. package/compose/corpus_setup.py +674 -0
  22. package/compose/corpus_setup_cli.py +582 -0
  23. package/compose/corpus_setup_i18n.py +318 -0
  24. package/compose/corpus_setup_ui.py +633 -0
  25. package/compose/corpus_store.py +236 -34
  26. package/compose/corpus_transaction.py +43 -10
  27. package/compose/corpus_ui.py +279 -8
  28. package/compose/corpus_ui_runtime.py +278 -0
  29. package/compose/corpus_understand.py +6 -1
  30. package/compose/setup/START.md +147 -0
  31. package/compose/ui_runtime/linkify_it_py-2.2.0-py3-none-any.whl +0 -0
  32. package/compose/ui_runtime/manifest.json +238 -0
  33. package/compose/ui_runtime/markdown_it_py-4.2.0-py3-none-any.whl +0 -0
  34. package/compose/ui_runtime/mdit_py_plugins-0.6.1-py3-none-any.whl +0 -0
  35. package/compose/ui_runtime/mdurl-0.1.2-py3-none-any.whl +0 -0
  36. package/compose/ui_runtime/platformdirs-4.11.8-py3-none-any.whl +0 -0
  37. package/compose/ui_runtime/pygments-2.21.0-py3-none-any.whl +0 -0
  38. package/compose/ui_runtime/rich-15.0.0-py3-none-any.whl +0 -0
  39. package/compose/ui_runtime/textual-8.2.8-py3-none-any.whl +0 -0
  40. package/compose/ui_runtime/typing_extensions-4.16.0-py3-none-any.whl +0 -0
  41. package/docs/advanced-launch.md +131 -0
  42. package/docs/assets/corpus-studio.svg +227 -0
  43. package/docs/corpus.md +117 -0
  44. package/docs/recovery.md +201 -0
  45. package/docs/session-model.md +120 -0
  46. package/docs/setup.md +190 -0
  47. package/docs/understand.md +40 -0
  48. package/install.sh +75 -46
  49. package/launch/agent-launch.py +91 -47
  50. package/launch/provision-venv.sh +44 -13
  51. package/learn/collect-learning.py +14 -5
  52. package/learn/learning.schema.json +2 -2
  53. package/package.json +14 -2
  54. package/provenance.json +1 -1
  55. package/wrappers/claude-run.sh +10 -13
package/DEPENDENCIES.md CHANGED
@@ -1,115 +1,271 @@
1
1
  # Dependencies
2
2
 
3
- What agent-bios' scripts and rules depend on, with required capabilities and verified versions. Role-slot→model bindings are owned by each guide's `Environment Binding`; numeric defaults by each guide's `Evidence Base`. This file does not restate them — it inventories dependency *kinds* and points to their owners, so a version lives in exactly one place.
3
+ This file owns the dependency inventory, required capabilities, and the observed local
4
+ versions below. Required minimums come from the code that enforces them. The Textual
5
+ root pin and optional learning-validator pin belong to `launch/provision-venv.sh`.
6
+ `gates/build-ui-runtime.py` derives the exact shipped wheel inventory in
7
+ `compose/ui_runtime/manifest.json` from `TEXTUAL_PIN`; setup reads that inventory and
8
+ the optional validator pin. Guide `Environment Binding` sections own
9
+ role-slot/model choices and feature-specific host observations; `Evidence Base`
10
+ sections own measured behavior and numeric defaults.
4
11
 
5
- Korean: [`ko/DEPENDENCIES.md`](ko/DEPENDENCIES.md). Dates = verification time; update a date when the version is re-checked.
12
+ Korean: [`ko/DEPENDENCIES.md`](ko/DEPENDENCIES.md). A version report or successful
13
+ package installation does not renew a native protocol, model-turn, or UI observation.
14
+ The verification column states the scope of each check.
6
15
 
7
- ## Runtime tools (scripts) — owned here
16
+ ## Runtime tools
17
+
18
+ The supported operating systems are macOS and Linux (`package.json` `os`). Private
19
+ transactions, instruction capture and app registration use POSIX file locks, file
20
+ descriptors and symlinks. The JSON setup protocol, machine-mode corpus operations,
21
+ import and app context use Python standard libraries. Interactive installation,
22
+ package/current-checkout Corpus Studio and the private/current-checkout launcher's
23
+ rich entrypoint load the shipped
24
+ offline UI dependencies. Optional learning validation and retained compatibility clients
25
+ have separate runtime requirements below.
8
26
 
9
27
  | Tool | Required by | Required capability | Verified |
10
28
  | --- | --- | --- | --- |
11
- | `codex` (codex-cli) | `compose/corpus_session.py`, `launch/agent-launch.py`, `wrappers/codex-run.sh`, `wrappers/codex-helm.sh`; guide "Codex direct-drive" + "Session relocation" bindings | per-call `-c`; cwd-aware `app-server --stdio` `config/read`; durable `thread/start`, `thread/inject_items`, and `thread/read`; `codex resume`; existing `codex exec` and agent-config projection. The corpus session tests exercise config preservation and durable thread identity without a model turn | 0.153.4 · 2026-09-07 |
12
- | `bash` | `install.sh`, `*/*.sh` | POSIX + arrays; runs on macOS system bash | 3.2.57 · 2026-07 |
13
- | `python3` | `compose/corpus.py`, `compose/corpus_install.py`, `compose/corpus_session.py`, `compose/corpus_store.py`, `session-cost.py`, `launch/agent-launch.py` | Python 3.11+ stdlib (`tomllib`) owns every machine/non-TTY path, private file transaction, catalog/store operation, session journal, and numbered fallback. Textual is imported only for the interactive clients | 3.14.5 · 2026-09-07 |
14
- | `textual` (managed venv) | `launch/agent-launch.py` preflight and `compose/corpus_ui.py` Corpus Studio; provisioner is `launch/provision-venv.sh` | Textual runtime in `~/.local/share/agent-launch/venv` (override `AGENT_LAUNCH_VENV`); each interactive client re-execs into it only on its TTY path. The private installer does not currently run the provisioner, so a fresh machine without that runtime uses numbered UI. Corpus Studio uses `Tree`, `MarkdownViewer(open_links=False)`, `TextArea(language="markdown")`, and `Select`; its numbered editor uses `$VISUAL`/`$EDITOR` when set | 8.2.8 · py 3.14.5 · 2026-09-07 |
15
- | `jsonschema` (system python) | `learn/check-learning.py` (learning record gate; chained from `gates/check-parity.sh`) | JSON Schema Draft 2020-12 validator executing `learn/learning.schema.json` as the SSOT | 4.26.0 · 2026-07-20 |
16
- | `zsh` | `launch/agent-launch.zsh` | legacy compatibility/regression path only: shell functions, TTY tests, argument-preserving dispatch. The private default does not install shell interception | 5.9 · 2026-07-13 |
17
- | `git` | scripts, workflow (`origin/<base>..HEAD`, worktrees) | modern git; worktree support | 2.50.1 · 2026-07 |
18
- | coreutils (`mktemp`, `cp`) | `codex-run.sh` hermetic home; `codex-helm.sh` managed home | BSD or GNU | 2026-07 |
29
+ | `python3` | `compose/corpus*.py`, app bridge helper, `session-cost.py`, `launch/agent-launch.py` | Python 3.11+ (`tomllib`) for the private store, offline installer UI loader, import evidence, app receipts and native session adapter | 3.14.5 · version report · 2026-09-12 |
30
+ | `bash` | `install.sh`, shell adapters, provisioner and app helper command dispatch | Bash arrays and argument-preserving execution; macOS system Bash is supported | 3.2.57 · version report · 2026-09-12 |
31
+ | `git` | conversation source acquisition, clone updates and version-control workflows | clone and detached checkout for a fixed source commit; worktrees and modern revision operations for development. No Git checkout is required to use an installed npm package | 2.50.1 · version report · 2026-09-12 |
32
+ | `zsh` | `launch/agent-launch.zsh`, optional `launch/shell_integration.py` connection | shell functions, TTY checks and argument-preserving dispatch. Used by the explicit private shell connection as well as compatibility installation; it is not required for ordinary private storage or app context use | 5.9 · version report · 2026-09-12 |
33
+ | `mktemp`, `cp` | wrapper temporary homes and shell utilities | BSD or GNU command interfaces | local inventory checks command availability; no package-version claim |
34
+ | `ioreg`, `ps` | conversation setup machine/process identity on macOS | local OS identity probes. Linux uses machine-id and `/proc`; machine identity has a host/filesystem fallback, while missing process evidence leaves a running attempt unconfirmed | source-defined probes; no separate tool version pin |
35
+ | Node.js | npm delivery, optional npm host installation and selected slide jobs | `package.json` requires Node >=18 for npm package delivery. The optional Claude npm recipe requires Node >=22; Codex npm installation and slide runtimes retain their own requirements. The Python corpus runtime does not require Node | 26.0.0 · version report · 2026-09-12 |
36
+ | `npm` | package delivery and optional host installation recipes | normal global package installation using the user's configured prefix/registry | 12.0.2 · version report · 2026-09-12 |
37
+ | Homebrew (`brew`) | optional setup installation recipes | available formula/cask installation commands selected in the reviewed setup plan; setup does not install Homebrew itself | local `--version` probe; no installation version pin |
38
+ | Python `venv`, `ensurepip` and pip | explicitly selected managed-environment installation | create an isolated environment using `AGENT_LAUNCH_PYTHON` (default `python3`); not prerequisites for loading the bundled installation UI. Some Linux Python distributions provide these components separately | clean venv creation and `pip check` · Python 3.14.5 · 2026-09-12 |
39
+ | Bundled Textual UI runtime | interactive `install`/`onboard`, package/current-checkout Corpus Studio TTY entrypoint, private/current-checkout launcher rich entrypoint | pure-Python wheels shipped under `compose/ui_runtime/`; the loader verifies and extracts them temporarily before UI imports. No system/managed Textual, pip installation or runtime network access is needed | manifest versions/hashes/licenses; offline clean-interpreter, TTY and backend-handoff checks · 2026-09-12 |
40
+ | Managed `textual` | standalone compatibility launcher copies, retained in-process APIs and author tests | optional environment at `${AGENT_LAUNCH_VENV:-$HOME/.local/share/agent-launch/venv}`. Its installation target is `TEXTUAL_PIN`; current package CLI UI paths use the shipped bundle | 8.2.8 · clean-venv installation/import, `pip check` and UI tests · 2026-09-12 |
41
+ | `rich` | Textual clients | included with the installer UI bundle and otherwise provided transitively by Textual; not a separate setup choice. Plain editing needs no optional syntax-highlighting packages | managed Textual environment and UI tests · 2026-09-12; bundled version belongs to the manifest |
42
+ | `jsonschema` | `learn/collect-learning.py`, `learn/check-learning.py` | Draft 2020-12 validation for user learning capture and author verification. `learn` uses a usable system validator, otherwise the configured managed interpreter. Installation target is `JSONSCHEMA_PIN` in the provisioner; `--learning-only` installs it without adding Textual | 4.26.0 · clean-venv installation/import and `pip check` · 2026-09-12 |
43
+
44
+ `agent-bios install` and `onboard` are interactive unless `--non-interactive` is explicit.
45
+ Selection flags seed the UI, and a non-TTY default call fails before writes. Python
46
+ 3.11+ is still required. `compose/corpus_ui_runtime.py` validates the shipped bundle
47
+ before UI imports and uses one process-owned temporary extraction, cleaned on normal
48
+ exit and released by the launcher before backend `execve`. It creates no persistent UI
49
+ package installation. Missing, damaged or conflicting bundle state produces repair
50
+ guidance on the package UI entrypoints; the installer does not fall back to numbered UI.
51
+ Standalone compatibility launcher copies retain managed/numbered behavior. Imported
52
+ in-process APIs retain their existing dependency contract; CLI bundle activation is
53
+ explicit at the real entrypoints.
54
+
55
+ The terminal installer language chooser and its English/Korean/Japanese messages are
56
+ owned by `compose/corpus_setup_i18n.py`. This is a per-run UI choice before dependency
57
+ probes, not another corpus language or persisted host setting. Locale variables suggest
58
+ a starting choice; the user still sees the chooser. The JSON setup protocol accepts an
59
+ explicit review language while retaining its stable field names and exact values.
60
+
61
+ `agent-bios setup` needs Python 3.11+ and Bash, with no TTY, Textual, model SDK or new
62
+ server. It reuses `SetupController` for inspection, reviewed plans and fixed dependency
63
+ actions. Only explicit Apply runs selected actions; its durable receipts use private
64
+ state. `status` and `resume` inspect or prepare further review without executing
65
+ installation actions. The conversation client needs the host's normal local file and
66
+ command tools. `INSTALL.md` resolves the repository-link request to an explicitly
67
+ selected local source or one downloaded commit before reading `compose/setup/START.md`.
68
+ Source acquisition uses the host's download or Git tools and creates caller-owned
69
+ files before the installation plan; it is separate from setup Apply. No preinstalled
70
+ bridge, Codex CLI, Node.js or npm is required for this source-based conversation route.
71
+
72
+ Setup probes installed commands without installing or signing in. Available dependency
73
+ actions have fixed argv and run only after explicit selection and Apply. The app bridge
74
+ retains the configured managed-environment path for later learning calls. Host sign-in,
75
+ user MCP credentials, browser/job bindings and personal skills remain separate setup
76
+ steps; absence of an optional route does not make the local corpus store unavailable.
77
+ Manager recipes are offered only after their version probe succeeds. Creating a new
78
+ managed environment requires the selected Python venv/ensurepip bootstrap; an existing
79
+ managed interpreter does not need to bootstrap again. The provisioner checks Python
80
+ 3.11+ before modifying the environment.
19
81
 
20
82
  ## Host agent CLIs
21
83
 
22
- | CLI | Role | Required capability | Version owner |
84
+ | CLI | Required by | Required capability | Verification |
23
85
  | --- | --- | --- | --- |
24
- | Claude Code | primary host and `agent-launch` backend; native global/project loading remains native | `--model`; effort `low/medium/high/xhigh/max`; `--agents`; per-call `--append-system-prompt`; `--session-id` and `--resume`; `--mcp-config`; `--plugin-dir`; permission modes `acceptEdits/auto/bypassPermissions/manual/dontAsk/plan`. Default-off `--corpus-native` validates and supplies per-item plugin roots for installed corpus carriers; automatic SessionStart execution is observed. Authenticated corpus-agent execution and post-fix authenticated resume remain unverified | Environment Binding; installed CLI 2.1.263 checked 2026-09-08 |
25
- | Codex CLI | mirror host and worker/reviewer runtime; native global/project loading remains native | private corpus composition preserves cwd-aware effective developer instructions, injects the selected snapshot per call, and pins the host id after `thread/start` + `thread/inject_items` + `thread/read`; see codex row above | Environment Binding + this file |
86
+ | Claude Code | native Claude sessions and Claude worker/review routes | `--model`, `--effort`, `--agents`, per-call `--append-system-prompt`, `--session-id`, `--resume`, `--mcp-config`, `--plugin-dir`, and the selected permission mode; native global/project loading remains native | 2.1.268 · 2026-09-12 |
87
+ | Codex CLI | `compose/corpus_session.py`, launcher and Codex worker/review adapters | per-call `-c`; cwd-aware `app-server --stdio` `config/read`; durable `thread/start`, `thread/inject_items`, `thread/read`; `codex resume`; `codex exec` and agent-config projection | local 0.153.4; isolated compatibility 0.154.0 · 2026-09-12 |
26
88
 
27
- Optional user-global instruction exclusion in `compose/corpus_session.py` requires
28
- Claude Code 2.1.263 or newer. Its native `claudeMdExcludes` setting is supplied once
29
- through `--settings`; native configuration arrays union/deduplicate, but repeated
30
- CLI `--settings` options replace one another, so the adapter refuses that collision.
31
- Actual include/exclude/resume startup preserved project instruction sources and
32
- omitted the global root/imports/user rules on 2026-09-08. Codex 0.153.4 has no
33
- equivalent supported native control; exclusion is refused without changing its
34
- execution sandbox or configuration home.
89
+ The Claude row reports the installed command version. The Codex row distinguishes the
90
+ installed runtime from the newer isolated compatibility check. Native protocol and
91
+ execution evidence have narrower scope:
35
92
 
36
- Claude Haiku 4.5 calls omit `--effort` and the native agent `effort` field.
37
- The SWEEP-main route requires `--restricted`, `--tools`, `--strict-mcp-config`
38
- and `--mcp-config`; installed Claude Code 2.1.263 accepts these parser options.
39
- Its projection uses Read/Glob/Grep and an empty MCP configuration, with no child
40
- delegation. This is a parser/projection check, not a new model-generation receipt.
93
+ - Optional global-instruction exclusion requires Claude Code **2.1.263+**, enforced by
94
+ `compose/corpus_session.py`. The adapter supplies `claudeMdExcludes` through one
95
+ `--settings` argument and refuses a conflicting existing argument. Include/exclude/
96
+ resume startup preserving project sources was observed on 2026-09-08. The current
97
+ Codex adapter has no supported global-only exclusion in the verified 0.154.0 protocol;
98
+ it refuses that choice instead of changing its sandbox or config home.
99
+ - The isolated Codex compatibility check covers cwd-aware configuration and prompt
100
+ preservation, durable thread creation/injection/read and pin recovery, bridge skill
101
+ discovery/removal, and user/project/session hook discovery. It does not claim hook
102
+ execution or a model turn on that runtime.
103
+ - The Claude SWEEP projection requires `--restricted`, `--tools`, `--strict-mcp-config`
104
+ and `--mcp-config`; parser/projection verification used 2.1.263. Its allowed tools and
105
+ effort choices come from the launch bindings. A parser check is not a model-generation
106
+ receipt.
107
+ - Native corpus hooks use the common installed Python carrier and typed event/matcher.
108
+ Claude plugin delivery was exercised with 2.1.268; Codex inline hook discovery and
109
+ local-transport execution controls used 0.153.4. Existing host hooks, enablement and
110
+ native trust remain in force. Discovery alone does not prove execution.
111
+ - Codex deep-review flag checks used 0.146.0. The Claude `ultracode` keyword trigger was
112
+ read from the 2.1.220 installed bundle. These feature observations are not refreshed
113
+ by the current `--version` reports. Authenticated corpus-agent execution and post-fix
114
+ authenticated resume remain unverified.
41
115
 
42
- ## LLM models & providers — owned by `Environment Binding`
116
+ ## Codex app and instruction import
43
117
 
44
- Concrete role-slot→model bindings live only in each guide's `Environment Binding`, dated, expiring ~8 weeks or on a newer model. Not restated here.
118
+ The Codex desktop app is a separate host from the Codex CLI. Its optional bridge needs
119
+ native skill discovery for `~/.agents/skills/agent-bios`, the explicit-invocation policy in
120
+ `compose/app_bridge/agents/openai.yaml`, and Python plus `/bin/bash` for its helper.
121
+ `CODEX_THREAD_ID` supplies the current task identity; an explicit real `--session` id
122
+ can substitute when absent. The bridge resolves the confirmed private installation
123
+ and saved roots on each call. Local app registration and receipt tests do not establish
124
+ a minimum desktop-app version or prove native discovery/model reading.
45
125
 
46
- - Providers: **Anthropic** (Claude Fable/Opus/Sonnet/Haiku), **OpenAI** (GPT / Codex).
47
- - Auth: Anthropic via Claude Code login; OpenAI via ChatGPT subscription or API key (`$CODEX_HOME/auth.json`).
126
+ An explicit installation request can use the bridge's `setup` forwarding, including
127
+ `setup start` to locate the installation guide. This route does not need a task identity
128
+ or run `session use`; native task identity is required for task-context receipts only.
129
+ Review/apply context instead binds the machine, user, paths, package, working directory
130
+ and effect-relevant environment. Status receipts describe recorded attempts; `handoff`
131
+ separates package/runtime verification from helper registration, integrity and usability.
132
+ Read-only `try_transaction_lock` in `compose/corpus_transaction.py` permits current
133
+ checks without waiting for another writer or creating synchronization state. If it
134
+ cannot acquire safe synchronization, handoff reports `verification: "deferred"` and
135
+ unobserved readiness fields as `null`, while status still returns recorded progress.
136
+ `verification: "checked"` reports that the checks ran; their individual results remain
137
+ separate.
138
+ A caller uses `helper_argv` only with `helper_usable`, or `setup_argv` with
139
+ `package_verified`, and supplies the returned environment. Neither flag proves native
140
+ skill discovery. The engine does not install or configure the host's file/command tools.
48
141
 
49
- ## Private corpus assets
142
+ `app session preview/use/off/status` manages **returned task context**, not a new Codex
143
+ CLI session. This route uses no separate Codex CLI subprocess, no Textual runtime and
144
+ no direct model SDK. Corpus Studio needs a terminal; rich UI remains optional. App use
145
+ requires explicit selection, enables no native hooks or agents, and Off cannot retract
146
+ previously returned text. Registration is off by default and owns only its discovery
147
+ link, preserving global instruction files and foreign entries.
148
+
149
+ Local instruction import also needs no model SDK or parser framework. Standard-library
150
+ code discovers fixed instruction filenames at known global and explicit project roots,
151
+ captures redacted evidence through `learn/redact.py`, and validates source digests,
152
+ coverage, project/host scope and the store transaction. The host agent authors content,
153
+ consumption placement and trigger descriptions; it is not a deterministic classifier.
154
+ Planning/applying requires an installed baseline. Original native files remain intact
155
+ and may still be loaded independently by the host.
50
156
 
51
- - **Native corpus hooks** — `--corpus-native` uses one shared installed Python carrier and typed event/matcher on both hosts. Claude Code 2.1.268 validates per-item plugins and receives them by `--plugin-dir`; Codex CLI 0.153.4 receives inline session hook config and exposes it through `hooks/list`. Existing native hooks remain, global config is unchanged, and Codex's native enablement/trust review still applies. The installed Codex runtime has a local-transport positive/negative test for execution and context injection; discovery alone is not execution.
52
- - **Claude native corpus agents** — selected agent carriers use the same per-item plugin packaging and retain their authored frontmatter, including tool restrictions. Routes are plugin-qualified rather than launcher tier names. A Codex agent projection is separate work on agent semantics, not a hook restriction.
53
- - **Codex custom agents** (`codex/agents/*.toml`) — role-template sources stored in the immutable private release. The default installer does not register templates in the native host home.
54
- - **Corpus management bootstrap** (`compose/bootstrap/SKILL.md`) — copied into every activated immutable snapshot and named by exact private path in startup text. This is private procedure access, not a claim of native skill registration.
157
+ ## Private corpus assets
55
158
 
56
- ## Referenced / optional not required by the core repo
159
+ - **Native corpus hooks and agents** require explicit `--corpus-native` and a supported
160
+ installed carrier. Claude agents retain their authored frontmatter in per-item
161
+ plugins; names are plugin-qualified. Codex agent-semantic translation remains separate
162
+ work. Neither route registers global hooks by default.
163
+ - **Codex role templates** (`codex/agents/*.toml`) are carried in the immutable private
164
+ release. Private installation does not require copies under the native host home.
165
+ - **Management bootstrap** (`compose/bootstrap/SKILL.md`) and selected requested
166
+ procedures are private snapshot resources. **No-corpus mode omits the bootstrap and
167
+ corpus instruction text.** The optional app discovery bridge is a separate entry;
168
+ registration alone does not select task context.
57
169
 
58
- - **Slide-writing static HTML/PDF companion** — the primary slide-writing guide needs no renderer. Its explicit static HTML/PDF job path uses Python 3.11+ standard libraries for preparation, binding checks, and result acceptance. Rendering additionally requires an explicit Node executable, Playwright module file, `pdf-lib` resolvable beside that module, and a Chromium-family browser executable. These are job-side dependencies, not installed by corpus delivery. Verified on 2026-09-09: Node 24.19.0, Playwright 1.62.1, pdf-lib 1.17.1, Chromium-family browser 152.0.7977.83. The companion runbook owns invocation and supported-format limits.
170
+ ## Models and optional integrations
59
171
 
60
- - **Deep review** — no separate tool on either side. The Codex-seat deep reviewer (`codex-exec`) is the `codex` CLI's own non-interactive exec mode: `codex exec -s read-only -m gpt-5.6-sol -c model_reasoning_effort="ultra"`, self-contained packet on stdin (`-s read-only`, `-c model_reasoning_effort` and `-c service_tier` verified against installed codex-cli 0.146.0; `-c service_tier="fast"` is the explicit faster, shallower opt-in; `-s read-only` enforces the promised sandbox — ambient `~/.codex` config stays inherited, so the route is read-only but not hermetic). The Claude-seat deep reviewer (**ultracode**) is the `claude` backend itself run headless with the keyword `ultracode` in the prompt — that keyword is what opens the Workflow tool for the turn (`workflowKeywordTriggerEnabled`, default true, read in the installed 2.1.220 bundle). Personal or third-party reviewers register in the user-owned `review-methods.local.toml`, never in the shipped config.
61
- - **Cross-family review reviewers** — with `review_family=cross` (default), each main routes review to the opposite family. A Claude main dispatches gpt review via `$CODEX_HOME/bin/codex-run --profile hermetic` (and `codex-helm --mode review` for review fan-out) plus the deep `codex exec` pass above; a Codex main dispatches Claude review via the `claude` CLI (`claude -p --permission-mode plan` for native, and, for the workflow-orchestration route, the same `claude` CLI headless with the keyword `ultracode` in the prompt — the keyword trigger is what the injected contract names, so this is the mechanism to follow). The reviewer command, resolved path, and opposite-family tier bindings are named in the launch contract; an absent or unauthenticated route degrades to same-family native (PROPOSED). `review_family=same` restores same-family review.
62
- - **codex-plugin-cc** (1.0.6; re-evaluated 2026-07-16) spawns `codex app-server` with inherited env and no `--ignore-user-config`/`--profile`, so every run reads the real `~/.codex` (config.toml, auth, its MCP servers); it has no per-invocation hermetic reach, which is what makes it unfit as a **review** route: the reviewer would inherit the same config and AGENTS.md as the main, undercutting the independent lens `review_family=cross` exists to provide. The model *is* selectable (`--model`/`--effort`); what is dated is the bundled `gpt-5-4-prompting` skill, so passing a current model does not resolve it. **Not adopted**; `wrappers/codex-run.sh` is preferred for controlled reach. It does not touch Claude Code's `/code-review` (no `code-review.md`; it adds namespaced `/codex:*`), so it never made that route cross-family. Capability we lack and may still want independently: its opt-in `Stop` hook review gate.
63
- - **MCP servers** (clickhouse, node_repl, …) — environment-specific; referenced by Environment Binding, not a core dependency. The launcher registers a stdio MCP server only for a user-registered capability whose offer declares the `mcp-stdio-v1` adapter; no shipped review method is MCP-backed.
64
- - **spreadsheet-processing** (skill) — referenced by the always-surface spreadsheet rule in an activated selection; present in the author's Claude Code and Codex environments. If absent, the rule's inline fallback (plain tools/code + real Excel-engine validation) applies.
172
+ Concrete role-slot/model bindings belong to each guide's `Environment Binding` and the
173
+ launch profile. Providers are Anthropic and OpenAI; host login supplies authentication.
174
+ Agent-bios does not install credentials or infer a model account from dependency probes.
65
175
 
66
- ## Untrackeddependencies, but excluded by design
176
+ - **Slide-writing static HTML/PDF companion** its primary guide requires no renderer.
177
+ The selected static path needs Python standard libraries for preparation and acceptance;
178
+ rendering additionally needs a job-bound Node executable, Playwright module, `pdf-lib`
179
+ beside that module, and a Chromium-family browser executable. These are not installed
180
+ by corpus delivery. The 2026-09-09 job verification used Node 24.19.0, Playwright 1.62.1,
181
+ pdf-lib 1.17.1 and browser 152.0.7977.83; it is separate from the current host Node report.
182
+ - **Deep review** — uses the configured host CLI rather than another core tool. Codex
183
+ runs its own read-only exec route with a self-contained packet; the frontier model
184
+ and effort come from the launch binding. Claude runs headless with the
185
+ keyword `ultracode` in the prompt to activate its workflow. Native configuration
186
+ remains inherited unless a hermetic adapter is selected. Personal reviewers register
187
+ in `review-methods.local.toml`.
188
+ - **Cross-family review adapters** — private routes resolve `wrappers/codex-run.sh`,
189
+ `codex-helm.sh` and `claude-run.sh` from the selected package. Their command paths,
190
+ binding, reach and fallback are declared in the launch contract. An unavailable or
191
+ unauthenticated opposite-family route is reported, not credited as a completed review.
192
+ - **MCP servers** — user-specific; only a selected capability declaring `mcp-stdio-v1`
193
+ is registered by the launcher. No shipped review method requires MCP. App corpus
194
+ context delivery does not add an MCP server.
195
+ - **spreadsheet-processing** — an optional skill referenced by the spreadsheet rule
196
+ when that corpus is selected. If unavailable, its inline plain-tools/code and real
197
+ spreadsheet-engine validation fallback applies.
67
198
 
68
- Host `config.toml`, `settings.json`, and `hooks.json` machine-specific trust lists, hook paths, and MCP secrets. The tracked `launch/agent-launch.toml` contains launch bindings but no secrets. See README Scope.
199
+ Host `config.toml`, `settings.json`, `hooks.json` and credentials are untracked,
200
+ user-owned state. `launch/agent-launch.toml` carries launch bindings without secrets.
69
201
 
70
202
  ## Re-verify
71
203
 
204
+ Read the current local inventory without installing packages or starting model turns:
205
+
206
+ ```bash
207
+ python3 -B - <<'PY'
208
+ import json, os, pathlib, sys
209
+ repo = pathlib.Path.cwd()
210
+ sys.path.insert(0, str(repo / 'compose'))
211
+ from corpus_setup import dependency_inventory
212
+ for row in dependency_inventory(repo, {**os.environ, 'PYTHONDONTWRITEBYTECODE': '1'}):
213
+ print(json.dumps({key: row[key] for key in ('id', 'status', 'version', 'path', 'manual_reason')}, ensure_ascii=False))
214
+ PY
215
+ ```
216
+
217
+ Inspect the installed private state using this checkout's runtime:
218
+
72
219
  ```bash
73
- codex --version
74
- codex_help="$(codex exec --help)"
75
- for flag in --output-schema --ignore-user-config --ephemeral --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox --cd --sandbox --model --profile; do
76
- printf '%s\n' "$codex_help" | grep -q -- "$flag" || { echo "missing codex flag: $flag"; exit 1; }
77
- done
78
- printf '%s\n' "$codex_help" | grep -Eq '(^|[[:space:]])-c([,[:space:]]|$)' || { echo "missing codex flag: -c"; exit 1; }
79
- printf '%s\n' "$codex_help" | grep -Eq '(^|[[:space:]])-C([,[:space:]]|$)' || { echo "missing codex flag: -C"; exit 1; }
80
- printf '%s\n' "$codex_help" | grep -Eq '(^|[[:space:]])-p([,[:space:]]|$)' || { echo "missing codex flag: -p"; exit 1; }
81
- printf '%s\n' "$codex_help" | grep -Eq '(^|[[:space:]])-s([,[:space:]]|$)' || { echo "missing codex flag: -s"; exit 1; }
82
- claude --version; claude --help | grep -E -- '--model|--effort|--agents|--append-system-prompt|--session-id|--resume|--mcp-config'
83
- bash --version | head -1; zsh --version; python3 --version; git --version
84
- AGENT_LAUNCH_VENV="${AGENT_LAUNCH_VENV:-$HOME/.local/share/agent-launch/venv}" bash launch/provision-venv.sh
85
- "${AGENT_LAUNCH_VENV:-$HOME/.local/share/agent-launch/venv}/bin/python" -c 'import textual, sys; print("textual", textual.__version__, "py", sys.version.split()[0])'
86
- python3 -m py_compile compose/corpus.py compose/corpus_catalog.py compose/corpus_install.py compose/corpus_session.py compose/corpus_store.py
87
- "${AGENT_LAUNCH_VENV:-$HOME/.local/share/agent-launch/venv}/bin/python" -m unittest discover -s compose -p 'test_corpus*.py'
88
- bash -n wrappers/codex-run.sh wrappers/codex-helm.sh gates/check-parity.sh launch/check-prompting-targets.sh launch/provision-venv.sh install.sh
220
+ bash install.sh verify
221
+ bash install.sh corpus status --json
222
+ bash install.sh app status --json
223
+ ```
224
+
225
+ Provision packages only when explicitly requested for learning validation, compatibility
226
+ clients or author tests. These commands are not needed by the package CLI UI; they may access
227
+ the configured package index and modify the managed environment:
228
+
229
+ ```bash
230
+ bash launch/provision-venv.sh
231
+ bash launch/provision-venv.sh --learning-only
232
+ ```
233
+
234
+ The author-side bundle checks are offline. They verify the root pin, exact wheel
235
+ metadata and licenses, isolated imports/rendering, cleanup and negative controls:
236
+
237
+ ```bash
238
+ python3 gates/build-ui-runtime.py --check
239
+ python3 gates/build-ui-runtime.py --self-test
240
+ ```
241
+
242
+ Only the builder's explicit `--build` path fetches packages; do not hand-edit wheel
243
+ archives or their manifest. The full author umbrella also exercises compatibility
244
+ clients and can provision its managed test environment, so it is not a read-only
245
+ machine inventory:
246
+
247
+ ```bash
248
+ python3 -B - <<'PY'
249
+ import pathlib
250
+ paths = list(pathlib.Path('compose').glob('corpus*.py')) + [pathlib.Path('launch/agent-launch.py')]
251
+ for path in paths:
252
+ compile(path.read_text(), str(path), 'exec')
253
+ PY
254
+ bash -n install.sh launch/provision-venv.sh wrappers/codex-run.sh wrappers/codex-helm.sh wrappers/claude-run.sh
89
255
  zsh -n launch/agent-launch.zsh
90
- python3 -c 'compile(open("launch/agent-launch.py").read(), "launch/agent-launch.py", "exec")'
91
256
  ./gates/check-parity.sh
92
- ./launch/check-prompting-targets.sh
93
- python3 - <<'PY'
94
- import pathlib, tomllib
95
- roots = [pathlib.Path("codex/agents")]
96
- required = {"frontier.toml", "workhorse.toml", "sweep.toml", "reviewer.toml"}
97
- for root in roots:
98
- missing = required - {path.name for path in root.glob("*.toml")}
99
- assert not missing, f"missing required agent TOML files in {root}: {sorted(missing)}"
100
- for path in sorted(root.glob("*.toml")):
101
- tomllib.loads(path.read_text())
102
- print(f"agent TOML ok: {root}")
103
- PY
104
- wrappers/codex-helm.sh --dry-run --mode review "probe"
105
- agent-bios verify
106
- agent-bios corpus status --json
107
257
  ```
108
258
 
109
259
  ## Ownership
110
260
 
111
261
  | Owner | Owns |
112
262
  | --- | --- |
113
- | this file (`DEPENDENCIES.md`) | script runtime tools + required capabilities; the dependency inventory |
114
- | each guide `Environment Binding` | role-slot→model bindings, host-CLI verified versions |
115
- | each guide `Evidence Base` | numeric defaults / measurements |
263
+ | `DEPENDENCIES.md` | required capability inventory and scoped local version observations |
264
+ | `launch/provision-venv.sh` | Textual root pin, `JSONSCHEMA_PIN` and explicit managed package installation |
265
+ | `gates/build-ui-runtime.py` | author-side bundle generation and offline check/self-test |
266
+ | `compose/ui_runtime/manifest.json` | generated exact UI wheel inventory, versions, hashes and licenses |
267
+ | `compose/corpus_ui_runtime.py` | offline verification, process-lifetime extraction and release |
268
+ | `compose/corpus_setup.py` | shared SetupController, local inventory and reviewed dependency recipes |
269
+ | `package.json` and runtime validators | supported platforms and required runtime minimums |
270
+ | guide `Environment Binding` and launch profile | role/model bindings and feature-specific host evidence |
271
+ | guide `Evidence Base` | measured behavior and numeric defaults |
package/INSTALL.md ADDED
@@ -0,0 +1,112 @@
1
+ # Install agent-bios
2
+
3
+ This is the agent's runbook for an installation request naming this repository.
4
+ The user supplies the repository link; the agent handles paths and commands.
5
+
6
+ Ask the user to choose English, 한국어 or 日本語 before running prerequisite or
7
+ dependency probes. Honor a language already selected in the request. Use a native
8
+ question control when available, or an ordinary short question. Run on the intended
9
+ local machine; a remote executor's home is a different installation target.
10
+
11
+ ## Obtain the source
12
+
13
+ If the user explicitly selected an existing trusted source directory, use it
14
+ without pulling, switching branches or modifying it. Record its location and any
15
+ available commit/dirty-state information. Otherwise obtain the repository named in
16
+ the request. Do not substitute an old global CLI or require a global npm install.
17
+
18
+ With Git available, use the sequence below. The agent fills `BIOS_SETUP_REPO` from
19
+ the request using a structured argument or a properly quoted shell literal; the
20
+ user does not type a path. Run this in a dedicated Bash tool call and stop on any
21
+ failure. Keep these variables in that call or retain their values as caller-owned
22
+ data.
23
+
24
+ Before acquisition, tell the user which repository and cache/workdir destination
25
+ will be used. Explain that this downloads source and retains private cache/artifact
26
+ files now, separately from the installation effects reviewed at Apply.
27
+
28
+ ```bash
29
+ set -eu
30
+ BIOS_SETUP_REPO='<repository URL from the installation request>'
31
+ umask 077
32
+ BIOS_SETUP_CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/agent-bios-acquisition"
33
+ mkdir -p "$BIOS_SETUP_CACHE"
34
+ BIOS_SETUP_SOURCE="$(mktemp -d "$BIOS_SETUP_CACHE/source.XXXXXX")"
35
+ git -c core.hooksPath=/dev/null clone --quiet --depth 1 --single-branch \
36
+ --branch main --no-checkout "$BIOS_SETUP_REPO" "$BIOS_SETUP_SOURCE"
37
+ BIOS_SETUP_COMMIT="$(git -C "$BIOS_SETUP_SOURCE" rev-parse --verify HEAD)"
38
+ git -C "$BIOS_SETUP_SOURCE" -c core.hooksPath=/dev/null \
39
+ checkout --quiet --detach "$BIOS_SETUP_COMMIT"
40
+ git -C "$BIOS_SETUP_SOURCE" rev-parse --verify HEAD
41
+ ```
42
+
43
+ Confirm the final full commit equals `BIOS_SETUP_COMMIT`. The clone resolves
44
+ `main` once; keep that exact checkout through planning and Apply. Record the
45
+ repository, full commit and source location in a caller-owned acquisition artifact
46
+ and retain them for resume. An explicitly requested revision takes precedence over
47
+ `main`; resolve and retain that revision instead. Do not refresh a moving branch
48
+ between review and Apply.
49
+
50
+ If Git is unavailable, use the host's download capability to obtain the official
51
+ repository archive for one resolved full commit. Follow the repository host's
52
+ actual commit/archive link rather than inventing a download endpoint. Record the
53
+ commit and archive digest, inspect its members, and extract into a new private
54
+ directory without allowing paths or links outside it. If that capability is also
55
+ unavailable, explain the missing prerequisite and use documented platform Git
56
+ installation instructions within the user's authorization.
57
+
58
+ Acquisition downloads and these cache/artifact files exist before setup Apply.
59
+ Report them separately from installation effects and keep the source while setup
60
+ or a reviewed continuation may need it. A failed acquisition does not authorize
61
+ switching to a different package or installation mode.
62
+
63
+ ## Check this revision before running it
64
+
65
+ Reread `INSTALL.md` from the acquired revision so its runbook and executable source
66
+ come from the same commit. Inspect any difference from the guide that led here;
67
+ do not mix their instructions or recursively acquire the repository again.
68
+
69
+ Read `package.json` as data. Its package name must be `agent-bios`, its repository
70
+ identity must match the trusted source, and its `agent-bios` binary must be
71
+ `install.sh`. Normalize the package's `git+` prefix and trailing `.git` when
72
+ comparing repository URLs. Confirm these required files are regular files whose
73
+ resolved paths remain inside the source; do not follow links to outside files:
74
+
75
+ - `INSTALL.md`
76
+ - `install.sh`
77
+ - `compose/corpus_setup_cli.py`
78
+ - `compose/corpus_setup.py`
79
+ - `compose/setup/START.md`
80
+
81
+ If they are missing, explain that the selected public revision/package does not
82
+ provide conversational setup. Stop this installation route and report the checked
83
+ revision. Do not run an older `install`, enable compatibility mode, or claim that
84
+ unpublished checkout features are available from the public repository.
85
+
86
+ Bash and Python 3.11 or newer are required. Check them after the language choice.
87
+ If missing, explain the prerequisite and help resolve it through documented
88
+ platform instructions within the user's authorization. This route does not need
89
+ Codex CLI, another model login, Node/npm or Textual. Do not borrow an undocumented
90
+ app runtime or install a package manager solely to present the questions.
91
+
92
+ ## Continue in the conversation
93
+
94
+ Run the acquired source's entrypoint with the chosen language; `ko` below is an
95
+ example. These paths are internal command arguments, not information the user must
96
+ supply.
97
+
98
+ ```bash
99
+ bash "$BIOS_SETUP_SOURCE/install.sh" setup start --language ko
100
+ ```
101
+
102
+ Require a successful JSON response with `kind: "agent-bios-setup-start"`,
103
+ `schema_version: 1`, an existing `guide_path` inside that source, and matching
104
+ `context.package_root`. Read that guide and continue through its returned
105
+ `setup_argv`, keeping the same source, working directory and reviewed execution
106
+ context. Do not fall back to a PATH command if validation fails.
107
+
108
+ The detailed guide collects corpus, optional dependencies, app connection and
109
+ instruction-source choices, then prepares the exact review for authorized Apply.
110
+ Use the existing authorization for concrete effects already accepted by the user.
111
+ Preserve global/project `AGENTS.md` and `CLAUDE.md`. Installation and app connection
112
+ do not authorize corpus content in this task; that remains a separate explicit use.