Review follow-up (tianyicui): plan mode and the sandbox are orthogonal
AXES, not just orthogonal state — entering plan must not change what the
sandbox enforces, matching Codex's separation of Plan/Default
collaboration presets from sandbox and approval settings.
ModeDefinition.access, the bash/resolve-mode clamp, and both cap-derived
guards are removed; a ModeDefinition is exactly { section }, and a mode
now carries only its guidance section plus the exit_plan_mode review.
The bash seam's resolveMode + waterfall go with their only listener:
dsh-bash and dsh-tool-bash revert to master byte-for-byte, and the
dsh-mode → dsh-bash dependency edge is gone. A deployment that wants
kernel-enforced read-only planning pairs the mode picker with the
independent sandbox-mode option, in either order.
The RFC archives this as the second removed enforcement shape (after
the interim allowlist) with the same restart trigger — effects
self-declaration; the orthogonality FAQ now answers with the two-axis
rule. The plan example demonstrates the axes side by side, and the
re-recorded fixtures pin the guidance-only section.
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
<!-- Generated by scripts/gen-website-api.ts — do not edit by hand. Run `pnpm run gen-website-api` to regenerate. -->
|
|
|
|
# ctx.bashEnv
|
|
|
|
`BashEnvRegistry` — provided by `@deepseek-ai/dsh-tool-bash`.
|
|
|
|
Registry (`ctx.bashEnv`) for trusted, per-execution `DSH_*` variables. The namespace is rebuilt for every model bash call: ambient `DSH_*` values are discarded by the executor, then the registry's current snapshot is injected. Built-in shell facts remain owned by the registry itself while plugins can register additional, enumerable facts with effect-scoped disposal.
|
|
|
|
[Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/bash/tool-bash/src/index.ts#L102)
|
|
|
|
### ctx.bashEnv.register(contributor)
|
|
|
|
```ts website-api
|
|
register(contributor: BashEnvContributor): () => void
|
|
```
|
|
|
|
Register one environment contributor. Names and keys are unique; built-in keys are reserved. Registration is disposed with the calling plugin fiber.
|
|
|
|
- `contributor` — declared key ownership and per-execution resolver.
|
|
|
|
**Returns** the disposer that unregisters the contribution.
|
|
|
|
[Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/bash/tool-bash/src/index.ts#L123)
|
|
|
|
### ctx.bashEnv.collect(execution)
|
|
|
|
```ts website-api
|
|
collect(execution: ToolExecution): DshEnvironment
|
|
```
|
|
|
|
Build the trusted `DSH_*` snapshot for one bash tool execution.
|
|
|
|
- `execution` — the current tool execution.
|
|
|
|
**Returns** an immutable environment overlay containing built-ins and current contributions.
|
|
|
|
[Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/bash/tool-bash/src/index.ts#L165)
|
|
|
|
### ctx.bashEnv.list()
|
|
|
|
```ts website-api
|
|
list(): BashEnvVariableInfo[]
|
|
```
|
|
|
|
Enumerate plugin-contributed variables without executing their resolvers.
|
|
|
|
**Returns** declarations sorted by environment variable name.
|
|
|
|
[Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/bash/tool-bash/src/index.ts#L197)
|