oh-my-opencode-slim 2.1.1 → 2.2.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 (43) hide show
  1. package/README.ja-JP.md +113 -118
  2. package/README.ko-KR.md +141 -123
  3. package/README.md +102 -145
  4. package/README.zh-CN.md +112 -118
  5. package/dist/agents/index.d.ts +0 -4
  6. package/dist/cli/index.js +57 -20
  7. package/dist/cli/providers.d.ts +11 -4
  8. package/dist/config/constants.d.ts +11 -1
  9. package/dist/config/schema.d.ts +680 -2
  10. package/dist/config/strip-orchestrator-model.d.ts +9 -0
  11. package/dist/hooks/command-hook-utils.d.ts +5 -0
  12. package/dist/hooks/foreground-fallback/index.d.ts +40 -28
  13. package/dist/hooks/image-hook.d.ts +1 -0
  14. package/dist/hooks/index.d.ts +1 -1
  15. package/dist/index.js +1992 -455
  16. package/dist/interview/document.d.ts +2 -1
  17. package/dist/interview/ui.d.ts +0 -1
  18. package/dist/multiplexer/cmux/close-policy.d.ts +20 -0
  19. package/dist/multiplexer/cmux/index.d.ts +102 -0
  20. package/dist/multiplexer/cmux/session-lifecycle.d.ts +92 -0
  21. package/dist/multiplexer/cmux/session-state.d.ts +45 -0
  22. package/dist/multiplexer/factory.d.ts +0 -9
  23. package/dist/multiplexer/herdr/index.d.ts +2 -0
  24. package/dist/multiplexer/index.d.ts +3 -1
  25. package/dist/multiplexer/session-manager.d.ts +10 -2
  26. package/dist/multiplexer/shared.d.ts +8 -1
  27. package/dist/multiplexer/types.d.ts +5 -2
  28. package/dist/multiplexer/zellij/index.d.ts +1 -1
  29. package/dist/tools/smartfetch/utils.d.ts +3 -1
  30. package/dist/tui-state.d.ts +5 -5
  31. package/dist/tui.js +87 -27
  32. package/dist/utils/escape-html.d.ts +1 -0
  33. package/dist/utils/frontmatter.d.ts +6 -0
  34. package/dist/utils/index.d.ts +1 -1
  35. package/dist/utils/logger.d.ts +0 -2
  36. package/oh-my-opencode-slim.schema.json +717 -2
  37. package/package.json +1 -1
  38. package/src/skills/clonedeps/SKILL.md +32 -29
  39. package/src/skills/codemap.md +5 -3
  40. package/src/skills/deepwork/SKILL.md +17 -6
  41. package/src/skills/verification-planning/SKILL.md +102 -0
  42. package/src/skills/worktrees/SKILL.md +14 -7
  43. package/src/skills/release-smoke-test/SKILL.md +0 -159
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode-slim",
3
- "version": "2.1.1",
3
+ "version": "2.2.1",
4
4
  "description": "Lightweight agent orchestration plugin for OpenCode - a slimmed-down fork of oh-my-opencode",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -100,7 +100,37 @@ The orchestrator owns final approval. Before cloning:
100
100
  5. Ask for confirmation before network cloning unless the user explicitly asked
101
101
  to clone immediately.
102
102
 
103
- ### Step 4: Clone Sources Manually
103
+ ### Step 4: Update Ignore Files
104
+
105
+ Before cloning artifacts or cleaning cloned dependencies, inspect existing
106
+ `.gitignore` and `.ignore`. Update the managed block in place when present;
107
+ otherwise append it. Add only the missing exact lines below, never duplicate
108
+ entries or modify unrelated rules. These blocks keep cloned artifacts git-local
109
+ while the `.ignore` allowlist keeps them readable to OpenCode.
110
+
111
+ `.gitignore`:
112
+
113
+ ```gitignore
114
+ # BEGIN oh-my-opencode-slim clonedeps
115
+ .slim/clonedeps/repos/
116
+ # END oh-my-opencode-slim clonedeps
117
+ ```
118
+
119
+ `.ignore`:
120
+
121
+ ```ignore
122
+ # BEGIN oh-my-opencode-slim clonedeps
123
+ !.slim/
124
+ !.slim/clonedeps.json
125
+ !.slim/clonedeps/
126
+ !.slim/clonedeps/repos/
127
+ !.slim/clonedeps/repos/**
128
+ .slim/clonedeps/repos/**/.git/
129
+ .slim/clonedeps/repos/**/.git/**
130
+ # END oh-my-opencode-slim clonedeps
131
+ ```
132
+
133
+ ### Step 5: Clone Sources Manually
104
134
 
