agent-bios 0.18.0 → 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.
- package/DEPENDENCIES.md +236 -80
- package/INSTALL.md +112 -0
- package/README.md +184 -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/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 +196 -18
- package/compose/corpus_session.py +27 -0
- package/compose/corpus_setup.py +674 -0
- package/compose/corpus_setup_cli.py +582 -0
- package/compose/corpus_setup_i18n.py +318 -0
- package/compose/corpus_setup_ui.py +633 -0
- package/compose/corpus_store.py +167 -29
- package/compose/corpus_transaction.py +43 -10
- package/compose/corpus_ui_runtime.py +278 -0
- package/compose/setup/START.md +147 -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 +190 -0
- package/docs/understand.md +40 -0
- package/install.sh +75 -46
- package/launch/agent-launch.py +91 -47
- 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
package/README.md
CHANGED
|
@@ -1,553 +1,213 @@
|
|
|
1
1
|
# agent-bios
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
agent-bios launch supplies to Claude Code or Codex. Edit once; the private corpus
|
|
5
|
-
compiler projects the selected content for each activated session.
|
|
3
|
+
**A personal instruction layer for Claude Code and Codex.**
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
`agent-bios` CLI entry and the deployer.
|
|
5
|
+
Build an instruction library you can inspect, edit, and reuse. Choose what each
|
|
6
|
+
CLI session or Codex app task uses, while preserving your existing global instruction files.
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
[Quick start](#quick-start) · [Corpus Studio](#your-instruction-library) · [How it works](#how-sessions-work) · [Understand!](#understand-the-reasoning) · [Documentation](#documentation) · [한국어](ko/README.md)
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+

|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
*Actual 0.18.0 Studio UI, captured with Textual enabled and the bundled corpus
|
|
13
|
+
in an isolated test environment.*
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
- **Scoped guides** — `claude/guides/`, with generated Codex mirrors. The snapshot compiler copies selected guides to private generation-qualified paths and emits their router. Procedures, tables, numbers, and environment-specific content live here.
|
|
15
|
+
## Make your instructions your own
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
agent-bios ships a starting library of rules, guides, and procedures, called a
|
|
18
|
+
**corpus**. You decide which parts belong in your working environment.
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
acceptance need Python, while rendering uses the optional dependencies listed in
|
|
29
|
-
`DEPENDENCIES.md`. Native presentation formats remain the user's choice; the
|
|
30
|
-
supplied renderer's mechanical checks apply only to its static HTML/PDF path.
|
|
20
|
+
| What you want to do | What agent-bios provides |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| See what your instructions say | Browse and search documents in Corpus Studio; follow a rule's links to its guides. |
|
|
23
|
+
| Adapt them to your work | Edit supplied items, create personal ones, and choose their delivery method. |
|
|
24
|
+
| Choose what a session uses | Switch individual items on or off without deleting their content or edits. |
|
|
25
|
+
| Recover the starting point | Restore supplied content, recover personal items, or preview a full reset. |
|
|
31
26
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- **The always surface is a per-activated-session token budget** — every selected rule is supplied to that session and can be inherited by its children, so each added bullet dilutes the rest. A new always rule must name the bullet it displaces (or why none does); procedures, tables, numbers, and worked examples belong in guides.
|
|
35
|
-
- **Installation is storage, not activation** — `install` and `onboard` copy a validated immutable release into agent-bios-owned state and record a baseline plus selection. `verify` proves those stored bytes, the catalog, the baseline, and the owned launcher projection; it deliberately reports activation as unverified. Only a configured `agent-launch` resolves a snapshot and calls a host adapter.
|
|
36
|
-
- **The default installer leaves native host state alone** — it does not seed global `AGENTS.md`/`CLAUDE.md`, host skill/agent directories, hook settings, or shell interception. Existing installations keep their old global projection until `agent-bios migrate` previews and, with explicit apply confirmation, removes only proven legacy-owned material. `AGENT_BIOS_LEGACY_INSTALL=1` exists only for compatibility and migration regression coverage.
|
|
37
|
-
- **Source, snapshot, and session have separate lifetimes** — `CorpusStore` revision-checks private authoring, compiles content-addressed snapshots, and preserves prior snapshots. `corpus_session.py` records a host-observed session id before a pin counts as resumable; reset and later edits affect future snapshots, not an existing pin.
|
|
38
|
-
- **Learning evidence stays immutable** — capture events are host-qualified private JSONL records. A local edit is an overlay for later snapshots; promotion suppresses only an exact source revision when its replacement is proven in that snapshot. Local reset, removal, or migration makes no claim that an uploaded record was deleted.
|
|
39
|
-
- **`Evidence Base` (per guide) is the single owner of numbers.** Measure with `session-cost.py` (`agent-bios cost` on an installed package).
|
|
40
|
-
- **English is canonical and shipped; Korean (`ko/`) is reference only.** The private catalog and snapshot compiler consume the fixed-name English sources.
|
|
27
|
+
This is an instruction and launch layer, not a replacement for either host CLI.
|
|
28
|
+
It does not train the model or guarantee that the model follows every instruction.
|
|
41
29
|
|
|
42
|
-
##
|
|
30
|
+
## Quick start
|
|
43
31
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
| `learn/` | the collection loop — capture, record schema and its validator, curation intake, promotion manifest, redistribution, and the secret-redaction floor |
|
|
53
|
-
| `session-distill/` | the heavy curator pipeline that mines many sessions into corpus-grade items |
|
|
54
|
-
| `wrappers/` | internal host/review adapters carried by the private release; the default install does not populate native host bin directories |
|
|
55
|
-
| `gates/` | author-side verification (mirror generation, parity, lexicon, payload, assembler scenarios) — reachable only from a repo checkout, and `check-package.sh` fails if any of it enters the npm payload |
|
|
56
|
-
| `ontology/` | what a change obliges elsewhere — entities, obligation edges, and the service's routes, held against real source by `check-ontology.py`. `instances/graph.json` is canonical; `LEXICON.md`, the RDF views, the HTML map, and the competency/extension docs are generated from it |
|
|
57
|
-
| `install.sh`, `session-cost.py` | the `agent-bios` command dispatcher/private installer entry and the cost meter |
|
|
58
|
-
| `decisions/` | the decision record for developing this repo — what was decided and which alternative it closed; author-side, never shipped |
|
|
59
|
-
| `packages/` | authored corpus packages, organized by package identity rather than by concept home |
|
|
60
|
-
| `.githooks/` | the pre-commit hook that runs the gates against the index, enabled per clone with `core.hooksPath` |
|
|
61
|
-
| `SURFACES.md` | where knowledge and tools reach a model, and what each place admits — every entry names the code that realizes it |
|
|
62
|
-
| `FINDINGS.md` | open implementation defects, live; closing one deletes its entry |
|
|
63
|
-
| `design/`, `benchmarks/` | design records and the instruction-behavior benchmark |
|
|
64
|
-
| `research/` | corpus research (the 12,749-file AGENTS.md/CLAUDE.md classification): reports, scripts, labeling record; bulk data stays local by `.gitignore` rule |
|
|
65
|
-
| `DEPENDENCIES.md` | external tools / host CLIs / model providers + verified versions |
|
|
66
|
-
|
|
67
|
-
`config.toml`, `settings.json`, and `hooks.json` are machine-specific (trust lists, hook paths, secrets) and intentionally untracked.
|
|
68
|
-
|
|
69
|
-
## Guides
|
|
70
|
-
|
|
71
|
-
| Guide | Scope |
|
|
72
|
-
| --- | --- |
|
|
73
|
-
| `cli-multi-model-workflow` | multi-model CLI workflow: Default Frame, role slots/tiers, delegation mechanics, driving Codex CLI directly, cache economy, unattended-batch safety, halt/resume, handoff contract, Environment Binding |
|
|
74
|
-
| `coding-staged-workflow` | staged development: design → process → implement, lightweight path, review loop, severity contract, stop conditions |
|
|
75
|
-
| `verification-discipline` | verification depth and per-domain mix (owns the Verification Menus), case space, what a green result is worth |
|
|
76
|
-
| `concept-economy` | concept-surface economy: reuse / extend / rename / split, split triggers, migration compatibility |
|
|
77
|
-
| `documentation-hygiene` | where comments, history, and handoffs belong; how to phrase rules others follow |
|
|
78
|
-
| `llm-capability-boundary` (+ `-patterns`, `-examples`) | LLM/tool/code authority boundary: field authority, accepted output channels, structural enforcement, worked examples |
|
|
79
|
-
| `mock-realization-boundary` | mock/fixture realization vs product semantic path |
|
|
80
|
-
| `svg-visualization-guide` | SVG diagram / service-blueprint spec |
|
|
81
|
-
| `implementation-map` | IMPLEMENTATION_MAP.html current-state dashboard |
|
|
82
|
-
|
|
83
|
-
The table names the load-bearing guides; the full inventory and its per-domain
|
|
84
|
-
classification live in `compose/domains.json`, which the domains gate holds against the
|
|
85
|
-
tree.
|
|
86
|
-
|
|
87
|
-
## Edit workflow
|
|
88
|
-
|
|
89
|
-
1. Edit the English canonical (`claude/`), and the Korean canonical (`ko/claude/`) when the change is user-facing.
|
|
90
|
-
2. `python3 gates/emit-mirrors.py` — regenerates `codex/` and `ko/codex/` from those two canonicals. Never hand-edit the Codex side: it is a generated projection, and `--check` (which the parity gate runs) fails on any file that is not exactly what the generator emits.
|
|
91
|
-
3. `./gates/check-parity.sh` must pass.
|
|
92
|
-
4. Commit, then deploy: `agent-bios install` (or `agent-bios update` from a clone).
|
|
93
|
-
|
|
94
|
-
## Install and activate
|
|
95
|
-
|
|
96
|
-
The npm package and command are both named `agent-bios`. Installation is always
|
|
97
|
-
explicit—never a package-manager postinstall side effect—and the default path stores
|
|
98
|
-
an immutable release and baseline under agent-bios-owned state. It installs the
|
|
99
|
-
`agent-launch` entrypoint and its own profile/catalog files, but does not change native
|
|
100
|
-
Claude/Codex globals, discovery directories, settings, hooks, or shell command
|
|
101
|
-
resolution unless the user explicitly restores the optional shell connection.
|
|
32
|
+
Use the terminal installer or set up through a Codex app conversation. Both offer
|
|
33
|
+
language, dependency, corpus and optional app/import choices.
|
|
34
|
+
See [setup and prerequisites](docs/setup.md).
|
|
35
|
+
|
|
36
|
+
### In a terminal
|
|
37
|
+
|
|
38
|
+
You need **macOS or Linux**, **Bash**, **Python 3.11+**, and **Node.js 18+ with npm**
|
|
39
|
+
for package installation. Run:
|
|
102
40
|
|
|
103
41
|
```bash
|
|
104
|
-
npm install -g agent-bios
|
|
105
|
-
agent-bios install
|
|
106
|
-
agent-bios onboard --domains builder-base,multi-agent-orchestration
|
|
107
|
-
agent-bios verify # verify stored bytes/catalog/baseline; not host activation
|
|
108
|
-
agent-bios status # show the private release, baseline, conflicts, and evidence state
|
|
109
|
-
agent-bios corpus # rich Corpus Studio in a TTY; list in a non-TTY
|
|
110
|
-
agent-launch claude # open the launch TUI for Claude
|
|
111
|
-
agent-launch codex # open the launch TUI for Codex
|
|
112
|
-
agent-bios shell restore # opt in: bare claude/codex opens the TUI
|
|
113
|
-
agent-bios shell remove # remove only that optional shell connection
|
|
114
|
-
agent-bios reset # preview reset; keep sources, snapshots, and pins
|
|
115
|
-
agent-bios reset --apply --yes --expected-revision REV # use the revision returned by preview
|
|
116
|
-
agent-bios migrate # preview legacy global cleanup; --apply --yes performs it
|
|
117
|
-
agent-bios update # git pull + reinstall (clone), or print the npm update line
|
|
118
|
-
agent-bios uninstall # remove owned runtime entries; retain user corpus and pinned sessions
|
|
42
|
+
npm install -g agent-bios@0.19.0
|
|
43
|
+
agent-bios install
|
|
119
44
|
```
|
|
120
45
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
`~/.local/share/agent-bios/sessions/`, and user packages, overlays, tombstones,
|
|
125
|
-
learnings, history, and trash under `~/.config/agent-bios/corpus/`. The corresponding
|
|
126
|
-
`AGENT_BIOS_STATE_DIR` and `AGENT_BIOS_CORPUS_DIR` environment variables relocate
|
|
127
|
-
those private roots; `AGENT_LAUNCH_VENV` relocates the optional Textual runtime.
|
|
128
|
-
The owned `agent-launch` entrypoint exports `AGENT_BIOS_PRIVATE_CORPUS=1` and the
|
|
129
|
-
immutable `AGENT_BIOS_PACKAGE_ROOT`; the launcher also recognizes the private install
|
|
130
|
-
record when the explicit marker is absent. These select the private runtime and do not
|
|
131
|
-
claim that any host session has loaded a snapshot.
|
|
132
|
-
|
|
133
|
-
`install`, `onboard`, `reset`, `migrate`, and `uninstall` expose dry-run or preview
|
|
134
|
-
paths appropriate to their mutations. A pre-existing owned launcher/profile path whose
|
|
135
|
-
bytes no longer match the recorded copy is reported as an owned-path conflict rather than
|
|
136
|
-
overwritten. `migrate` is the separate recovery-backed operation for a legacy global
|
|
137
|
-
installation: preview is the default, applying requires `--apply --yes`, ambiguous
|
|
138
|
-
ownership refuses the apply, and later private operations do not fall through to a
|
|
139
|
-
global writer. Setting `AGENT_BIOS_LEGACY_INSTALL=1` selects the old deployer only for
|
|
140
|
-
compatibility and migration regression work; it is not the user default.
|
|
141
|
-
|
|
142
|
-
The legacy compatibility deployer preserves guide paths named only by a previous
|
|
143
|
-
manifest when the current source no longer establishes their ownership. It names
|
|
144
|
-
these remnants for manual inspection and leaves them out of the new ownership
|
|
145
|
-
manifest, so later uninstall does not claim them. Current source-owned members
|
|
146
|
-
retain normal backup and selection cleanup; private snapshot installation uses its
|
|
147
|
-
own authoritative inventory.
|
|
148
|
-
|
|
149
|
-
After updating a legacy global installation, run `agent-bios migrate` before the
|
|
150
|
-
first private `install`. Its preview identifies exact managed regions, legacy
|
|
151
|
-
manifest paths and learning sources. `agent-bios migrate --apply --yes` backs up
|
|
152
|
-
the originals, transfers and verifies learning records, retires the legacy paths,
|
|
153
|
-
then installs the private release. A central-only Codex file and the unmodified
|
|
154
|
-
empty Claude learning seed do not require a learning JSONL file; actual learning
|
|
155
|
-
content without its source still requires attention.
|
|
156
|
-
|
|
157
|
-
An interrupted migration is visible in `status` and blocks configuration readers
|
|
158
|
-
and unrelated writes. Re-run `agent-bios migrate --apply --yes` to resume its
|
|
159
|
-
pinned release and recorded path versions. A completed private installation is
|
|
160
|
-
not repeated, and later cleanup cannot delete its replacement launcher/profile.
|
|
161
|
-
Intervening edits are preserved and reported instead of overwritten. Older
|
|
162
|
-
incomplete journals without replay evidence require reconciliation from their
|
|
163
|
-
backups rather than a guessed replay. Existing private-session replay retains the
|
|
164
|
-
previous confirmed release until migration completes.
|
|
165
|
-
|
|
166
|
-
Before applying or resuming, stop the old global collectors that can still append a native
|
|
167
|
-
learning JSONL or rewrite its native prose/entry file. The migration checks the
|
|
168
|
-
recorded native state immediately before commit, but no filesystem check can make
|
|
169
|
-
a noncooperating writer atomic after that final observation. If it reports a
|
|
170
|
-
changed native target, preserve only the affected paths and restore only those
|
|
171
|
-
paths to the journal's recorded `after` state before resuming the old migration.
|
|
172
|
-
Do not replace a whole native directory or edit the journal.
|
|
173
|
-
|
|
174
|
-
For a validated late-input recovery, set `JOURNAL` to the one `NEEDS_RECOVERY`
|
|
175
|
-
migration journal and pass only the specific changed JSONL, prose, or entry paths
|
|
176
|
-
that its error named. This makes a new durable copy under that journal's existing
|
|
177
|
-
`backup_root`, verifies the copy, and then restores a changed target from its
|
|
178
|
-
recorded `after` bytes/existence/mode or an input-only path to its recorded
|
|
179
|
-
unchanged existence. It rejects a path absent from the journal, symlinks, and
|
|
180
|
-
non-regular files before writing any backup. New private journals retain exact
|
|
181
|
-
bytes for input-only native files, so the command can restore an originally
|
|
182
|
-
present input while preserving its current mode (or using `0600` if it is
|
|
183
|
-
absent). Historic digest-only journals still need an external byte-identical
|
|
184
|
-
backup; the command refuses to invent their missing bytes.
|
|
185
|
-
|
|
186
|
-
```sh
|
|
187
|
-
JOURNAL="${AGENT_BIOS_STATE_DIR:-$HOME/.local/share/agent-bios}/runtime/migrations/<migration-id>/journal.json"
|
|
188
|
-
python3 - "$JOURNAL" \
|
|
189
|
-
"$HOME/.codex/personal/learnings.jsonl" <<'PY'
|
|
190
|
-
import base64, hashlib, json, os, sys, tempfile
|
|
191
|
-
from pathlib import Path
|
|
192
|
-
|
|
193
|
-
journal = Path(sys.argv[1])
|
|
194
|
-
data = json.loads(journal.read_text(encoding="utf-8"))
|
|
195
|
-
backup_root = Path(data.get("backup_root", ""))
|
|
196
|
-
if data.get("kind") != "migrate" or data.get("state") != "NEEDS_RECOVERY" or backup_root != journal.parent / "backup":
|
|
197
|
-
raise SystemExit("expected one validated NEEDS_RECOVERY migration journal")
|
|
198
|
-
targets = {Path(entry["path"]): entry for entry in data["paths"]}
|
|
199
|
-
inputs = {Path(path): version for path, version in data["inputs"].items()}
|
|
200
|
-
selected = [Path(value).expanduser() for value in sys.argv[2:]]
|
|
201
|
-
unknown = [str(path) for path in selected if path not in targets and path not in inputs]
|
|
202
|
-
if not selected or unknown:
|
|
203
|
-
raise SystemExit("name one or more exact journal paths; unknown: " + ", ".join(unknown))
|
|
204
|
-
|
|
205
|
-
planned = []
|
|
206
|
-
for path in selected:
|
|
207
|
-
entry = targets.get(path)
|
|
208
|
-
version = entry["after"] if entry is not None else inputs[path]
|
|
209
|
-
if path.is_symlink() or (path.exists() and not path.is_file()):
|
|
210
|
-
raise SystemExit(f"refusing unsafe native path: {path}")
|
|
211
|
-
root = next((parent for parent in (path.parent, *path.parents)
|
|
212
|
-
if parent.name in {".claude", ".codex"}), None)
|
|
213
|
-
if root is None or root.is_symlink():
|
|
214
|
-
raise SystemExit(f"recovery supports an exact Claude/Codex native path, not: {path}")
|
|
215
|
-
current = root
|
|
216
|
-
for part in path.relative_to(root).parts:
|
|
217
|
-
current /= part
|
|
218
|
-
if current.is_symlink():
|
|
219
|
-
raise SystemExit(f"refusing symlink ancestor: {current}")
|
|
220
|
-
planned.append((path, entry, version))
|
|
221
|
-
|
|
222
|
-
if backup_root.is_symlink() or (backup_root.exists() and not backup_root.is_dir()):
|
|
223
|
-
raise SystemExit(f"refusing unsafe recovery root: {backup_root}")
|
|
224
|
-
backup_root.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
225
|
-
recovery = Path(tempfile.mkdtemp(prefix="recovery-before-resume-", dir=backup_root)) / "files"
|
|
226
|
-
for path, entry, version in planned:
|
|
227
|
-
if path.exists():
|
|
228
|
-
saved = recovery / str(path).lstrip("/")
|
|
229
|
-
saved.parent.mkdir(parents=True, exist_ok=True)
|
|
230
|
-
before = path.read_bytes()
|
|
231
|
-
saved.write_bytes(before)
|
|
232
|
-
saved.chmod(path.stat().st_mode & 0o777)
|
|
233
|
-
if saved.read_bytes() != before:
|
|
234
|
-
raise SystemExit(f"backup did not verify: {saved}")
|
|
235
|
-
if not version["exists"]:
|
|
236
|
-
path.unlink(missing_ok=True)
|
|
237
|
-
continue
|
|
238
|
-
encoded = version.get("bytes_b64")
|
|
239
|
-
if not isinstance(encoded, str):
|
|
240
|
-
raise SystemExit(f"journal records only a digest for existing input; restore it from an exact external backup: {path}")
|
|
241
|
-
body = base64.b64decode(encoded.encode("ascii"), validate=True)
|
|
242
|
-
if hashlib.sha256(body).hexdigest() != version["sha256"]:
|
|
243
|
-
raise SystemExit(f"journal after bytes are invalid: {path}")
|
|
244
|
-
descriptor, temporary = tempfile.mkstemp(prefix=f".{path.name}.", dir=path.parent)
|
|
245
|
-
try:
|
|
246
|
-
with os.fdopen(descriptor, "wb") as output:
|
|
247
|
-
output.write(body)
|
|
248
|
-
output.flush()
|
|
249
|
-
os.fsync(output.fileno())
|
|
250
|
-
mode = entry["mode"] if entry is not None else (path.stat().st_mode & 0o777 if path.exists() else 0o600)
|
|
251
|
-
os.chmod(temporary, mode)
|
|
252
|
-
os.replace(temporary, path)
|
|
253
|
-
finally:
|
|
254
|
-
Path(temporary).unlink(missing_ok=True)
|
|
255
|
-
print(recovery)
|
|
256
|
-
PY
|
|
257
|
-
```
|
|
46
|
+
The installer opens a guided terminal UI with English, Korean and Japanese. Its
|
|
47
|
+
verified Textual bundle is included; a separate UI installation is unnecessary.
|
|
48
|
+
Choose only the dependencies and corpus you want. [Full setup options →](docs/setup.md)
|
|
258
49
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
as evidence; it is not an instruction to restore all saved native files.
|
|
265
|
-
|
|
266
|
-
```sh
|
|
267
|
-
RECOVERY_BACKUP='<the directory printed above>'
|
|
268
|
-
B="$HOME/.codex/personal/learnings.jsonl" # the one path you deliberately preserved
|
|
269
|
-
cp "$RECOVERY_BACKUP/${B#/}" "$B"
|
|
270
|
-
agent-bios migrate
|
|
271
|
-
agent-bios migrate --apply --yes
|
|
50
|
+
To launch a CLI session, install and authenticate that host CLI, then run this from
|
|
51
|
+
your project:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
"$HOME/.local/bin/agent-launch" claude
|
|
272
55
|
```
|
|
273
56
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
are display-only references, not new dependencies or proof of loading: rule bodies,
|
|
291
|
-
IDs, ordering, selection, and delivery remain unchanged. Personal body edits are
|
|
292
|
-
reflected when the library refreshes; ordinary rules are not classified by meaning.
|
|
293
|
-
|
|
294
|
-
Moving the library cursor to an item immediately displays its document; Enter is
|
|
295
|
-
not required. Group rows show group guidance and disable item-specific actions.
|
|
296
|
-
Cursor events cannot retarget an open editor or a prepared change preview.
|
|
297
|
-
|
|
298
|
-
Arrow keys also navigate the reading controls: **Search ↓ buttons ↓ library →
|
|
299
|
-
document**, with **←/→** between neighboring buttons and **↑** back toward search.
|
|
300
|
-
At the end of search text, **→** focuses the view selector; within text, the caret
|
|
301
|
-
moves normally. **←** from a closed view selector returns to search. Open menus
|
|
302
|
-
keep their native arrow selection. The library keeps normal **↑/↓** item movement;
|
|
303
|
-
at its top, **↑** returns to controls. In the document, arrows scroll until an
|
|
304
|
-
edge: **←** returns to the library, **↑** reaches the controls/member selector,
|
|
305
|
-
and **↓** at the bottom reaches pending on/off buttons when present. Disabled or
|
|
306
|
-
hidden buttons are skipped. TextArea editing, modal boundaries, and Tab remain intact.
|
|
307
|
-
|
|
308
|
-
In the library, **Space** toggles an item's use in future activated sessions:
|
|
309
|
-
`[x]` is on, `[ ]` is off, `[-]` is removed, and `*` marks an unapplied change.
|
|
310
|
-
The Available group means retained authoring items, not that every item is on.
|
|
311
|
-
Stage several choices, then use **Preview on/off → Apply**, or **Discard on/off**.
|
|
312
|
-
Text inputs keep normal spaces; Space on a group still expands or collapses it.
|
|
313
|
-
Unapplied choices require discard confirmation on exit and cannot be mixed with
|
|
314
|
-
content edits. A stale authoring revision refuses the preview or apply.
|
|
315
|
-
|
|
316
|
-
Per-item choices override domain and explicit launch selections, including core
|
|
317
|
-
and infrastructure defaults. Turning an item off does not delete its body, edits,
|
|
318
|
-
or identity, and old snapshots and session pins remain intact. Choices survive
|
|
319
|
-
updates and content restoration; full reset returns to installed defaults.
|
|
320
|
-
Enabling a removed item requires Restore/Recover first. A guide switched off is
|
|
321
|
-
marked in its referring rule, without automatically changing that rule. Native
|
|
322
|
-
hook/agent opt-in, trust, host support, and promotion rules still apply: a checked
|
|
323
|
-
item is a projection choice, not proof of execution. This does not block host
|
|
324
|
-
global/project instructions or a tool from opening a file independently.
|
|
325
|
-
|
|
326
|
-
The same revision-checked manager accepts `{"operation":"enable","items":{"@agent-bios/core:rule-003":false}}`
|
|
327
|
-
through `corpus plan`; `true` forces inclusion, `false` excludes, and `null`
|
|
328
|
-
removes that override so the normal selection applies. `list` reports `enabled`,
|
|
329
|
-
`enabled_override`, and the captured authoring `revision`; pass that revision as
|
|
330
|
-
`expected_revision` when planning a batch from the displayed inventory.
|
|
331
|
-
|
|
332
|
-
New personal identities are allocated once in the creation plan and remain stable
|
|
333
|
-
on retry; reset and history rollback do not make retired identities reusable.
|
|
334
|
-
Member files are the content authority: `primary_member` identifies the main file,
|
|
335
|
-
and `body` is its view or edit alias. The manager applies a body edit to that file
|
|
336
|
-
for all clients. Divergent older body/member values stay visible until an explicit
|
|
337
|
-
content choice reconciles them; old immutable snapshots are not rewritten.
|
|
338
|
-
|
|
339
|
-
Installation and rollback validate the target baseline and personal field/member
|
|
340
|
-
changes together. Conflicts preserve the current selection rather than dropping
|
|
341
|
-
items from a successful snapshot. Installation publishes a complete corpus/config
|
|
342
|
-
association under the same lock used by readers. Pending publication is disclosed
|
|
343
|
-
by status and prevents a new configured launch from reading mixed state; bare and
|
|
344
|
-
pinned replay can use the last confirmed immutable release.
|
|
345
|
-
|
|
346
|
-
Full reset returns an `expected_revision` in its preview. Pass that value with
|
|
347
|
-
`--apply --yes`; a changed preview is refused. Retry the accepted revision to finish
|
|
348
|
-
an interrupted reset, or review and accept a fresh revision to replace a stale
|
|
349
|
-
reset intent. Later user changes and replacement credentials are not overwritten
|
|
350
|
-
by the old intent. Nonsecret settings are archived; token bytes never are.
|
|
351
|
-
|
|
352
|
-
Native corpus consumption is default-off. `agent-bios corpus snapshot --host codex
|
|
353
|
-
--native --json` (or `--host claude`) composes a preview; `agent-launch --corpus-native`
|
|
354
|
-
opts one configured session into selected corpus hooks. Both hosts use the same
|
|
355
|
-
installed Python carrier and typed `event`/`matcher` binding. Authoring accepts the
|
|
356
|
-
combined event vocabulary; compilation reports an event unsupported by the selected
|
|
357
|
-
host without changing its name or executing it through another event.
|
|
358
|
-
|
|
359
|
-
Claude receives a namespaced plugin per CorpusRef through `--plugin-dir`. Codex
|
|
360
|
-
receives inline `hooks.<Event>` config through per-session `-c` arguments. Existing
|
|
361
|
-
user, project and session hooks remain present, and resume retains the pin's exact
|
|
362
|
-
registrations. Neither adapter installs global hooks. Codex hook enablement and native
|
|
363
|
-
trust still apply: new or changed definitions need review in `/hooks`. Discovery is
|
|
364
|
-
checked before launch, but discovery alone does not establish execution. Hooks use the
|
|
365
|
-
host's command permissions; opting in permits the selected carrier to run. Editing an
|
|
366
|
-
event binding does not rewrite the Python carrier's input/output contract.
|
|
367
|
-
|
|
368
|
-
Native corpus agents currently use Claude plugins and retain authored frontmatter and
|
|
369
|
-
plugin-qualified names, distinct from launcher's bare tier agents. A Codex agent
|
|
370
|
-
projection still needs to translate agent-specific model and tool restrictions; this
|
|
371
|
-
does not limit shared hook delivery. Arbitrary prose promoted to `event` or `delegated`
|
|
372
|
-
cannot become executable, and hidden discovery/config members are refused.
|
|
373
|
-
|
|
374
|
-
Tier defaults come from the launch profile and the guides' Environment Binding
|
|
375
|
-
tables. Claude Haiku 4.5 has no effort parameter: its tier entry, native agent
|
|
376
|
-
definition and projected call omit it. SWEEP is one-rule-per-item read-only work.
|
|
377
|
-
As a main seat it disables child delegation and requires review off (for example,
|
|
378
|
-
Solo); a requested review needs a HELM or WORKHORSE main instead. Codex SWEEP mains
|
|
379
|
-
use a read-only sandbox; Claude SWEEP mains use restricted Read/Glob/Grep tools
|
|
380
|
-
and an empty, strict MCP configuration. Other main roles retain their selected
|
|
381
|
-
policies, and explicit personal model/effort overrides remain available.
|
|
382
|
-
|
|
383
|
-
The private install does not replace the `codex` or `claude` shell commands by default. Run
|
|
384
|
-
`agent-launch claude` or `agent-launch codex` explicitly to open the preflight, or pass `--preset NAME HOST` for a
|
|
385
|
-
configured non-interactive launch. Software Engineer / Vanilla structurally projects
|
|
386
|
-
no agent-bios snapshot, launch contract, tier binding, or permission flag. After a
|
|
387
|
-
fresh private install—or after an explicit legacy migration—the native CLI therefore
|
|
388
|
-
receives no automatic agent-bios content; the user's own native global and project
|
|
389
|
-
instructions still follow the host's normal loading rules. `--resume-session ID`
|
|
390
|
-
loads the recorded host/session pin rather than resolving current defaults.
|
|
391
|
-
|
|
392
|
-
**Shell connection** in the root TUI offers **Restore connection** and **Remove
|
|
393
|
-
connection**, with confirmation before writing. The same owner is available as
|
|
394
|
-
`agent-bios shell` (status), `agent-bios shell restore`, and `agent-bios shell remove`;
|
|
395
|
-
`--dry-run` previews either action. Restore backs up existing files and adds one
|
|
396
|
-
managed block to `${ZDOTDIR:-$HOME}/.zshrc`, plus a managed `shell.zsh`. Open a new
|
|
397
|
-
terminal or source that `.zshrc` to load it. Interactive, argument-free `claude` and
|
|
398
|
-
`codex` then open the TUI; argument-bearing and non-TTY calls go to the original CLI
|
|
399
|
-
without added permission flags. Removal preserves other shell text and withdraws
|
|
400
|
-
loaded managed wrappers on the next shell command. An edited managed file or block
|
|
401
|
-
is preserved and reported for reconciliation, not overwritten. Backups remain private
|
|
402
|
-
under `runtime/shell-backups/`; `ZDOTDIR` must match the connection's recorded path.
|
|
403
|
-
Updates preserve an opted-in connection; reset and uninstall remove it. This setting
|
|
404
|
-
never edits global `AGENTS.md`/`CLAUDE.md`, project files, or corpus content. Ordinary
|
|
405
|
-
private installation also leaves those globals alone; explicit `migrate` can remove
|
|
406
|
-
the old agent-bios-managed regions and imports while preserving user-authored text.
|
|
407
|
-
First opt-in records ownership before publishing shell wiring, so interrupted restores
|
|
408
|
-
remain recoverable. Reset and uninstall also detect receipt-less managed scripts from
|
|
409
|
-
older interrupted restores. Install repairs a missing or non-executable owned launcher;
|
|
410
|
-
an unavailable launcher falls back to the native CLI. Recovery rechecks path ancestors
|
|
411
|
-
before writing and refuses redirected symlink targets.
|
|
412
|
-
|
|
413
|
-
### Understand a corpus bundle
|
|
414
|
-
|
|
415
|
-
Choose **Understand!** in the root TUI, or run:
|
|
57
|
+
Use `codex` instead of `claude` for a Codex CLI session.
|
|
58
|
+
|
|
59
|
+
1. Choose a Builder preset or **Custom**.
|
|
60
|
+
2. Review the model, review setup, and permissions. **Some presets request
|
|
61
|
+
permission bypass**; select settings appropriate for your project.
|
|
62
|
+
3. Start the session. Choose **Software Engineer / Vanilla** to use the host's
|
|
63
|
+
native setup without an agent-bios corpus snapshot.
|
|
64
|
+
|
|
65
|
+
Open **Corpus Studio** from the launcher or run `agent-bios corpus` to inspect the
|
|
66
|
+
library. `agent-bios status` shows the installed private release and its location.
|
|
67
|
+
|
|
68
|
+
<details>
|
|
69
|
+
<summary>Install from source instead</summary>
|
|
70
|
+
|
|
71
|
+
Use this repository's **Code** menu to copy its clone command or download its
|
|
72
|
+
source. From the obtained repository folder, run:
|
|
416
73
|
|
|
417
74
|
```bash
|
|
418
|
-
|
|
419
|
-
agent-bios understand show core-purpose
|
|
420
|
-
agent-launch --understand core-purpose claude # or codex
|
|
75
|
+
bash install.sh install
|
|
421
76
|
```
|
|
422
77
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
the
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
`
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
**
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
native skill registration remains unverified.
|
|
78
|
+
This route needs Bash and Python 3.11+; Node/npm are not acquisition prerequisites.
|
|
79
|
+
Keep using `bash install.sh <command>` from that source for management. A global
|
|
80
|
+
`agent-bios` command can belong to a different npm version.
|
|
81
|
+
|
|
82
|
+
</details>
|
|
83
|
+
|
|
84
|
+
Ordinary `claude` and `codex` commands do not automatically receive agent-bios
|
|
85
|
+
content. An optional zsh [shell connection](docs/advanced-launch.md#optional-shell-connection)
|
|
86
|
+
can route bare interactive commands through the launcher. If you have an older
|
|
87
|
+
global installation, read [migration](docs/recovery.md#ownership-and-legacy-migration)
|
|
88
|
+
before changing it.
|
|
89
|
+
|
|
90
|
+
### In the Codex app
|
|
91
|
+
|
|
92
|
+
Open a local task on the machine you want to configure and send:
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
Install https://github.com/kangminlee-maker/agent-bios
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The agent follows [INSTALL.md](INSTALL.md), obtains a fixed source revision, and
|
|
99
|
+
asks for English, 한국어 or 日本語. Choose dependencies, no active corpus or specific
|
|
100
|
+
corpus, and optional app connection or instruction-file capture. Review the effects
|
|
101
|
+
before Apply. You do not need to supply a local path or install Codex CLI.
|
|
102
|
+
|
|
103
|
+
Once the registered command appears in the app, use `$agent-bios` for setup or management.
|
|
104
|
+
To add corpus to a task, explicitly ask it to use your chosen corpus there.
|
|
105
|
+
Installation and opening Corpus Studio do not activate task context.
|
|
106
|
+
[App use, off, and personal instruction import →](docs/setup.md#use-corpus-in-a-codex-app-task)
|
|
107
|
+
|
|
108
|
+
## Your instruction library
|
|
109
|
+
|
|
110
|
+
Open **Corpus Studio** in the launcher, or run `agent-bios corpus`.
|
|
111
|
+
In the app, `$agent-bios` can manage the same library through conversation.
|
|
112
|
+
|
|
113
|
+
- **Read as you navigate.** Arrow keys move between reading controls and update
|
|
114
|
+
the document as the library cursor moves; Enter is not required to read an item.
|
|
115
|
+
- **Recognize guide pointers.** Rules with explicit guide references show
|
|
116
|
+
**→ GUIDE** and link to the guide, its delivery method, and its current state.
|
|
117
|
+
- **Switch items on or off.** Press **Space** in the library. `[x]` is on,
|
|
118
|
+
`[ ]` is off, and `*` means the choice is not yet applied.
|
|
119
|
+
- **Apply deliberately.** Stage several choices, then use
|
|
120
|
+
**Preview on/off → Apply**. Ordinary edits also use a revision-checked preview.
|
|
121
|
+
|
|
122
|
+
An item's **use** and its **delivery method** are separate. A selected rule may
|
|
123
|
+
be `always`, a guide `relevant`, or a procedure `requested`. Native hooks and
|
|
124
|
+
agents use separate opt-in adapters. Putting a guide next to its trigger does
|
|
125
|
+
not change either one's delivery.
|
|
126
|
+
|
|
127
|
+
Individual on/off choices take precedence over default domain/core selections.
|
|
128
|
+
Off is not deletion: content and edits remain available, including for learning.
|
|
129
|
+
Updates retain those choices; a full reset returns to installed defaults.
|
|
130
|
+
|
|
131
|
+
[Corpus controls, keyboard navigation, delivery methods, and included guides →](docs/corpus.md)
|
|
132
|
+
|
|
133
|
+
## How sessions work
|
|
134
|
+
|
|
135
|
+
**Library → your selection and edits → fixed snapshot → configured session**
|
|
136
|
+
|
|
137
|
+
Installation stores a release and its baseline in agent-bios-owned locations.
|
|
138
|
+
A configured launch compiles the selected content for its host. Later edits
|
|
139
|
+
affect future snapshots; managed CLI resume resolves the session's recorded snapshot.
|
|
140
|
+
App tasks use a separately selected snapshot returned through their tool/context path.
|
|
141
|
+
Turning app delivery off cannot erase text already present in the conversation.
|
|
142
|
+
|
|
143
|
+
Your own global instructions are **also loaded by default** in activated
|
|
144
|
+
sessions. Not overwriting them is different from excluding them. Supported Claude
|
|
145
|
+
versions offer selective global-document exclusion; the current Codex adapter
|
|
146
|
+
does not. Project instructions and prior conversation content are separate.
|
|
147
|
+
|
|
148
|
+
[Storage, session pins, and verification limits →](docs/session-model.md)
|
|
149
|
+
|
|
150
|
+
## Understand the reasoning
|
|
151
|
+
|
|
152
|
+
Choose **Understand!** in the launcher to explore why the corpus is written the
|
|
153
|
+
way it is. Select a coherent learning bundle rather than memorizing separate files.
|
|
154
|
+
|
|
155
|
+
The tutor explains purposes, background, tradeoffs, and limits. Each active
|
|
156
|
+
learning turn ends with a relevant question, then waits for your answer. It
|
|
157
|
+
distinguishes documented reasons from inference and respects pause or stop requests.
|
|
158
|
+
|
|
159
|
+
For example, a discussion of clarification might ask:
|
|
160
|
+
*“What would change in your next action if this ambiguity were resolved?”*
|
|
161
|
+
|
|
162
|
+
The aim is understanding when a rule helps—and where it stops helping.
|
|
163
|
+
This is learning for the person, not model training. Saving a personal discovery
|
|
164
|
+
requires your confirmation.
|
|
165
|
+
|
|
166
|
+
[Learning sessions and personal discoveries →](docs/understand.md)
|
|
167
|
+
|
|
168
|
+
## Stay in control
|
|
169
|
+
|
|
170
|
+
- **No default global rewrite.** Private installation leaves native instruction
|
|
171
|
+
files, discovery directories, and hook settings alone. Explicit legacy
|
|
172
|
+
migration is a separate operation.
|
|
173
|
+
- **Separate selection from permission.** Turning an item on does not bypass
|
|
174
|
+
native hook/agent opt-in, host trust, or execution permissions.
|
|
175
|
+
- **Know what is verified.** `agent-bios verify` checks stored content and owned
|
|
176
|
+
projections. `activation: unverified` is deliberate; it does not certify model
|
|
177
|
+
consumption. Authenticated resume and some native integrations remain
|
|
178
|
+
[incompletely verified](docs/session-model.md#verification-and-limits).
|
|
179
|
+
- **Inspect recovery before applying it.** Migration and reset have previews.
|
|
180
|
+
Conflicting user-owned paths are reported, not permission to delete them.
|
|
181
|
+
|
|
182
|
+
## Documentation
|
|
183
|
+
|
|
184
|
+
| When you need more detail | Read |
|
|
185
|
+
| --- | --- |
|
|
186
|
+
| Install, connect the app, or import existing instructions | [Setup](docs/setup.md) |
|
|
187
|
+
| Author, enable, restore, or inspect corpus items | [Corpus](docs/corpus.md) |
|
|
188
|
+
| Understand snapshots, storage, and session evidence | [Session model](docs/session-model.md) |
|
|
189
|
+
| Migrate, reset, or resolve installation conflicts | [Recovery](docs/recovery.md) |
|
|
190
|
+
| Configure presets, globals, shell connection, native hooks, or review | [Advanced launch](docs/advanced-launch.md) |
|
|
191
|
+
| Learn the corpus and preserve a discovery | [Understand!](docs/understand.md) |
|
|
192
|
+
| Check prerequisites and optional tools | [Dependencies](DEPENDENCIES.md) |
|
|
193
|
+
| Develop this repository | [Contributing](CONTRIBUTING.md) — requires a checkout |
|
|
194
|
+
|
|
195
|
+
Use `agent-bios help` and `agent-bios corpus --help` for command discovery.
|
|
196
|
+
Source references: [delivery surfaces](SURFACES.md), [network contract](ENDPOINTS.md),
|
|
197
|
+
and [terminology](LEXICON.md).
|
|
544
198
|
|
|
545
199
|
## Adopting elsewhere
|
|
546
200
|
|
|
547
|
-
|
|
201
|
+
Review the `(private)` bindings and environment-specific dependencies before
|
|
202
|
+
adopting the defaults. Keep personal adjustments in Corpus Studio, or follow
|
|
203
|
+
[the source-authoring workflow](CONTRIBUTING.md#adopting-elsewhere) when changing
|
|
204
|
+
what the package ships.
|
|
548
205
|
|
|
549
206
|
## Scope
|
|
550
207
|
|
|
551
|
-
The
|
|
552
|
-
|
|
553
|
-
|
|
208
|
+
The package contains instruction sources and runtime machinery, not your
|
|
209
|
+
personal corpus state, learning events, session pins, credentials, or native settings.
|
|
210
|
+
|
|
211
|
+
## License
|
|
212
|
+
|
|
213
|
+
[MIT](LICENSE).
|