opencode-landstrip 0.18.43 → 0.19.1

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 (3) hide show
  1. package/README.md +27 -34
  2. package/index.ts +1 -1
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -1,51 +1,44 @@
1
1
  # opencode-landstrip
2
2
 
3
- OpenCode plugin that runs AI `bash` calls through Landstrip.
3
+ Landstrip sandboxing for AI `bash` calls in OpenCode ≥1.17.7.
4
4
 
5
- ## Install
5
+ ## Install and use
6
6
 
7
7
  ```sh
8
- # Current project
9
- opencode plugin install opencode-landstrip
10
-
11
- # Global
12
- opencode plugin install opencode-landstrip --global
8
+ opencode plugin install opencode-landstrip # project
9
+ opencode plugin install opencode-landstrip --global # global
13
10
  ```
14
11
 
15
- The installer configures both the server plugin and TUI presenter.
16
-
17
- ## Permissions
12
+ Installation configures server and TUI plugins. `/landstrip` opens the management
13
+ pane; Pi's agent/task subcommands are unavailable.
18
14
 
19
- OpenCode permissions authorize tool dispatch. Landstrip permissions authorize
20
- filesystem and network access. Agent approval never bypasses a sandbox hard
21
- denial, and requests without a live presenter are denied.
15
+ ## Permissions and configuration
22
16
 
23
- OpenCode intentionally exposes one plugin slash command: `/landstrip`, which
24
- opens the bottom management pane. Pi-only agent and task subcommands are not
25
- available. Persistent approvals update `.opencode/sandbox.json` or
26
- `~/.config/opencode/sandbox.json`.
17
+ OpenCode authorizes tool dispatch; Landstrip enforces filesystem/network access.
18
+ Approval never bypasses hard denials. Interactive requests without a live
19
+ presenter remain denied. Only AI `bash` receives OS isolation: OpenCode's plugin
20
+ API cannot replace direct user shell commands.
27
21
 
28
- ## Configuration
22
+ Policy precedence (persistent approvals update the project/global files):
29
23
 
30
- Policy merges in this order:
24
+ 1. Bundled [`sandbox.json`](sandbox.json).
25
+ 2. `~/.config/opencode/sandbox.json`.
26
+ 3. `.opencode/sandbox.json`.
27
+ 4. Plugin options.
31
28
 
32
- 1. bundled `sandbox.json`;
33
- 2. `~/.config/opencode/sandbox.json`;
34
- 3. `.opencode/sandbox.json`;
35
- 4. plugin options.
29
+ Arrays combine; later scalar values win. Defaults allow project writes, deny
30
+ sensitive-file writes, and block network access. Enabled sandboxing fails closed
31
+ on unusable binaries/platforms; `enabled: false` explicitly permits unsandboxed Bash.
36
32
 
37
- Objects merge recursively, arrays combine, and later scalar values replace
38
- earlier values. The bundled policy denies sensitive files and network access
39
- while allowing project writes. See [`sandbox.json`](sandbox.json) for its exact
40
- defaults.
33
+ See [landstrip(1)](../landstrip/man/man1/landstrip.1) for native CLI/policy semantics.
34
+ Runtime seccomp traps/query approval are Linux-only. Native macOS `--trap` reports
35
+ setup/launch errors only and closes on successful exec—not runtime violations.
41
36
 
42
- If sandboxing is enabled but the binary or platform is unusable, AI Bash fails
43
- closed. Set `enabled` to `false` explicitly to allow unsandboxed AI Bash.
37
+ ## Development
44
38
 
45
- Only AI `bash` calls receive OS isolation; direct user shell commands cannot be
46
- replaced through OpenCode's plugin API.
39
+ From this package: `npm ci`, then `npm run all` (format, lint, typecheck, tests).
40
+ Read-only formatting check: `npm run ci:fmt`.
47
41
 
48
- ## Licensing
42
+ ## License
49
43
 
50
- `opencode-landstrip` is licensed under the Apache 2.0 license. See [LICENSE](LICENSE)
51
- for more information.
44
+ Apache-2.0; see [LICENSE](LICENSE).
package/index.ts CHANGED
@@ -509,7 +509,7 @@ function buildWrappedCommand(
509
509
  const trapped = [
510
510
  landstripBinaryPath(),
511
511
  'run',
512
- '--trap-fd',
512
+ '--trap',
513
513
  '3',
514
514
  '-p',
515
515
  policyPath,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-landstrip",
3
- "version": "0.18.43",
3
+ "version": "0.19.1",
4
4
  "description": "OS-level AI command sandboxing for OpenCode with Landstrip",
5
5
  "keywords": [
6
6
  "landlock",
@@ -48,7 +48,7 @@
48
48
  "ci:test": "npm test"
49
49
  },
50
50
  "dependencies": {
51
- "@landstrip/landstrip-api": "^0.18.43",
51
+ "@landstrip/landstrip-api": "^0.19.1",
52
52
  "@opentui/core": ">=0.3.4",
53
53
  "@opentui/solid": ">=0.3.4",
54
54
  "solid-js": "1.9.12"
@@ -56,7 +56,7 @@
56
56
  "devDependencies": {
57
57
  "@opencode-ai/plugin": "^1.17.7",
58
58
  "@types/node": "^26.1.1",
59
- "oxfmt": "^0.64.0",
59
+ "oxfmt": "^0.66.0",
60
60
  "oxlint": "^1.68.0",
61
61
  "typescript": "^5.9.3"
62
62
  },