105
135
  Create one folder per source repository under:
106
136
 
@@ -135,7 +165,7 @@ Safe manual git pattern:
135
165
 
136
166
  Do not run dependency install/build/test scripts from cloned repositories.
137
167
 
138
- ### Step 5: Write Local State
168
+ ### Step 6: Write Local State
139
169
 
140
170
  Write `.slim/clonedeps.json` so future agents know what exists:
141
171
 
@@ -173,33 +203,6 @@ Do not add `.slim/clonedeps.json` to `.gitignore`. It is small, reviewable
173
203
  project metadata that can be committed. Only the cloned repository contents
174
204
  under `.slim/clonedeps/repos/` should be ignored.
175
205
 
176
- ### Step 6: Update Ignore Files
177
-
178
- Update `.gitignore` with an idempotent marker block:
179
-
180
- ```gitignore
181
- # BEGIN oh-my-opencode-slim clonedeps
182
- .slim/clonedeps/repos/
183
- # END oh-my-opencode-slim clonedeps
184
- ```
185
-
186
- Update `.ignore` so OpenCode can read the cloned source while git still ignores
187
- it:
188
-
189
- ```ignore
190
- # BEGIN oh-my-opencode-slim clonedeps
191
- !.slim/
192
- !.slim/clonedeps.json
193
- !.slim/clonedeps/
194
- !.slim/clonedeps/repos/
195
- !.slim/clonedeps/repos/**
196
- .slim/clonedeps/repos/**/.git/
197
- .slim/clonedeps/repos/**/.git/**
198
- # END oh-my-opencode-slim clonedeps
199
- ```
200
-
201
- Only edit content inside these marker blocks.
202
-
203
206
  ### Step 7: Register Dependency Source in AGENTS.md
204
207
 
205
208
  After successful cloning, update the repository root `AGENTS.md` so future
@@ -11,7 +11,7 @@
11
11
 
12
12
  ### Skill Registry
13
13
 
14
- - `CUSTOM_SKILLS` in `src/cli/custom-skills.ts` is the authoritative skill manifest for bundled skills
14
+ - `CUSTOM_SKILLS` in `src/cli/custom-skills-registry.ts` is the authoritative skill manifest for bundled skills
15
15
  - Each entry maps folder name + `sourcePath` to an install-time consumer
16
16
  - Skills are categorized by purpose and access scope:
17
17
 
@@ -21,6 +21,7 @@
21
21
  | `clonedeps/` | General-purpose | Workflow skill for dependency source mirroring and inspection |
22
22
  | `simplify/` | General-purpose | Readability and maintainability guidance skill |
23
23
  | `deepwork/` | Orchestrator-only | Heavy coding sessions, multi-phase implementation, and risky refactors |
24
+ | `verification-planning/` | Orchestrator-only | Project-specific evidence planning and verification affordances before non-trivial implementation |
24
25
  | `reflect/` | Orchestrator-only | Learning from repeated work and suggesting reusable improvements |
25
26
  | `worktrees/` | Orchestrator-only | Safe Git worktree lanes for parallel, risky, or isolated work |
26
27
  | `oh-my-opencode-slim/` | Orchestrator-only | Plugin configuration and self-improvement guidance |
@@ -39,7 +40,7 @@
39
40
 
40
41
  ## Flow
41
42
 
42
- 1. **Skill Discovery**: `src/cli/custom-skills.ts` defines `CUSTOM_SKILLS` array with skill metadata
43
+ 1. **Skill Discovery**: `src/cli/custom-skills-registry.ts` defines `CUSTOM_SKILLS` array with skill metadata
43
44
  2. **Installation**: `bun run install` delegates to `src/cli/install.ts`, where `installCustomSkills()` gates copying of each `CUSTOM_SKILLS` entry
