agent-bios 0.19.1 → 0.19.3

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 (106) hide show
  1. package/DEPENDENCIES.md +58 -30
  2. package/INSTALL.md +4 -4
  3. package/README.md +105 -28
  4. package/claude/CLAUDE.md +1 -1
  5. package/claude/guides/claude-prompting.md +1 -1
  6. package/claude/guides/cli-multi-model-workflow.md +4 -4
  7. package/claude/guides/coding-staged-workflow.md +17 -0
  8. package/claude/guides/documentation-hygiene.md +3 -0
  9. package/claude/guides/gpt-prompting.md +1 -1
  10. package/claude/guides/korean-writing.md +153 -0
  11. package/claude/guides/learning-flow.md +4 -4
  12. package/claude/guides/llm-capability-boundary.md +7 -1
  13. package/claude/guides/session-distill-workflow.md +8 -8
  14. package/claude/guides/slide-writing/RUNBOOK.md +5 -5
  15. package/claude/guides/tooling-gotchas.md +20 -1
  16. package/claude/guides/ui-design/visual-direction.md +88 -0
  17. package/claude/guides/ui-design.md +90 -0
  18. package/claude/guides/verification-discipline.md +10 -1
  19. package/claude/hooks/tooling-gotchas-hook.py +41 -0
  20. package/claude/skills/repo-charter/SKILL.md +3 -3
  21. package/claude/skills/understand/SKILL.md +5 -5
  22. package/codex/AGENTS.md +1 -1
  23. package/codex/guides/claude-prompting.md +1 -1
  24. package/codex/guides/cli-multi-model-workflow.md +4 -4
  25. package/codex/guides/coding-staged-workflow.md +17 -0
  26. package/codex/guides/documentation-hygiene.md +3 -0
  27. package/codex/guides/gpt-prompting.md +1 -1
  28. package/codex/guides/korean-writing.md +153 -0
  29. package/codex/guides/learning-flow.md +4 -4
  30. package/codex/guides/llm-capability-boundary.md +7 -1
  31. package/codex/guides/session-distill-workflow.md +8 -8
  32. package/codex/guides/slide-writing/RUNBOOK.md +5 -5
  33. package/codex/guides/tooling-gotchas.md +20 -1
  34. package/codex/guides/ui-design/visual-direction.md +88 -0
  35. package/codex/guides/ui-design.md +90 -0
  36. package/codex/guides/verification-discipline.md +10 -1
  37. package/compose/app_bridge/SKILL.md +12 -12
  38. package/compose/app_bridge/scripts/bridge.py +35 -10
  39. package/compose/app_desktop/server.py +250 -0
  40. package/compose/assemble.py +5 -5
  41. package/compose/bootstrap/SKILL.md +18 -18
  42. package/compose/canary.sh +4 -4
  43. package/compose/check-domains.py +6 -6
  44. package/compose/corpus-state.py +16 -1168
  45. package/compose/corpus.py +13 -402
  46. package/compose/corpus_app.py +14 -450
  47. package/compose/corpus_catalog.py +15 -926
  48. package/compose/corpus_import.py +14 -523
  49. package/compose/corpus_install.py +14 -1847
  50. package/compose/corpus_session.py +16 -848
  51. package/compose/corpus_setup.py +16 -672
  52. package/compose/corpus_setup_cli.py +15 -580
  53. package/compose/corpus_setup_i18n.py +20 -324
  54. package/compose/corpus_setup_ui.py +18 -645
  55. package/compose/corpus_store.py +16 -1664
  56. package/compose/corpus_transaction.py +15 -284
  57. package/compose/corpus_ui.py +17 -972
  58. package/compose/corpus_ui_runtime.py +16 -274
  59. package/compose/corpus_understand.py +13 -671
  60. package/compose/domains.json +3 -1
  61. package/compose/host_platform.py +121 -0
  62. package/compose/instructions-state.py +1178 -0
  63. package/compose/instructions.py +409 -0
  64. package/compose/instructions_app.py +697 -0
  65. package/compose/instructions_catalog.py +931 -0
  66. package/compose/instructions_import.py +537 -0
  67. package/compose/instructions_install.py +1932 -0
  68. package/compose/instructions_session.py +852 -0
  69. package/compose/instructions_setup.py +713 -0
  70. package/compose/instructions_setup_cli.py +607 -0
  71. package/compose/instructions_setup_i18n.py +327 -0
  72. package/compose/instructions_setup_ui.py +647 -0
  73. package/compose/instructions_store.py +1668 -0
  74. package/compose/instructions_transaction.py +308 -0
  75. package/compose/instructions_ui.py +975 -0
  76. package/compose/instructions_ui_runtime.py +279 -0
  77. package/compose/instructions_understand.py +678 -0
  78. package/compose/native_cli.py +52 -0
  79. package/compose/register-hooks.py +1 -1
  80. package/compose/runtime_entry.py +58 -0
  81. package/compose/setup/START.md +11 -11
  82. package/compose/windows_deploy.py +719 -0
  83. package/docs/advanced-launch.md +11 -11
  84. package/docs/instructions-compatibility.md +86 -0
  85. package/docs/{corpus.md → instructions.md} +36 -8
  86. package/docs/recovery.md +10 -10
  87. package/docs/releases/0.19.2.md +38 -0
  88. package/docs/releases/0.19.3.md +107 -0
  89. package/docs/session-model.md +31 -20
  90. package/docs/setup.md +63 -26
  91. package/docs/understand.md +6 -6
  92. package/docs/windows.md +99 -0
  93. package/install.sh +71 -69
  94. package/launch/agent-launch.py +309 -293
  95. package/launch/agent-launch.toml +2 -2
  96. package/launch/agent-launch.zsh +11 -1
  97. package/launch/i18n/en.toml +55 -55
  98. package/launch/i18n/ja.toml +56 -56
  99. package/launch/i18n/ko.toml +56 -56
  100. package/launch/shell_integration.py +4 -4
  101. package/learn/collect-learning.py +10 -10
  102. package/learn/learning.schema.json +1 -1
  103. package/learn/migrate-learnings.py +51 -51
  104. package/package.json +33 -12
  105. package/provenance.json +1 -1
  106. /package/docs/assets/{corpus-studio.svg → instructions-studio.svg} +0 -0
