agent-bios 0.19.2 → 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.
- package/DEPENDENCIES.md +32 -4
- package/README.md +54 -4
- package/claude/guides/cli-multi-model-workflow.md +1 -1
- package/claude/guides/coding-staged-workflow.md +17 -0
- package/claude/guides/llm-capability-boundary.md +7 -1
- package/claude/guides/tooling-gotchas.md +20 -1
- package/claude/guides/ui-design/visual-direction.md +88 -0
- package/claude/guides/ui-design.md +90 -0
- package/claude/guides/verification-discipline.md +10 -1
- package/claude/hooks/tooling-gotchas-hook.py +41 -0
- package/codex/guides/cli-multi-model-workflow.md +1 -1
- package/codex/guides/coding-staged-workflow.md +17 -0
- package/codex/guides/llm-capability-boundary.md +7 -1
- package/codex/guides/tooling-gotchas.md +20 -1
- package/codex/guides/ui-design/visual-direction.md +88 -0
- package/codex/guides/ui-design.md +90 -0
- package/codex/guides/verification-discipline.md +10 -1
- package/compose/app_bridge/scripts/bridge.py +23 -6
- package/compose/app_desktop/server.py +250 -0
- package/compose/domains.json +1 -0
- package/compose/host_platform.py +121 -0
- package/compose/instructions-state.py +5 -2
- package/compose/instructions_app.py +281 -48
- package/compose/instructions_catalog.py +2 -2
- package/compose/instructions_import.py +19 -11
- package/compose/instructions_install.py +77 -11
- package/compose/instructions_session.py +6 -6
- package/compose/instructions_setup.py +41 -4
- package/compose/instructions_setup_cli.py +31 -10
- package/compose/instructions_setup_i18n.py +3 -0
- package/compose/instructions_store.py +6 -6
- package/compose/instructions_transaction.py +8 -6
- package/compose/instructions_ui_runtime.py +2 -1
- package/compose/native_cli.py +52 -0
- package/compose/runtime_entry.py +58 -0
- package/compose/windows_deploy.py +719 -0
- package/docs/instructions.md +1 -0
- package/docs/releases/0.19.3.md +107 -0
- package/docs/session-model.md +8 -0
- package/docs/setup.md +36 -0
- package/docs/windows.md +99 -0
- package/install.sh +1 -0
- package/launch/agent-launch.py +12 -4
- package/launch/agent-launch.zsh +11 -1
- package/package.json +8 -3
- package/provenance.json +1 -1
package/docs/instructions.md
CHANGED
|
@@ -104,6 +104,7 @@ instruction does not prove that a model read or followed it.
|
|
|
104
104
|
| --- | --- |
|
|
105
105
|
| `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 |
|
|
106
106
|
| `coding-staged-workflow` | staged development: design → process → implement, lightweight path, review loop, severity contract, stop conditions |
|
|
107
|
+
| `ui-design` | operational task flows, evidence and authority, visual hierarchy, design tokens and layout; conditional visual-direction companion |
|
|
107
108
|
| `verification-discipline` | verification depth and per-domain mix (owns the Verification Menus), case space, what a green result is worth |
|
|
108
109
|
| `concept-economy` | concept-surface economy: reuse / extend / rename / split, split triggers, migration compatibility |
|
|
109
110
|
| `documentation-hygiene` | where comments, history, and handoffs belong; how to phrase rules others follow |
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# agent-bios 0.19.3
|
|
2
|
+
|
|
3
|
+
Release changes relative to 0.19.2.
|
|
4
|
+
|
|
5
|
+
## Windows without npm or WSL
|
|
6
|
+
|
|
7
|
+
Windows installs as scripts and data bound to an approved CPython 3.13, with no
|
|
8
|
+
custom executable and no EXE installer. It targets machines whose application
|
|
9
|
+
control permits PowerShell and Python but blocks unrecognized executables. The
|
|
10
|
+
bootstrap reuses an approved CPython already on the machine, or provisions the
|
|
11
|
+
pinned official embeddable runtime into an application-private folder; neither an
|
|
12
|
+
existing Python nor its packages are modified.
|
|
13
|
+
|
|
14
|
+
The installed commands are `agent-bios` and `agent-launch`. Each is a static
|
|
15
|
+
wrapper plus a generated `.cmd` shim, because Windows does not treat `.ps1` as
|
|
16
|
+
executable: without the shim a PATH directory holding only wrappers is reachable
|
|
17
|
+
from PowerShell alone, and the Command Prompt, the Run box and any program that
|
|
18
|
+
spawns a command find nothing while PATH is correct. The shim is generated at
|
|
19
|
+
installation rather than shipped, since Authenticode cannot sign a `.cmd`; its
|
|
20
|
+
bytes are fixed and recorded in the deployment's ownership inventory, so a
|
|
21
|
+
modified shim is refused exactly like a modified command.
|
|
22
|
+
|
|
23
|
+
`agent-bios uninstall` removes owned commands, shims, shortcuts and the owned
|
|
24
|
+
PATH entry. Private instructions, session records and any preexisting Python are
|
|
25
|
+
retained.
|
|
26
|
+
|
|
27
|
+
## A fixed installation address
|
|
28
|
+
|
|
29
|
+
The project's installation page serves one explicitly promoted release at a fixed
|
|
30
|
+
URL, so publishing another release does not silently change what the address
|
|
31
|
+
installs. It carries a one-line command per platform.
|
|
32
|
+
|
|
33
|
+
Each command relaxes the PowerShell execution policy for the single process it
|
|
34
|
+
starts, because the default policy on an unconfigured Windows client is
|
|
35
|
+
Restricted and refuses a downloaded script. The machine's saved policy is not
|
|
36
|
+
edited, and a domain-imposed policy still refuses through the invocation's own
|
|
37
|
+
error. The Windows command names the interpreter, so it can be pasted into the
|
|
38
|
+
Command Prompt or the Run box rather than only into an open PowerShell.
|
|
39
|
+
|
|
40
|
+
The macOS and Linux command installs the published npm release and stops, naming
|
|
41
|
+
the command that deploys the work environment: `curl | bash` gives the shell a
|
|
42
|
+
pipe, and the interactive chooser needs a terminal. It also reports the case npm
|
|
43
|
+
leaves behind — a successful global install whose command the caller's PATH does
|
|
44
|
+
not carry.
|
|
45
|
+
|
|
46
|
+
Windows releases come in two channels. Stable is Authenticode-signed and
|
|
47
|
+
timestamped. Preview is published without a signing identity and refuses to run
|
|
48
|
+
unless the caller adds `-AcceptUnsignedPreview`; the hashes pinned inside the
|
|
49
|
+
bootstrap still guard the manifest, the application archive and the runtime
|
|
50
|
+
archive.
|
|
51
|
+
|
|
52
|
+
## Claude Desktop
|
|
53
|
+
|
|
54
|
+
Claude Desktop opens conversations without a launcher and exposes no skill folder an
|
|
55
|
+
installer can reach ahead of time, so agent-bios reaches it as a local extension the
|
|
56
|
+
user installs once. `agent-bios app desktop` writes a `.mcpb` file under the private
|
|
57
|
+
state root; opening it with Desktop installs a standard-library stdio MCP server with
|
|
58
|
+
four tools: status, preview, use and off. agent-bios writes nothing into Desktop's own
|
|
59
|
+
folders or configuration.
|
|
60
|
+
|
|
61
|
+
`use` returns the saved installation selection, or a selection named in the request,
|
|
62
|
+
as context for that conversation only. Nothing reaches a conversation that did not
|
|
63
|
+
ask, including one already in progress. Desktop sends no conversation identity with a
|
|
64
|
+
tool call, so the first preview or use returns a `session_id` that later calls pass
|
|
65
|
+
back; a repeated use with it returns the same text without recording a second
|
|
66
|
+
delivery. The returned text ends with an `agent-bios end` line, and reporting that
|
|
67
|
+
line through status records that the text was read to its end. It does not record
|
|
68
|
+
whether Desktop kept the text in the message or saved it to a file, which Desktop
|
|
69
|
+
does not reveal to the extension.
|
|
70
|
+
|
|
71
|
+
The file names the absolute Python that generated it, because Desktop resolves a bare
|
|
72
|
+
`python3` through the login shell's PATH, which on stock macOS reaches 3.9. The server
|
|
73
|
+
finds the current installation on every call, so an agent-bios update needs no new
|
|
74
|
+
file; changing that Python does. Desktop delivery has no project scope, so
|
|
75
|
+
project-scoped imported instructions are not included, in chat or in the Code tab.
|
|
76
|
+
|
|
77
|
+
## Installation reports an unreachable launcher
|
|
78
|
+
|
|
79
|
+
Installation now says when the `agent-launch` it deposits cannot be typed: when
|
|
80
|
+
`~/.local/bin` is not on the shell's PATH, and when the optional zsh connection that
|
|
81
|
+
routes a bare `claude` or `codex` through the launcher is off. Both used to end in a
|
|
82
|
+
success message followed by `command not found`. A reachable installation reports
|
|
83
|
+
nothing new. The terminal interface, the conversation client and the non-interactive
|
|
84
|
+
path share the message.
|
|
85
|
+
|
|
86
|
+
## Instruction guides
|
|
87
|
+
|
|
88
|
+
The multi-model workflow, staged coding workflow, LLM capability boundary,
|
|
89
|
+
tooling gotchas, verification discipline and UI design guides were revised, and
|
|
90
|
+
lessons paid for on a separate deployment line were carried across where this
|
|
91
|
+
line had not already removed them. The tooling-gotchas hook was updated with
|
|
92
|
+
them.
|
|
93
|
+
|
|
94
|
+
## Not established by this release
|
|
95
|
+
|
|
96
|
+
No signing identity exists yet, so the published Windows channel is the unsigned
|
|
97
|
+
preview. Approval by an organization policy or endpoint-protection product is not
|
|
98
|
+
established: a green workflow proves the route on a hosted runner where
|
|
99
|
+
PowerShell and Python are permitted. Migration of an existing EXE installation
|
|
100
|
+
into the script route is refused rather than attempted.
|
|
101
|
+
|
|
102
|
+
The Claude Desktop route was measured on Desktop 2.16120.0 for macOS, in chat and in
|
|
103
|
+
the Code tab. It is not available on Windows, and a later Desktop version is not
|
|
104
|
+
established to load the file until someone checks it.
|
|
105
|
+
|
|
106
|
+
Domain knowledge, Decision memory and shared environment editions remain design
|
|
107
|
+
directions rather than features of this release.
|
package/docs/session-model.md
CHANGED
|
@@ -46,6 +46,14 @@ and returned text do not prove native app discovery or model reading. Off stops
|
|
|
46
46
|
further managed use, but cannot retract earlier context; a new task is needed for
|
|
47
47
|
clean exclusion. Management and instruction capture do not activate task context.
|
|
48
48
|
|
|
49
|
+
## Claude Desktop conversations
|
|
50
|
+
|
|
51
|
+
Desktop conversations pull through the [Desktop extension](setup.md#use-instructions-in-claude-desktop).
|
|
52
|
+
Use returns the selected snapshot as a tool result and records a `returned-as-context`
|
|
53
|
+
receipt under an identity agent-bios mints, because Desktop sends none. An end-marker line
|
|
54
|
+
reported back confirms the text was read to its end, not that it stayed inline. Nothing
|
|
55
|
+
reaches a conversation that did not ask, including one already in progress.
|
|
56
|
+
|
|
49
57
|
## Storage layout
|
|
50
58
|
|
|
51
59
|
From a clone, `bash install.sh install` is the same default path. The release lives
|
package/docs/setup.md
CHANGED
|
@@ -140,6 +140,42 @@ it does not replay uncertain operations. The agent follows the full procedure in
|
|
|
140
140
|
[START.md](../compose/setup/START.md), including exact review preservation and verified
|
|
141
141
|
entrypoint handoff. Source and reviewed artifacts remain available for recovery.
|
|
142
142
|
|
|
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
|
+
|
|
143
179
|
## Use instructions in a Codex app task
|
|
144
180
|
|
|
145
181
|
Choose **Connect to the Codex app** during setup, or explicitly run:
|
package/docs/windows.md
ADDED
|
@@ -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.
|
package/install.sh
CHANGED
|
@@ -1764,6 +1764,7 @@ agent-bios — manage private instructions content for explicitly activated sess
|
|
|
1764
1764
|
agent-bios app register an explicit Codex app bridge or manage per-task instructions input
|
|
1765
1765
|
agent-bios app session use return selected instructions as context for this Codex app task
|
|
1766
1766
|
agent-bios app session off stop future delivery; earlier context requires a new task to exclude
|
|
1767
|
+
agent-bios app desktop write the Claude Desktop extension file; you install it in Desktop
|
|
1767
1768
|
agent-bios understand list instructions learning bundles; --help shows session/discovery commands
|
|
1768
1769
|
agent-bios shell show the optional zsh connection status
|
|
1769
1770
|
agent-bios shell restore make bare claude/codex open the launcher TUI
|
package/launch/agent-launch.py
CHANGED
|
@@ -6,7 +6,6 @@ from __future__ import annotations
|
|
|
6
6
|
import argparse
|
|
7
7
|
import copy
|
|
8
8
|
import datetime
|
|
9
|
-
import fcntl
|
|
10
9
|
import hashlib
|
|
11
10
|
import json
|
|
12
11
|
import os
|
|
@@ -24,6 +23,12 @@ import uuid
|
|
|
24
23
|
from dataclasses import dataclass, field
|
|
25
24
|
from typing import Any, Callable, NoReturn
|
|
26
25
|
|
|
26
|
+
if os.name == "nt":
|
|
27
|
+
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1] / "compose"))
|
|
28
|
+
from host_platform import file_locks as fcntl
|
|
29
|
+
else:
|
|
30
|
+
import fcntl
|
|
31
|
+
|
|
27
32
|
|
|
28
33
|
TIER_ORDER = ("frontier", "helm", "workhorse", "sweep")
|
|
29
34
|
# Review is not work any tier can do. A reviewer must be at least this capable; helm or
|
|
@@ -4123,6 +4128,8 @@ _UI_RUNTIME_RELEASE: Callable[[], None] | None = None
|
|
|
4123
4128
|
def exec_backend(command: str, args: list[str], env: dict[str, str] | None = None) -> NoReturn:
|
|
4124
4129
|
if _UI_RUNTIME_RELEASE is not None:
|
|
4125
4130
|
_UI_RUNTIME_RELEASE()
|
|
4131
|
+
if os.name == "nt":
|
|
4132
|
+
raise SystemExit(subprocess.call([command, *args], env=os.environ.copy() if env is None else env))
|
|
4126
4133
|
os.execve(command, [command, *args], os.environ.copy() if env is None else env)
|
|
4127
4134
|
|
|
4128
4135
|
|
|
@@ -4208,7 +4215,8 @@ def _snapshot_from_config(store, config_path, generation, host, selected, *, dry
|
|
|
4208
4215
|
|
|
4209
4216
|
def open_instructions_studio() -> None:
|
|
4210
4217
|
root = instructions_package_root()
|
|
4211
|
-
|
|
4218
|
+
from host_platform import python_argv
|
|
4219
|
+
result = subprocess.run(python_argv(root / "compose/instructions.py", "--repo", str(root)))
|
|
4212
4220
|
if result.returncode:
|
|
4213
4221
|
print(f"agent-launch: Instructions Studio exited {result.returncode}", file=sys.stderr)
|
|
4214
4222
|
|
|
@@ -6618,7 +6626,7 @@ def register_reviewer_wizard(
|
|
|
6618
6626
|
# a planted symlink and truncates whatever it points at, merely by
|
|
6619
6627
|
# opening the wizard.
|
|
6620
6628
|
lock_fd = os.open(
|
|
6621
|
-
lock_path, os.O_CREAT | os.O_WRONLY | os
|
|
6629
|
+
lock_path, os.O_CREAT | os.O_WRONLY | getattr(os, "O_NOFOLLOW", 0), 0o600
|
|
6622
6630
|
)
|
|
6623
6631
|
with os.fdopen(lock_fd, "w") as lock_handle:
|
|
6624
6632
|
fcntl.flock(lock_handle, fcntl.LOCK_EX)
|
|
@@ -7667,7 +7675,7 @@ def save_preset(
|
|
|
7667
7675
|
try:
|
|
7668
7676
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
7669
7677
|
lock_path = target.with_name(target.name + ".lock")
|
|
7670
|
-
lock_fd = os.open(lock_path, os.O_CREAT | os.O_WRONLY | os
|
|
7678
|
+
lock_fd = os.open(lock_path, os.O_CREAT | os.O_WRONLY | getattr(os, "O_NOFOLLOW", 0), 0o600)
|
|
7671
7679
|
with os.fdopen(lock_fd, "w") as lock_handle:
|
|
7672
7680
|
fcntl.flock(lock_handle, fcntl.LOCK_EX)
|
|
7673
7681
|
try:
|
package/launch/agent-launch.zsh
CHANGED
|
@@ -17,7 +17,17 @@ _agent_launch_direct() {
|
|
|
17
17
|
# provide is handed to whatever the user's function does. `builtin` cannot be shadowed,
|
|
18
18
|
# so the resolution is the one the comment above already promised.
|
|
19
19
|
if [[ "$host" == "claude" && -z "${_agent_launch_private_connection:-}" ]]; then
|
|
20
|
-
|
|
20
|
+
case "${1-}" in
|
|
21
|
+
# These six background-session verbs are dispatched only from the first argument:
|
|
22
|
+
# with a flag in front, `claude attach <id>` is a new session whose prompt is
|
|
23
|
+
# "attach <id>". Measured on 2.1.280 over all 21 subcommand spellings — only these
|
|
24
|
+
# six are displaced, and the other fifteen (mcp, doctor, plugin, project, auth,
|
|
25
|
+
# agents, ultrareview, update ...) parse the flag in front, which is what makes the
|
|
26
|
+
# list this short rather than every verb. They act on a session that already exists,
|
|
27
|
+
# so no permission default belongs in front of them.
|
|
28
|
+
logs|attach|stop|kill|respawn|rm) builtin command claude "$@" ;;
|
|
29
|
+
*) builtin command claude --dangerously-skip-permissions "$@" ;;
|
|
30
|
+
esac
|
|
21
31
|
else
|
|
22
32
|
builtin command "$host" "$@"
|
|
23
33
|
fi
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-bios",
|
|
3
|
-
"version": "0.19.
|
|
4
|
-
"releaseDate": "2026-09-
|
|
3
|
+
"version": "0.19.3",
|
|
4
|
+
"releaseDate": "2026-09-29",
|
|
5
5
|
"description": "A thin, low-level instruction layer for LLM CLI agents: one set of principles and behavior whichever model you run. Stores private, editable instructions for explicitly activated sessions.",
|
|
6
6
|
"bin": {
|
|
7
7
|
"agent-bios": "install.sh"
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"compose/instructions_import.py",
|
|
65
65
|
"compose/instructions_app.py",
|
|
66
66
|
"compose/app_bridge/",
|
|
67
|
+
"compose/app_desktop/",
|
|
67
68
|
"compose/instructions_transaction.py",
|
|
68
69
|
"compose/instructions_understand.py",
|
|
69
70
|
"compose/bootstrap/",
|
|
@@ -83,7 +84,11 @@
|
|
|
83
84
|
"README.md",
|
|
84
85
|
"INSTALL.md",
|
|
85
86
|
"DEPENDENCIES.md",
|
|
86
|
-
"provenance.json"
|
|
87
|
+
"provenance.json",
|
|
88
|
+
"compose/native_cli.py",
|
|
89
|
+
"compose/host_platform.py",
|
|
90
|
+
"compose/runtime_entry.py",
|
|
91
|
+
"compose/windows_deploy.py"
|
|
87
92
|
],
|
|
88
93
|
"scripts": {
|
|
89
94
|
"postinstall": "printf '\\n> agent-bios installed. Deploy into this environment with: agent-bios install\\n> Then: agent-bios verify | status | uninstall\\n\\n'",
|
package/provenance.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"commit":"
|
|
1
|
+
{"commit":"338a16e35f0b6262107a808c9cc20721b6f4facd","committedAt":"2026-09-30T20:23:32+09:00","dirty":false}
|