44
45
  3. **Validation**: `installCustomSkill()` computes `packageRoot`, validates `sourcePath`, then performs a recursive directory copy via `copyDirRecursive()`
45
46
  4. **Distribution**: During plugin release, `package.json` `files` whitelist ensures `src/skills/**` are included in the published tarball
@@ -49,13 +50,14 @@
49
50
 
50
51
  ### Build & Release Dependencies
51
52
 
52
- - `src/cli/custom-skills.ts`: Source-of-truth registry consumed by installer and permission helpers
53
+ - `src/cli/custom-skills-registry.ts`: Source-of-truth registry consumed by installer and permission helpers
53
54
  - `src/cli/install.ts`: Contains `installCustomSkills()` and `installCustomSkill()` functions
54
55
  - `verify-release-artifact.ts`: Enforces artifact completeness by asserting key bundled skill payloads are present in the tarball:
55
56
  - `src/skills/simplify/SKILL.md`
56
57
  - `src/skills/codemap/SKILL.md`
57
58
  - `src/skills/clonedeps/SKILL.md`
58
59
  - `src/skills/deepwork/SKILL.md`
60
+ - `src/skills/verification-planning/SKILL.md`
59
61
  - `src/skills/reflect/SKILL.md`
60
62
  - `src/skills/worktrees/SKILL.md`
61
63
  - `src/skills/oh-my-opencode-slim/SKILL.md`
@@ -1,13 +1,18 @@
1
1
  ---
2
2
  name: deepwork
3
- description: Orchestrator-only workflow for heavy coding sessions, multi-phase implementation, and risky refactors. Use for complex work that needs planning, review gates, and persistent progress tracking.
3
+ description: High-cost orchestrator workflow for large, high-risk, multi-phase coding efforts with meaningful dependencies and review gates. Do not activate for routine multi-file changes.
4
4
  ---
5
5
 
6
6
  # Deepwork
7
7
 
8
- Deepwork is an orchestrator workflow for heavy coding sessions. Use it when the
9
- work is broad, risky, multi-file, or likely to span several implementation
10
- phases. Do not use it for trivial edits, quick docs changes, or simple bug fixes.
8
+ Deepwork is an orchestrator workflow for heavy coding sessions. Use it only
9
+ when the work is clearly large or high-risk: multiple dependent phases,
10
+ cross-cutting architectural change, unsafe-to-partially-ship migration, or
11
+ sustained coordination across several specialist lanes.
12
+
13
+ Do not infer Deepwork merely because a task touches multiple files. Do not use
14
+ it for trivial edits, quick docs changes, simple bug fixes, or routine bounded
15
+ features.
11
16
 
12
17
  ## Core Contract
13
18
 
@@ -16,6 +21,10 @@ not as the default implementation worker.
16
21
 
17
22
  Required behavior:
18
23
 
24
+ - before planning, delegation, or creating a deepwork state file, inspect the
25
+ existing `.gitignore` and `.ignore`; add only missing entries, without
26
+ duplicates, so `.gitignore` contains `.slim/deepwork/` and `.ignore` contains
27
+ `!.slim/deepwork/` and `!.slim/deepwork/**`;
19
28
  - keep OpenCode todos aligned with the active deepwork phase;
20
29
  - create and maintain a local markdown progress file under `.slim/deepwork/`;
21
30
  - write valuable research findings into that file as confirmed research context
@@ -65,8 +74,8 @@ Create a task-specific file such as:
65
74
  .slim/deepwork/<short-task-slug>.md
66
75
  ```
67
76
 
68
- Keep `.slim/deepwork/` out of git, but make it readable to OpenCode. Ensure the
69
- project ignore files include:
77
+ Before creating this file—and before planning or delegation—inspect the existing
78
+ `.gitignore` and `.ignore`. Add only missing entries and do not add duplicates:
70
79
 
71
80
  ```gitignore
72
81
  # .gitignore