package/docs/setup.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Setup, app connection, and personal instructions
2
2
 
3
- [← Overview](../README.md) · [Corpus](corpus.md) · [Sessions](session-model.md) · [Recovery](recovery.md)
3
+ [← Overview](../README.md) · [Instructions](instructions.md) · [Sessions](session-model.md) · [Recovery](recovery.md)
4
4
 
5
- Install `agent-bios@0.19.1` through the [README quick start](../README.md#quick-start)
5
+ Install `agent-bios@0.19.0` through the [README quick start](../README.md#quick-start)
6
6
  to use the guided installer, conversation setup, app bridge and instruction import.
7
7
  Commands below use the installed `agent-bios` CLI. From a source checkout, run
8
8
  `bash install.sh <command>` at its root instead.
@@ -33,7 +33,7 @@ older installation mode.
33
33
  Install the exact package version, then start setup:
34
34
 
35
35
  ```bash
36
- npm install -g agent-bios@0.19.1
36
+ npm install -g agent-bios@0.19.0
37
37
  agent-bios install
38
38
  ```
39
39
 
@@ -43,33 +43,33 @@ For the source alternative, obtain the repository through its Code menu and run
43
43
  `install` and `onboard` open the wizard by default. After the language choice,
44
44
  four stages collect the choices:
45
45
 
46
- 1. **Corpus:** no active corpus, all available corpus, selected packages/domains,
46
+ 1. **Instructions:** no active instructions, all available instructions, selected packages/domains,
47
47
  or saved policy on an existing installation. **Connect to the Codex app** is
48
48
  an independent option for adding `$agent-bios` to app conversations.
49
49
  2. **Personal instructions:** optionally add project folders and select detected
50
- global/project instruction files for capture. This is independent of corpus use.
50
+ global/project instruction files for capture. This is independent of instructions use.
51
51
  3. **Dependencies:** inspect the full inventory. Ready dependencies are checked
52
52
  and cannot be toggled; only missing dependencies with a supported recipe can
53
53
  be selected for installation. Leaving those unselected installs none.
54
54
  4. **Review:** inspect the effects and, when useful, expand exact commands and
55
55
  paths before Apply.
56
56
 
57
- The fresh wizard starts with no active corpus. Reinstalling keeps saved choices
58
- unless you change them. No active corpus retains the library privately but delivers
59
- no corpus instruction text or management bootstrap. Explicit selected mode includes
57
+ The fresh wizard starts with no active instructions. Reinstalling keeps saved choices
58
+ unless you change them. Selecting **No active instructions** retains the library privately but delivers
59
+ no agent-bios instruction text or management bootstrap. Explicit selected mode includes
60
60
  only its targets within applicable host/project scope; it does not add unrelated
61
61
  enabled items or implicit core content.
62
62
 
63
63
  Personal instructions and host learning records already on this device appear in
64
64
  a separate checked, read-only list with stored item counts. These entries describe
65
- retained content across project scopes, not the active corpus policy or new installation
66
- choices. No active corpus preserves them. Use Corpus Studio for personal content and
65
+ retained content across project scopes, not the active instructions policy or new installation
66
+ choices. Selecting **No active instructions** preserves them. Use Instructions Studio for personal content and
67
67
  selection changes; merely displaying stored content does not activate it. The list
68
68
  can also show retained content after private runtime removal.
69
69
 
70
- The installer, launcher and Corpus Studio use a verified UI bundle without downloading or installing
70
+ The installer, launcher and Instructions Studio use a verified UI bundle without downloading or installing
71
71
  Textual. Its extraction is temporary and removed on exit. Missing or damaged
72
- bundled UI fails explicitly. Language changes presentation, not corpus text,
72
+ bundled UI fails explicitly. Language changes presentation, not instructions text,
73
73
  identifiers or host settings.
74
74
 
75
75
  Back preserves your choices. Cancelling before Apply performs no planned setup
@@ -81,8 +81,8 @@ before retrying rather than assuming everything rolled back.
81
81
  Selection flags seed the wizard; they do not skip it:
82
82
 
83
83
  ```bash
84
- agent-bios install --corpus none
85
- agent-bios install --corpus selected --select '@agent-bios/core/builder-base'
84
+ agent-bios install --instructions none
85
+ agent-bios install --instructions selected --select '@agent-bios/core/builder-base'
86
86
  agent-bios install --dry-run
87
87
  ```
88
88
 
@@ -90,15 +90,15 @@ agent-bios install --dry-run
90
90
  machine route. Direct storage-only examples are:
91
91
 
92
92
  ```bash
93
- agent-bios install --non-interactive --corpus none
94
- agent-bios install --non-interactive --corpus all
95
- agent-bios install --non-interactive --corpus selected --select '@agent-bios/core/builder-base'
93
+ agent-bios install --non-interactive --instructions none
94
+ agent-bios install --non-interactive --instructions all
95
+ agent-bios install --non-interactive --instructions selected --select '@agent-bios/core/builder-base'
96
96
  ```
97
97
 
98
98
  Those direct commands do not collect dependency, app or import choices. Use the
99
99
  shared conversation protocol below for a complete machine setup plan. The legacy
100
100
  `--domains` flag requires `--non-interactive` and retains its implicit core/infra
101
- meaning; `--domains none` is different from `--corpus none`.
101
+ meaning; `--domains none` is different from `--instructions none`.
102
102
 
103
103
  ## Setup through conversation or automation
104
104
 
@@ -119,7 +119,7 @@ agent-bios setup resume --review-id REVIEW_ID
119
119
  `start` returns the supported languages, execution target and guide without
120
120
  dependency probes or private setup writes. Choose the language before `inspect`.
121
121
  The agent produces the six choice fields from your answers and saves the entire
122
- engine-issued review. It shows the selected commands, destinations, corpus policy,
122
+ engine-issued review. It shows the selected commands, destinations, instructions policy,
123
123
  app change and capture sources before applying authorized effects. The engine
124
124
  rejects a changed source, environment, plan or state; `--yes` alone is not evidence
125
125
  that the effects were reviewed.
@@ -127,7 +127,8 @@ that the effects were reviewed.
127
127
  Dependency readiness and installation intent are separate: an already available
128
128
  dependency never belongs in the requested `dependencies` list or new install actions.
129
129
  The separate `retained_corpus` inventory contains `{target, label, item_count}` rows,
130
- with localized labels in `display.retained_corpus`, and no instruction bodies. Source
130
+ with localized labels in `display.retained_corpus`, and no instruction bodies. These
131
+ serialized names remain for [compatibility](instructions-compatibility.md). Source
131
132
  package choices and the selected activation policy remain independent of that storage
132
133
  view; retained entries are not added to `targets` by being displayed.
133
134
 
@@ -139,7 +140,43 @@ it does not replay uncertain operations. The agent follows the full procedure in
139
140
  [START.md](../compose/setup/START.md), including exact review preservation and verified
140
141
  entrypoint handoff. Source and reviewed artifacts remain available for recovery.
141
142
 
142
- ## Use corpus in a Codex app task
143
+ ## Use instructions in Claude Desktop
144
+
145
+ Claude Desktop has no launcher to start its conversations and no skill folder an
146
+ installer can reach, so agent-bios reaches it through a local extension:
147
+
148
+ ```bash
149
+ agent-bios app desktop --dry-run --json
150
+ agent-bios app desktop
151
+ ```
152
+
153
+ The command writes `agent-bios.mcpb` under the private state root and prints its path.
154
+ Open that file with Claude Desktop and confirm the installation dialog; agent-bios never
155
+ writes into Desktop's own folders or configuration. The extension runs Python at the
156
+ absolute path the file names — the interpreter that ran the command, which must be 3.11
157
+ or newer. Run the command again after changing that Python; an agent-bios update alone
158
+ needs no new file, because the extension finds the current installation on every call.
159
+
160
+ In a conversation, ask for your agent-bios instructions. The assistant calls `use`, which
161
+ returns your saved installation selection, or a selection you name in the request.
162
+ Desktop sends no conversation identity, so the first preview or use returns a
163
+ `session_id` that later calls in the same conversation pass back. Desktop delivery has
164
+ no project scope: imported instructions scoped to a project folder are not included.
165
+
166
+ The returned text ends with a line beginning `agent-bios end`. When the assistant reports
167
+ that line through `status`, the receipt records that the text was read to its end. It
168
+ does not show whether Desktop kept the text in the message or saved it to a file, and a
169
+ delivery never reported back stays unconfirmed. Off stops further use in that
170
+ conversation but cannot remove text already returned; start a new conversation for clean
171
+ exclusion.
172
+
173
+ The extension adds four tools to every Desktop conversation, in chat and in the Code tab.
174
+ Remove it from Desktop's extension settings to stop that cost. The Code tab also has a
175
+ working folder, but the extension cannot see it, so project-scoped instructions stay
176
+ excluded there as well. This route was measured on Claude Desktop 2.16120.0 for macOS;
177
+ Windows is not supported yet.
178
+
179
+ ## Use instructions in a Codex app task
143
180
 
144
181
  Choose **Connect to the Codex app** during setup, or explicitly run:
145
182
 
@@ -155,7 +192,7 @@ entry is preserved. Registration on disk does not prove the app discovered it;
155
192
  setup can return a usable helper path to continue before discovery refreshes.
156
193
 
157
194
  Once discovered, use `$agent-bios` in the chosen task. Ask it to manage the library,
158
- change setup, show task status, or explicitly use selected corpus in this task.
195
+ change setup, show task status, or explicitly use selected instructions in this task.
159
196
  A setup or management request does not activate content. Each task starts with
160
197
  managed delivery off and requires its own explicit use.
161
198
 
@@ -165,13 +202,13 @@ Use previews a `ContentRef` and then returns the exact snapshot's
165
202
  Session operations require the real task ID, normally `CODEX_THREAD_ID`. Setup and
166
203
  management do not require that ID. App use enables no hooks, agents or permissions.
167
204
 
168
- Ask `$agent-bios` to turn corpus delivery off to stop consulting it in subsequent
205
+ Ask `$agent-bios` to turn instructions delivery off to stop consulting it in subsequent
169
206
  work. Text already returned cannot be erased; a fresh task is needed for clean
170
207
  exclusion. A resumed or forked conversation can carry earlier content independently
171
208
  of the new task's receipt. Native global/project instructions still follow host rules.
172
209
 
173
210
  `agent-bios app unregister` removes only the owned discovery link. It does not erase
174
- prior task context or personal corpus data. Corpus Studio can also run in the app's
211
+ prior task context or personal instructions data. Instructions Studio can also run in the app's
175
212
  integrated terminal; editing it changes future snapshots, not current task context.
176
213
 
177
214
  ## Import existing instructions
@@ -190,14 +227,14 @@ agent-bios import apply PLAN_ID --expected-revision REV --json
190
227
  Discovery checks known global locations and fixed filenames in chosen project
191
228
  roots. It does not crawl the home directory or follow instruction references.
192
229
  Capture preserves originals and stores redacted evidence with source digests
193
- privately. It is pending review, not an automatically optimized personal corpus.
230
+ privately. It is pending review, not an automatically optimized personal instructions.
194
231
 
195
232
  In an app task, ask `$agent-bios` to review the returned capture ID. The agent
196
233
  proposes content, `always`/`relevant`/`requested` placement, rationale, and source-line
197
234
  coverage or exclusions. The runtime checks the evidence and structure, and Apply
198
235
  requires the reviewed revision. Changed originals or conflicting edits require
199
236
  fresh review. Project-scoped imports remain limited to their recorded root and
200
- applicable hosts, even when all corpus or an enable override is selected.
237
+ applicable hosts, even when all instructions or an enable override is selected.
201
238
 
202
239
  Native hosts may still read the untouched originals. Importing a procedure as
203
240
  requested content does not suppress the same rule in a native file, and changing
@@ -1,8 +1,8 @@
1
- # Understand why the corpus works this way
1
+ # Understand why the instructions work this way
2
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)
3
+ [← Overview](../README.md) · [Setup](setup.md) · [Instructions](instructions.md) · [Sessions](session-model.md) · [Recovery](recovery.md) · [Launch](advanced-launch.md) · [Understand!](understand.md)
4
4
 
5
- Understand! is learning for the person using the corpus, not model training. It explores reasons and limits through a conversation rather than asking you to memorize files.
5
+ Understand! is learning for the person using the instructions, not model training. It explores reasons and limits through a conversation rather than asking you to memorize files.
6
6
 
7
7
  ## Start a learning session
8
8
 
@@ -16,7 +16,7 @@ agent-launch --understand core-purpose claude # or codex
16
16
 
17
17
  The selection is a coherent bundle, not an individual file: core groups cover goals
18
18
  and scope, decision support, adaptation, evidence/safety, and retained learning;
19
- domain and personal bundles come from the effective corpus. A session freezes its
19
+ domain and personal bundles come from the effective instructions. A session freezes its
20
20
  selected source references and edited content. The tutor explains the purpose,
21
21
  background, mechanisms, tradeoffs, and limits, distinguishing documented rationale
22
22
  from inference. The tutor chooses a small finite set of core points and tracks their
@@ -74,11 +74,11 @@ ordering, and asks for a later exact save confirmation. Unsupported provenance l
74
74
  the award pending, without blocking learning. Significance and semantic originality
75
75
  remain explicit tutor/user judgments; transcript validation does not prove them or
76
76
  authenticate against an owner who can edit local files. Only a successfully saved
77
- requested-only personal corpus note can unlock the trophy. The CLI prints it, and the
77
+ requested-only personal instructions note can unlock the trophy. The CLI prints it, and the
78
78
  TUI shows it when there is room. Retries do not duplicate the note; updates and note
79
79
  deletion retain the trophy. Full reset archives the active unlock generation and clears
80
80
  the display; older discovery records cannot reactivate it. Native global files and
81
- corpus source rules are not rewritten by learning.
81
+ instructions source rules are not rewritten by learning.
82
82
 
83
83
  The runtime checks a new proposal's complete review-response size before storing
84
84
  its candidate. An oversized proposal can be shortened and retried without leaving
@@ -0,0 +1,99 @@
1
+ # Windows native installation
2
+
3
+ The Windows build provides a per-user installer and `agent-bios.exe` with its own
4
+ Python runtime. Node.js, npm, a system Python installation and WSL are not required
5
+ for the Instructions library and setup. Model host CLIs remain separate dependencies.
6
+
7
+ Run the Windows x64 setup executable, then open setup from the final page or the
8
+ Start menu. A newly opened PowerShell can run `agent-bios install` or
9
+ `agent-bios instructions`. Existing terminal processes need restarting to pick up
10
+ user PATH changes. The installer does not change PowerShell execution policy or
11
+ intercept bare model commands.
12
+
13
+ Re-running the installer updates program files. `agent-bios install` refreshes the
14
+ private library while retaining saved selection and personal authoring. Removing
15
+ the application removes its owned PATH entry; private instructions and session
16
+ records remain in the user's home. Windows and WSL have separate homes and stores.
17
+
18
+ The native build is experimental until the Windows workflow's artifact and lifecycle
19
+ checks pass for the exact candidate. Fixture tests do not establish live host login,
20
+ model execution, app skill discovery or interactive Korean IME behavior. Native
21
+ hooks and the shell-based multi-model worker adapters require separate Windows
22
+ qualification. File contents are flushed; process-recovery tests are not proof of
23
+ power-loss durability on Windows.
24
+
25
+ ## Script distribution with an approved Python
26
+
27
+ A second Windows route installs agent-bios as scripts and data without a custom
28
+ EXE launcher or an EXE installer. It targets organizations whose application
29
+ control permits PowerShell and CPython but blocks unrecognized executables. The
30
+ Windows workflow builds and exercises this route on every change; the Windows
31
+ script release workflow publishes it as a GitHub release whose page carries the
32
+ one-line PowerShell command for that exact release.
33
+
34
+ The repository's GitHub Pages installation page also provides a shorter command
35
+ at a fixed address. It names `powershell` and relaxes that process's execution
36
+ policy, so it runs from the Command Prompt and the Run box as well as from an open
37
+ PowerShell, and on a machine whose policy nobody changed. It saves the script to a
38
+ fixed name under the temporary directory and invokes that file, rather than
39
+ evaluating the downloaded text: the bootstrap authenticates itself through its own
40
+ file path, which text piped into the shell does not have. The command carries no
41
+ PowerShell variable, because a command pasted into PowerShell is expanded by that
42
+ shell before the child starts. This convenience command trusts the HTTPS
43
+ site for the initial script; it does not check that script's hash before execution.
44
+ Dependent downloads still undergo the installer's checks. The fixed address
45
+ serves an explicitly promoted release, so publishing another release does not
46
+ silently change it. Preview commands retain `-AcceptUnsignedPreview`.
47
+
48
+ The same page carries a `curl` one-liner for macOS and Linux. That route is not
49
+ this Windows distribution: it installs the published npm package, which needs
50
+ Node.js and python3 already present, and then names the command that deploys the
51
+ work environment rather than opening its chooser over a pipe.
52
+
53
+ Releases come in two channels. A stable release is Authenticode-signed with the
54
+ project's release signing identity. Copy the version-specific command from its
55
+ release page: the command carries the SHA-256 of that final bootstrap and the
56
+ approved signer thumbprint, and checks both before invoking the saved script.
57
+ The generic latest URL is not an execution command: a moving asset cannot match
58
+ a fixed digest indefinitely. Release publication generates the command only after
59
+ all script signing is complete.
60
+
61
+ A preview release is published as a prerelease without a signing identity. Its
62
+ bootstrap refuses to run unless the caller adds `-AcceptUnsignedPreview`, and
63
+ it prints a warning when accepted; the manifest and asset hashes pinned inside
64
+ the script are still enforced. New preview release pages carry a tag-pinned command with that flag and a
65
+ bootstrap digest check before execution. Older preview pages may require the user
66
+ to compare the published bootstrap digest separately; their assets are not rewritten. Each published
67
+ command relaxes the execution policy for the process it starts, because a machine
68
+ nobody configured refuses scripts under the default Restricted policy. Neither
69
+ that relaxation nor anything installed edits the machine's saved policy, and a
70
+ policy imposed by a domain still refuses: the invocation's own error names it.
71
+
72
+ After caller-side verification, the bootstrap verifies the pinned release manifest
73
+ and dependent archives before running downloaded application or runtime code. It reuses an approved
74
+ CPython 3.13 x64 installation found on the machine, or provisions the pinned
75
+ official embeddable runtime into an application-private folder. Neither an
76
+ existing Python nor its packages are modified. The bootstrap adds the command
77
+ directory to the current PowerShell session, so `agent-bios` and `agent-launch`
78
+ work without reopening the terminal; other open terminals are unaffected.
79
+
80
+ The installed commands are static signed wrappers, `agent-bios.ps1` and
81
+ `agent-launch.ps1`, that read a local deployment binding and run the bundled
82
+ application through the bound interpreter. Beside each one the installer writes a
83
+ generated `.cmd` shim, because Windows does not treat `.ps1` as executable: without
84
+ the shim the PATH entry serves PowerShell alone and `agent-bios` is unavailable in
85
+ the Command Prompt, the Run box, and to any program that spawns a command. The
86
+ shim is generated rather than shipped since Authenticode cannot sign a `.cmd`; its
87
+ bytes are fixed and recorded in the deployment's ownership inventory, so a modified
88
+ shim is refused exactly like a modified command. `agent-bios uninstall` removes owned
89
+ commands, shims, shortcuts and the owned PATH entry; private instructions, session
90
+ records and any preexisting Python are retained.
91
+
92
+ This route is qualified on the Windows workflow runner in PowerShell 5.1 and 7
93
+ with runner-only test signing, and the release workflow re-runs that
94
+ qualification on the exact assets before it publishes them and then verifies
95
+ the published command anonymously. Validation on a policy-managed machine is a
96
+ separate step that no workflow establishes. Executable code still runs:
97
+ PowerShell, curl and Python, plus native modules inside the dependency bundle.
98
+ Migration of an existing EXE installation into this route is refused rather
99
+ than attempted.