@@ -79,6 +88,8 @@ project ignore files include:
79
88
  !.slim/deepwork/**
80
89
  ```
81
90
 
91
+ These rules keep deepwork state git-local while allowing OpenCode to read it.
92
+
82
93
  Do not follow a rigid template. Choose whatever markdown structure best fits the
83
94
  work. The file only needs to remain useful as persistent session state and should
84
95
  capture, as applicable:
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: verification-planning
3
+ description: Verification planning for non-trivial coding work. Use before implementing a feature, bug fix, refactor, cross-system change, or high-confidence behavior change that needs a credible project-specific evidence path.
4
+ ---
5
+
6
+ # Verification Planning
7
+
8
+ ## Build an evidence path
9
+
10
+ Before changing a non-trivial system, build an **evidence path**: a
11
+ project-specific route from the claim being made to evidence that can establish,
12
+ limit, or refute it.
13
+
14
+ The purpose is not to select a familiar technique. The purpose is to decide how
15
+ this system can reveal the truth of this particular change.
16
+
17
+ ## 1. Frame the claim
18
+
19
+ State the behavior that needs to become true and the conditions that could make
20
+ a confident conclusion wrong.
21
+
22
+ Consider what must change, what must remain true, where the behavior crosses a
23
+ boundary, and which failure would matter most.
24
+
25
+ **Complete when:** the claim, its meaningful uncertainty, and its important
26
+ failure modes are concrete enough to investigate.
27
+
28
+ ## 2. Design the evidence path
29
+
30
+ Derive possible evidence paths from the system itself: its controllable inputs,
31
+ observable effects, state transitions, invariants, boundaries, artifacts, and
32
+ ability to repeat or reverse a scenario.
33
+
34
+ Generate alternatives before choosing. Prefer the path that produces a
35
+ trustworthy conclusion with proportionate cost, safety, and effort.
36
+
37
+ **Complete when:** there is a preferred path, its limitations are understood,
38
+ and a weaker or stronger alternative is available if circumstances change.
39
+
40
+ ## 3. Create a verification affordance when needed
41
+
42
+ When the existing system leaves the decisive truth too indirect or ambiguous,
43
+ extend the evidence path with a **verification affordance**: the smallest
44
+ capability that makes the relevant state controllable, observable, repeatable,
45
+ and diagnosable for an agent.
46
+
47
+ Ask what capability would let an agent establish the claim directly, repeat the
48
+ scenario from a known state, and explain a failure without inference. Prefer an
49
+ affordance that strengthens directness, determinism, agent-legibility,
50
+ isolation, resetability, or future reuse.
51
+
52
+ Treat the affordance as part of the evidence path, not an automatic product
53
+ feature. Decide deliberately whether it is temporary or durable before building
54
+ it.
55
+
56
+ **Complete when:** the chosen path can establish the claim directly enough for
57
+ its stakes, and any needed affordance has a defined lifecycle.
58
+
59
+ ## 4. Research when the path is unknown
60
+
61
+ When the right evidence path depends on an unfamiliar dependency, framework,
62
+ external service, or rapidly changing capability, ask `@librarian` for focused
63
+ research before committing to an approach.
64
+
65
+ Ask for official or project-specific facilities, constraints, and trade-offs
66
+ that affect this exact verification problem. Use existing project evidence
67
+ directly when it already resolves the choice.
68
+
69
+ **Complete when:** the chosen path rests on known capabilities and real
70
+ constraints rather than assumption.
71
+
72
+ ## 5. Make the path runnable
73
+
74
+ Prepare only the support needed to follow the evidence path reliably. Keep the
75
+ support narrow, repeatable, and safe to inspect.
76
+
77
+ Decide whether that support has recurring value or exists only to resolve the
78
+ current uncertainty. Retain durable value deliberately; remove temporary
79
+ support once it has served its purpose.
80
+
81
+ Ask before introducing dependencies, persistent diagnostic surfaces, or
82
+ structural changes whose sole purpose is evidence gathering.
83
+
84
+ **Complete when:** the path can be followed without guessing about setup,
85
+ state, or interpretation.
86
+
87
+ ## 6. Close the evidence path
88
+
89
+ After implementation, follow the planned path and interpret the resulting
90
+ evidence against the original claim.
91
+
92
+ Report whether the claim was established, limited, or refuted; distinguish
93
+ known facts from remaining uncertainty.
94
+
95
+ **Complete when:** a future reader can see what supports the conclusion and
96
+ what remains outside its reach.
97
+
98
+ ## Scope
99
+
100
+ Use this skill proportionately. Small mechanical changes can follow ordinary
101
+ project checks directly. For larger multi-phase work, let this skill establish
102
+ the evidence path that later work follows.
@@ -81,7 +81,11 @@ operation.
81
81
 
82
82
  ### 3. Ignore File Setup
83
83
 
84
- Before creating lanes, add or update managed marker blocks only.
84
+ Before creating or cleaning lanes, inspect existing `.gitignore` and `.ignore`.
85
+ Update the managed block in place when present; otherwise append it. Add only
86
+ the missing exact lines below, never duplicate entries or modify unrelated
87
+ rules. These blocks keep lane artifacts git-local while the `.ignore` allowlist
88
+ keeps them readable to OpenCode.
85
89
 
86
90
  `.gitignore`:
87
91
 
@@ -111,7 +115,8 @@ Before creating lanes, add or update managed marker blocks only.
111
115
  1. Identify the task scope and determine a short `<slug>` for the worktree.
112
116
  2. Formulate a branch name. Default to `omos/<slug>` unless project/user conventions dictate otherwise.
113
117
  3. Validate repository safety. Ask the user for confirmation to initialize the lane.
114
- 4. Ensure the managed ignore blocks are present.
118
+ 4. Before creating the lane, ensure the managed ignore blocks are present using
119
+ the Ignore File Setup rules above.
115
120
  5. Run:
116
121
  ```bash
117
122
  git worktree add -b <branch-name> .slim/worktrees/<slug> <base-commit/branch>
@@ -138,14 +143,16 @@ Before merging or integrating the worktree branch:
138
143
  checkout or the user-approved integration checkout.
139
144
 
140
145
  ### Phase 4: Cleanup & Pruning
141
- 1. Ensure all changes are safely merged or archived.
142
- 2. Confirm the worktree has no uncommitted changes.
143
- 3. Request user approval to remove the worktree.
144
- 4. Safely remove the worktree using:
146
+ 1. Before cleaning the lane, ensure the managed ignore blocks follow the Ignore
147
+ File Setup rules above.
148
+ 2. Ensure all changes are safely merged or archived.
149
+ 3. Confirm the worktree has no uncommitted changes.
150
+ 4. Request user approval to remove the worktree.
151
+ 5. Safely remove the worktree using:
145
152
  ```bash
146
153
  git worktree remove .slim/worktrees/<slug>
147
154
  ```
148
- 5. Update `.slim/worktrees.json` to mark the lane as `archived` or remove it.
155
+ 6. Update `.slim/worktrees.json` to mark the lane as `archived` or remove it.
149
156
 
150
157
  ---
151
158
 
@@ -1,159 +0,0 @@
1
- ---
2
- name: release-smoke-test
3
- description: Test an oh-my-opencode-slim release candidate or bugfix before publishing. Use when validating a packed plugin artifact, release branch, crash fix, OpenCode runtime compatibility, or model-specific smoke test such as OpenCode 1.17.11 message transform regressions.
4
- ---
5
-
6
- # Release Smoke Test
7
-
8
- Use this skill to validate an `oh-my-opencode-slim` release candidate before
9
- public npm publish. Test the packed artifact, not `@latest` and not the source
10
- tree.
11
-
12
- ## Core Workflow
13
-
14
- 1. Start from the release-prep branch or commit.
15
- 2. Build and pack the candidate.
16
- 3. Install the tarball into a throwaway app.
17
- 4. Create an isolated OpenCode config pointing at the installed
18
- `node_modules/oh-my-opencode-slim/dist/index.js`.
19
- 5. Run `opencode debug config` and verify `plugin_origins` contains only the
20
- intended plugin when doing an isolation smoke.
21
- 6. Run non-pure `opencode run --print-logs --log-level DEBUG`.
22
- 7. Search isolated logs for the original crash signature.
23
- 8. Record exact artifact, model, OpenCode version, command shape, result, and
24
- limitations on the release issue or PR.
25
-
26
- ## Pack Candidate
27
-
28
- Use a temp directory so release validation never depends on the local package
29
- cache.
30
-
31
- ```bash
32
- SMOKE=/tmp/oh-my-opencode-slim-release-smoke
33
- rm -rf "$SMOKE"
34
- mkdir -p "$SMOKE/pkg" "$SMOKE/app" "$SMOKE/home" "$SMOKE/xdg/opencode" "$SMOKE/run"
35
-
36
- bun run build
37
- npm pack --pack-destination "$SMOKE/pkg"
38
- ```
39
-
40
- Install the tarball:
41
-
42
- ```bash
43
- cd "$SMOKE/app"
44
- bun init -y
45
- bun add "$SMOKE/pkg"/oh-my-opencode-slim-*.tgz
46
- node -p "require('./node_modules/oh-my-opencode-slim/package.json').version"
47
- ```
48
-
49
- ## Isolated Config
50
-
51
- Write the minimal OpenCode config:
52
-
53
- ```bash
54
- cat > "$SMOKE/xdg/opencode/opencode.json" <<EOF
55
- {
56
- "model": "opencode/deepseek-v4-flash-free",
57
- "plugin": [
58
- "file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js"
59
- ],
60
- "agent": {
61
- "orchestrator": {
62
- "model": "opencode/deepseek-v4-flash-free"
63
- }
64
- }
65
- }
66
- EOF
67
- ```
68
-
69
- Use `env -i` for the cleanest smoke. This strips host `OPENCODE_*`, `ORCA_*`,
70
- and project overlay variables that can silently add plugins or provider aliases.
71
-
72
- ```bash
73
- env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg" \
74
- opencode debug config
75
- ```
76
-
77
- Confirm:
78
-
79
- - `plugin_origins` has exactly one entry.
80
- - That entry points to the temp app's packed `dist/index.js`.
81
- - The model is the one intended for the smoke.
82
-
83
- If OpenCode needs provider aliases from the host environment, run a second
84
- non-isolated model-specific smoke and clearly label it as weaker isolation.
85
-
86
- ## Runtime Smoke
87
-
88
- Run the actual prompt with timeout:
89
-
90
- ```bash
91
- env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg" \
92
- timeout 120 \
93
- opencode run --print-logs --log-level DEBUG "Say OK only."
94
- ```
95
-
96
- Expected result:
97
-
98
- ```text
99
- OK
100
- ```
101
-
102
- Search logs for the bug signature. For the OpenCode 1.17.11 malformed-message
103
- crash, use:
104
-
105
- ```bash
106
- rg "message\\.info\\.role|undefined is not an object|Cannot read properties of undefined|TypeError" \
107
- "$SMOKE/home/.local/share/opencode/log" -n 2>/dev/null || true
108
- ```
109
-
110
- No matches should appear.
111
-
112
- ## OpenAI / Host-Provider Smoke
113
-
114
- If the fully isolated environment cannot resolve OpenAI provider aliases, run a
115
- separate host-provider smoke while keeping the plugin path pointed at the
116
- tarball install.
117
-
118
- ```bash
119
- mkdir -p "$SMOKE/config"
120
- cat > "$SMOKE/config/opencode.json" <<EOF
121
- {
122
- "model": "openai/gpt-5.6-fast",
123
- "plugin": [
124
- "file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js"
125
- ],
126
- "agent": {
127
- "orchestrator": {
128
- "model": "openai/gpt-5.6-fast"
129
- }
130
- }
131
- }
132
- EOF
133
-
134
- OPENCODE_CONFIG_DIR="$SMOKE/config" \
135
- timeout 120 \
136
- opencode run --print-logs --log-level DEBUG "Say OK only."
137
- ```
138
-
139
- Report this as a host-provider smoke because existing project, user, or Orca
140
- OpenCode config may still merge in. Use `opencode debug config` to disclose
141
- what else loaded.
142
-
143
- ## Reporting Template
144
-
145
- ```markdown
146
- ## Release-candidate smoke validation
147
-
148
- - Commit under test:
149
- - Tarball:
150
- - Installed package version:
151
- - OpenCode version:
152
- - Config isolation: sanitized `env -i` / host-provider
153
- - Plugin origin:
154
- - Model:
155
- - Command:
156
- - Result:
157
- - Crash signature search:
158
- - Limitations:
159
- ```