@banbolee/dsh-fish-shell 0.4.1 → 0.5.0
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/README.md +151 -41
- package/cordis.patch.yml +39 -32
- package/package.json +40 -4
- package/persistent.js +639 -0
- package/policy.js +346 -0
- package/terminal-fish.js +317 -0
- package/tool.js +347 -111
- package/presets/fish/agent.cordis.yml +0 -241
package/README.md
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Fish shell executors and tool for DeepSeek Harness: run commands with
|
|
4
4
|
**fish** instead of bash. Distribution-ready and surface-agnostic: works in
|
|
5
5
|
any profile that mounts it — preset-roster based (dsh-tui, web) or
|
|
6
|
-
host-tool based (headless)
|
|
6
|
+
host-tool based (headless) — and under **any agent preset** (standard, ptc,
|
|
7
|
+
cordis, minimal, or a third-party preset).
|
|
7
8
|
|
|
8
9
|
## What this bundle does
|
|
9
10
|
|
|
@@ -20,36 +21,104 @@ host-tool based (headless).
|
|
|
20
21
|
without a sandbox. For custom compositions that deliberately run without a
|
|
21
22
|
sandbox; composing it with `dsh-permission-presets` fails loud at load.
|
|
22
23
|
- **Tool** (`tool.js`, exported as `@banbolee/dsh-fish-shell/tool`): a model-facing
|
|
23
|
-
`fish` tool mounted host-globally, executing through `ctx.shell`.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- **
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
24
|
+
`fish` tool mounted host-globally, executing through `ctx.shell`. Its
|
|
25
|
+
functional surface is aligned with the official `@deepseek-ai/dsh-tool-bash`
|
|
26
|
+
(with shell wording swapped to fish):
|
|
27
|
+
- **Background execution**: `run_in_background: true` registers the command
|
|
28
|
+
with `ctx.jobs` (`kind: fish`) and returns `{kind: 'background', jobId}`;
|
|
29
|
+
output reads carry the lossy-read and sandbox runner-failure/denial
|
|
30
|
+
notices, and the job controller's `job_output`/`job_kill` handle the rest.
|
|
31
|
+
- **Sandbox escalation**: when the mounted executor confines, the schema
|
|
32
|
+
advertises `sandbox_permissions` + `justification`; an escalation is
|
|
33
|
+
resolved through `ctx.approval` BEFORE anything executes (strictly wider
|
|
34
|
+
modes only, fail-closed), and a denial result carries the same-turn
|
|
35
|
+
escalation hint. Headless compositions (no sandboxing executor) expose
|
|
36
|
+
neither field.
|
|
37
|
+
- **Result facts**: foreground results carry the complete canonical facts,
|
|
38
|
+
including the sandbox `enforcement`/`runnerFailed` fields.
|
|
39
|
+
- **UI presentation**: `presentCall`/`presentResult` render foreground calls
|
|
40
|
+
as terminal cards (with an exit-status pill) and background/error
|
|
41
|
+
outcomes as generic fenced console output.
|
|
42
|
+
- **Exit-code prompt section**: registers the `tool:fish` section
|
|
43
|
+
("Check the [exit code: N] marker on every fish result…") at the
|
|
44
|
+
`TOOL_BASH` position.
|
|
45
|
+
- On top of all that it passes the calling session's resolved sandbox policy
|
|
46
|
+
(so `/permission` switches and the session workspace root are honored),
|
|
47
|
+
collects the managed `DSH_*` environment from `ctx.shellEnv`, renders the
|
|
48
|
+
harness marker contract (`[exit code: N]`, `[stderr]`, `[sandbox: file
|
|
49
|
+
access denied under <mode> mode]`, `[output truncated; full output:
|
|
50
|
+
<path>]`), and its description teaches the model fish syntax with
|
|
51
|
+
per-result `[fish syntax]` hints.
|
|
52
|
+
- **Per-agent fish policy** (`policy.js`, exported as
|
|
53
|
+
`@banbolee/dsh-fish-shell/policy`): a host-mounted Cordis plugin that makes
|
|
54
|
+
every agent see fish instead of bash **regardless of which agent preset it
|
|
55
|
+
runs under**. The bundle patch disables the base bash executor
|
|
56
|
+
(`bash-sandbox`) and the host bash tool (`tool-bash`), mounts the fish
|
|
57
|
+
executor and the host-global `fish` tool, and leaves presets untouched —
|
|
58
|
+
it no longer changes the roster default, injects preset roots, or writes
|
|
59
|
+
copies under `$DSH_HOME/.agent-presets/`. Presets still register their own
|
|
60
|
+
`bash`-named tool (standard/minimal do), and on `agent/created` (and again
|
|
61
|
+
on every `tools/change`, i.e. after `/preset` recomposes) the policy hides
|
|
62
|
+
that inherited bash tool per agent via
|
|
63
|
+
`agent.ctx.tools.restrict({ deny: ['bash'] })` and shadows the preset's
|
|
64
|
+
static `tool:bash` prompt guidance with an empty agent-scoped section. The
|
|
65
|
+
agent is left with exactly one shell tool: `fish`. Under `minimal` — whose
|
|
66
|
+
standing bash is the persistent PTY form (parameters carry only `command`,
|
|
67
|
+
output schema is a plain string) — the policy first registers a persistent
|
|
68
|
+
`fish` tool at the agent scope (shadowing the one-shot fish) and then
|
|
69
|
+
hides bash, so minimal sessions keep their persistent semantics in fish.
|
|
70
|
+
- **Persistent fish terminal backend** (`terminal-fish.js`, exported as
|
|
71
|
+
`@banbolee/dsh-fish-shell/terminal-fish`): a library — NOT mounted by the
|
|
72
|
+
bundle patch — providing the `fish` PTY backend used by the persistent
|
|
73
|
+
tool. It subclasses the official `BashTerminalBackend`, spawning
|
|
74
|
+
`fish --no-config -i` (config-overridable) with a controlled prompt that
|
|
75
|
+
speaks the harness readiness contract (OSC `133;D;<status>` + `dsh> `),
|
|
76
|
+
confined through the same sandbox policy, with the official
|
|
77
|
+
sandbox-mode fence copied in (the official module does not export it;
|
|
78
|
+
the copy takes an injectable owner-activity check for self-managed use).
|
|
79
|
+
The patch deliberately has no `fish-terminal` host row: the `terminals`
|
|
80
|
+
service is entry-local to the `minimal` preset's isolate realm and
|
|
81
|
+
invisible at the host plane (headless / dsh-tui / composition test
|
|
82
|
+
profiles), so such a row would stay pending forever. `apply` is exported
|
|
83
|
+
for direct assembly and tests (or a composition that explicitly mounts the
|
|
84
|
+
registry).
|
|
85
|
+
- **Persistent fish tool** (`persistent.js`, exported as
|
|
86
|
+
`@banbolee/dsh-fish-shell/persistent`): a fish translation of the official
|
|
87
|
+
`dsh-tool-bash-persistent` pattern — a per-agent cached PTY shell whose
|
|
88
|
+
cwd, variables, and functions survive across calls, with marker-wrapped
|
|
89
|
+
commands, serialized execution, deadline/timeout reset, and scrollback
|
|
90
|
+
reads. It deliberately exports no Cordis `apply`: `policy.js` calls
|
|
91
|
+
`registerPersistentFish(ctx, agentCtx)` at the agent boundary for the
|
|
92
|
+
persistent-bash preset. The PTY is **self-managed**: the tool owns one
|
|
93
|
+
`FishTerminalBackend` instance and drives its sessions directly
|
|
94
|
+
(`backend.spawn(...)`, `session.startSend/read/status/close`) instead of
|
|
95
|
+
going through the `terminals` registry, which agent-scope tools cannot
|
|
96
|
+
resolve (the registry lives only inside the minimal preset's entry-local
|
|
97
|
+
realm). Command quoting uses fish single-quote escaping and `eval` with
|
|
98
|
+
one string argument (fish 4 has no `$'...'` ANSI-C quoting and no
|
|
99
|
+
`eval --`), verified against real fish 4.0.0.
|
|
40
100
|
|
|
41
101
|
## Install
|
|
42
102
|
|
|
103
|
+
**From npm (recommended)** — no clone needed:
|
|
104
|
+
|
|
43
105
|
```sh
|
|
44
|
-
|
|
45
|
-
dsh plugin --profile <name> add ./plugins/fish-shell
|
|
106
|
+
dsh plugin --profile <name> add @banbolee/dsh-fish-shell
|
|
46
107
|
```
|
|
47
108
|
|
|
48
|
-
|
|
109
|
+
From this checkout, per profile:
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
dsh plugin --profile <name> add ./plugins/fish-shell
|
|
113
|
+
```
|
|
49
114
|
|
|
50
|
-
Add it to every profile that should
|
|
51
|
-
|
|
52
|
-
|
|
115
|
+
Add it to every profile that should run fish (dsh-tui, web, headless, …).
|
|
116
|
+
The bundle patch (`cordis.patch.yml`) is one safe patch across surfaces: it
|
|
117
|
+
disables the host bash executor and `tool-bash` rows, mounts the fish
|
|
118
|
+
executor and the host-global `fish` tool, and inserts the
|
|
119
|
+
`fish-preset-policy` row, which hides the preset-inherited `bash` tool per
|
|
120
|
+
agent (restriction + empty `tool:bash` prompt shadow, persistent-fish swap
|
|
121
|
+
under `minimal`). The patch no longer touches the preset roster.
|
|
53
122
|
|
|
54
123
|
### Deployed copy and the symlink chain
|
|
55
124
|
|
|
@@ -59,32 +128,57 @@ runtime instance the harness uses — the launcher-maintained
|
|
|
59
128
|
`profiles/node_modules/@deepseek-ai/*` symlink chain. A plain `link:` to this
|
|
60
129
|
checkout (outside the profile tree) would resolve no `@deepseek-ai` package,
|
|
61
130
|
so the deployed copy lives at `profiles/node_modules/@banbolee/dsh-fish-shell` (inside
|
|
62
|
-
the tree). `scripts/sync-to-profile.sh` copies the plugin there after edits
|
|
63
|
-
|
|
64
|
-
preset; a pnpm `file:` dependency points each profile at the deployed copy. A
|
|
131
|
+
the tree). `scripts/sync-to-profile.sh` copies the plugin there after edits.
|
|
132
|
+
A pnpm `file:` dependency points each profile at the deployed copy. A
|
|
65
133
|
package published to npm installs normally (its realpath already lies inside
|
|
66
134
|
the profile tree).
|
|
67
135
|
|
|
68
136
|
## Per-surface behavior
|
|
69
137
|
|
|
70
|
-
- **Preset-roster surfaces** (dsh-tui, web):
|
|
71
|
-
`
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
138
|
+
- **Preset-roster surfaces** (dsh-tui, web): the roster default is untouched
|
|
139
|
+
(`standard`). The `fish-preset-policy` plugin applies per agent, so an
|
|
140
|
+
agent under **any** preset — `standard`, `ptc`, `cordis`, `minimal`, or a
|
|
141
|
+
plain third-party preset — has its preset-inherited `bash` tool hidden and
|
|
142
|
+
sees exactly one shell tool: `fish`. The preset's static
|
|
143
|
+
`tool:bash` prompt guidance is shadowed (empty agent-scoped section), so
|
|
144
|
+
the model is not told to "check the bash result". Under `minimal` the
|
|
145
|
+
policy detects the preset's persistent bash and swaps in the persistent
|
|
146
|
+
`fish` tool instead, so minimal sessions keep their persistent semantics.
|
|
147
|
+
The persistent PTY is self-managed by the policy (one `FishTerminalBackend`
|
|
148
|
+
driven directly, no `terminals` registry), so it works in every surface —
|
|
149
|
+
the registry is only visible inside the minimal preset's entry-local
|
|
150
|
+
realm, which is exactly why the bundle mounts no `fish-terminal` row.
|
|
76
151
|
- **Host-tool surfaces** (headless): the agent uses host-plane tools; the
|
|
77
152
|
disabled host `tool-bash` and the host-global `fish` tool make fish the
|
|
78
153
|
agent's only shell tool.
|
|
79
154
|
|
|
80
155
|
## Behavior
|
|
81
156
|
|
|
82
|
-
-
|
|
157
|
+
- **One-shot** (standard, ptc, cordis, third-party presets, and headless):
|
|
158
|
+
every shell call spawns a fresh non-login shell (under the configured
|
|
83
159
|
sandbox backend for `FishSandboxExecutor`); no state (cwd, variables,
|
|
84
160
|
functions, history) persists between calls.
|
|
161
|
+
- **Persistent** (`minimal` preset, which mounts the persistent PTY bash
|
|
162
|
+
machinery): the agent's `fish` tool keeps one live fish session per agent.
|
|
163
|
+
The current directory, exported variables, and defined functions survive
|
|
164
|
+
across calls; commands run through the tool are serialized; a command that
|
|
165
|
+
exceeds the tool's deadline is interrupted and the shell is reset (the
|
|
166
|
+
next call starts from the workspace with a fresh shell). The persistent
|
|
167
|
+
fish PTY is spawned and driven by the tool itself through a
|
|
168
|
+
`FishTerminalBackend` (no `terminals` registry involved).
|
|
85
169
|
- Output is bounded per stream by the executor's configured caps; timeouts
|
|
86
170
|
are clamped to the executor's cap; the model sees the harness marker
|
|
87
171
|
contract.
|
|
172
|
+
- `run_in_background: true` starts long-running commands as background jobs
|
|
173
|
+
(`kind: fish`) and returns a job id immediately; read output with
|
|
174
|
+
`job_output` and stop it with `job_kill`. Requires the jobs services
|
|
175
|
+
(`@deepseek-ai/dsh-jobs` + `@deepseek-ai/dsh-tool-jobs`) to be composed;
|
|
176
|
+
the tool fails loud when they are not.
|
|
177
|
+
- Under a sandboxing executor, a denied command can be re-run wider in the
|
|
178
|
+
same turn with `sandbox_permissions` (the narrowest wider mode that
|
|
179
|
+
suffices) plus a one-sentence `justification`; the approval prompt raised
|
|
180
|
+
by that retry is how the user consents. Denials are final when approval
|
|
181
|
+
prompts are disabled or the escalation is rejected.
|
|
88
182
|
- Requires `fish` on PATH; the executors fail loud when it is missing.
|
|
89
183
|
|
|
90
184
|
## Known Limitations
|
|
@@ -92,12 +186,28 @@ the profile tree).
|
|
|
92
186
|
- Models default to bash idioms; the `fish` tool description teaches fish
|
|
93
187
|
syntax, but a command written in bash dialect fails under fish. This is the
|
|
94
188
|
intended trade of swapping the shell.
|
|
95
|
-
- The `fish`
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
189
|
+
- **The legacy bundled `fish` agent preset was removed**: this bundle ships
|
|
190
|
+
no `presets/fish/` directory, the sync script no longer deploys or
|
|
191
|
+
drift-checks one, and no user copy is written under
|
|
192
|
+
`$DSH_HOME/.agent-presets/fish`. A stale user copy of that directory from
|
|
193
|
+
an older bundle version is inert (the roster no longer points at it) and
|
|
194
|
+
can be deleted manually.
|
|
195
|
+
- **Persistent semantics under `minimal`** are provided by the persistent
|
|
196
|
+
`fish` tool (cwd, exported variables, and defined functions survive across
|
|
197
|
+
calls). Like the official persistent bash, a command that overruns the
|
|
198
|
+
deadline is interrupted and the shell is reset; an agent-scoped `fish`
|
|
199
|
+
tool shadows the host-global one-shot tool, so escalation fields
|
|
200
|
+
(`sandbox_permissions`/`justification`) and background execution
|
|
201
|
+
(`run_in_background`) are not part of the persistent surface.
|
|
202
|
+
- **Third-party preset boundaries**: the policy hides a `bash`-named tool
|
|
203
|
+
inherited from the preset. A preset that deliberately excludes the global
|
|
204
|
+
`fish` tool (an allowlist that filters it out) or registers its shell tool
|
|
205
|
+
under a different name is left exactly as authored, with a one-time
|
|
206
|
+
warning per agent — the bundle never mutates a third-party preset.
|
|
207
|
+
- The `fish` tool's model-facing surface is aligned with the official bash
|
|
208
|
+
tool: background execution (`run_in_background` via `ctx.jobs`), sandbox
|
|
209
|
+
escalation (`sandbox_permissions`/`justification` via `ctx.approval`),
|
|
210
|
+
terminal/generic UI presentation, and the `tool:fish` exit-code prompt
|
|
211
|
+
section are all supported.
|
|
102
212
|
- POSIX only: the `fish` binary and the underlying process-group semantics
|
|
103
213
|
are not available on Windows (the pwsh family covers Windows).
|
package/cordis.patch.yml
CHANGED
|
@@ -1,19 +1,42 @@
|
|
|
1
|
-
# @banbolee/dsh-fish-shell bundle:
|
|
1
|
+
# @banbolee/dsh-fish-shell bundle: run commands with fish instead of bash,
|
|
2
|
+
# on every surface and under every agent preset.
|
|
2
3
|
#
|
|
3
|
-
#
|
|
4
|
-
# -
|
|
5
|
-
# (`bash
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
# the
|
|
4
|
+
# How it works now:
|
|
5
|
+
# - The base bash executor (`bash-sandbox`) and the host bash tool
|
|
6
|
+
# (`tool-bash`) are disabled at the host plane, the fish executor
|
|
7
|
+
# (ctx.shell) is mounted, and a host-global `fish` tool is registered
|
|
8
|
+
# (`fish-shell` + `tool-fish` rows below). Headless (no preset roster)
|
|
9
|
+
# agents therefore see only the `fish` tool.
|
|
10
|
+
# - Presets are NOT touched: the roster default stays `standard`, and no
|
|
11
|
+
# bundled preset root or user copy is installed. Standard/ptc/cordis/
|
|
12
|
+
# minimal/third-party presets keep registering their own `bash`-named
|
|
13
|
+
# tool at the preset standing scope.
|
|
14
|
+
# - `fish-preset-policy` fixes that per agent at the agent boundary: on
|
|
15
|
+
# `agent/created` and on every `tools/change` (preset recompose) it
|
|
16
|
+
# calls `agent.ctx.tools.restrict({ deny: ['bash'] })` to hide the
|
|
17
|
+
# preset-inherited bash tool and registers an empty agent-scoped
|
|
18
|
+
# `tool:bash` prompt section that shadows the preset's static bash
|
|
19
|
+
# guidance. The agent ends up with exactly one shell tool: `fish`.
|
|
13
20
|
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
21
|
+
# Boundaries:
|
|
22
|
+
# - `minimal` keeps its persistent PTY bash machinery mounted. When the
|
|
23
|
+
# policy detects the persistent bash form (a `bash` tool whose
|
|
24
|
+
# parameters carry only `command` and whose output schema is a plain
|
|
25
|
+
# string), it registers a persistent `fish` tool at the agent scope
|
|
26
|
+
# (shadowing the host one-shot fish) before hiding bash, so minimal
|
|
27
|
+
# sessions keep their persistent semantics — cwd, variables, and
|
|
28
|
+
# functions survive across calls — in fish.
|
|
29
|
+
# - The persistent fish PTY is SELF-MANAGED by the policy: `persistent.js`
|
|
30
|
+
# owns a `FishTerminalBackend` instance and calls `backend.spawn(...)`
|
|
31
|
+
# directly. Nothing is registered in the `terminals` registry (which is
|
|
32
|
+
# entry-local to the `minimal` preset and invisible at the host/agent
|
|
33
|
+
# plane), so the bundle must NOT mount the `terminal-fish` plugin row
|
|
34
|
+
# here — that would leave the entry pending forever in host-plane
|
|
35
|
+
# profiles (headless, dsh-tui, composition tests) that have no
|
|
36
|
+
# `terminals` service.
|
|
37
|
+
# - A third-party preset that allowlists the global `fish` tool out (or
|
|
38
|
+
# registers its shell tool under a non-`bash` name) is left as authored,
|
|
39
|
+
# with a one-time warning per agent.
|
|
17
40
|
- id: bash-sandbox
|
|
18
41
|
disabled: true
|
|
19
42
|
|
|
@@ -27,21 +50,5 @@
|
|
|
27
50
|
- id: tool-fish
|
|
28
51
|
name: '@banbolee/dsh-fish-shell/tool'
|
|
29
52
|
|
|
30
|
-
- id:
|
|
31
|
-
|
|
32
|
-
default: fish
|
|
33
|
-
roots: !!js >-
|
|
34
|
-
(() => {
|
|
35
|
-
const base = ctx.baseUrl
|
|
36
|
-
if (!base) return []
|
|
37
|
-
const resolvePath = (url) => {
|
|
38
|
-
const path = decodeURIComponent(url.pathname)
|
|
39
|
-
return /^\/[A-Za-z]:/.test(path) ? path.slice(1) : path
|
|
40
|
-
}
|
|
41
|
-
const system = new URL('../node_modules/@deepseek-ai/dsh/config/agent-presets/', base)
|
|
42
|
-
const own = new URL('./node_modules/@banbolee/dsh-fish-shell/presets/', base)
|
|
43
|
-
return [
|
|
44
|
-
{ path: resolvePath(system), trust: 'system' },
|
|
45
|
-
{ path: resolvePath(own), trust: 'system' },
|
|
46
|
-
]
|
|
47
|
-
})()
|
|
53
|
+
- id: fish-preset-policy
|
|
54
|
+
name: '@banbolee/dsh-fish-shell/policy'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@banbolee/dsh-fish-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Fish shell executors and tool for DeepSeek Harness: run commands with fish instead of bash.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -8,14 +8,19 @@
|
|
|
8
8
|
".": "./index.js",
|
|
9
9
|
"./local": "./local.js",
|
|
10
10
|
"./tool": "./tool.js",
|
|
11
|
+
"./policy": "./policy.js",
|
|
12
|
+
"./terminal-fish": "./terminal-fish.js",
|
|
13
|
+
"./persistent": "./persistent.js",
|
|
11
14
|
"./package.json": "./package.json"
|
|
12
15
|
},
|
|
13
16
|
"files": [
|
|
14
17
|
"index.js",
|
|
15
18
|
"local.js",
|
|
16
19
|
"tool.js",
|
|
20
|
+
"policy.js",
|
|
21
|
+
"terminal-fish.js",
|
|
22
|
+
"persistent.js",
|
|
17
23
|
"cordis.patch.yml",
|
|
18
|
-
"presets/",
|
|
19
24
|
"README.md"
|
|
20
25
|
],
|
|
21
26
|
"dsh": {
|
|
@@ -25,18 +30,49 @@
|
|
|
25
30
|
},
|
|
26
31
|
"peerDependencies": {
|
|
27
32
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
33
|
+
"@deepseek-ai/dsh-agent": "^0.1.5-rc.1",
|
|
28
34
|
"@deepseek-ai/dsh-bash-local": "^0.1.5-rc.1",
|
|
29
35
|
"@deepseek-ai/dsh-bash-sandbox": "^0.1.5-rc.1",
|
|
30
|
-
"@deepseek-ai/dsh-home-paths": "^0.1.5-rc.1"
|
|
36
|
+
"@deepseek-ai/dsh-home-paths": "^0.1.5-rc.1",
|
|
37
|
+
"@deepseek-ai/dsh-jobs": "^0.1.5-rc.1",
|
|
38
|
+
"@deepseek-ai/dsh-llm": "^0.1.5-rc.1",
|
|
39
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.5-rc.1",
|
|
40
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.1.5-rc.1",
|
|
41
|
+
"@deepseek-ai/dsh-scope": "^0.1.5-rc.1",
|
|
42
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.5-rc.1",
|
|
43
|
+
"@deepseek-ai/dsh-shell": "^0.1.5-rc.1",
|
|
44
|
+
"@deepseek-ai/dsh-shell-env": "^0.1.5-rc.1",
|
|
45
|
+
"@deepseek-ai/dsh-subprocess": "^0.1.5-rc.1",
|
|
46
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1",
|
|
47
|
+
"@deepseek-ai/dsh-terminal": "^0.1.5-rc.1",
|
|
48
|
+
"@deepseek-ai/dsh-terminal-bash": "^0.1.5-rc.1",
|
|
49
|
+
"@deepseek-ai/dsh-tools": "^0.1.5-rc.1",
|
|
50
|
+
"@deepseek-ai/dsh-user-approval": "^0.1.5-rc.1"
|
|
31
51
|
},
|
|
32
52
|
"devDependencies": {
|
|
33
53
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
54
|
+
"@deepseek-ai/dsh-agent": "^0.1.5-rc.1",
|
|
34
55
|
"@deepseek-ai/dsh-bash-local": "^0.1.5-rc.1",
|
|
35
56
|
"@deepseek-ai/dsh-bash-sandbox": "^0.1.5-rc.1",
|
|
36
57
|
"@deepseek-ai/dsh-home-paths": "^0.1.5-rc.1",
|
|
37
58
|
"@deepseek-ai/dsh-invariants": "^0.1.5-rc.1",
|
|
59
|
+
"@deepseek-ai/dsh-jobs": "^0.1.5-rc.1",
|
|
60
|
+
"@deepseek-ai/dsh-llm": "^0.1.5-rc.1",
|
|
61
|
+
"@deepseek-ai/dsh-pwsh-local": "^0.1.5-rc.1",
|
|
62
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.5-rc.1",
|
|
63
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.1.5-rc.1",
|
|
38
64
|
"@deepseek-ai/dsh-scope": "^0.1.5-rc.1",
|
|
39
|
-
"@deepseek-ai/dsh-
|
|
65
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.5-rc.1",
|
|
66
|
+
"@deepseek-ai/dsh-shell": "^0.1.5-rc.1",
|
|
67
|
+
"@deepseek-ai/dsh-shell-env": "^0.1.5-rc.1",
|
|
68
|
+
"@deepseek-ai/dsh-subprocess": "^0.1.5-rc.1",
|
|
69
|
+
"@deepseek-ai/dsh-subprocess-local": "^0.1.5-rc.1",
|
|
70
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1",
|
|
71
|
+
"@deepseek-ai/dsh-terminal": "^0.1.5-rc.1",
|
|
72
|
+
"@deepseek-ai/dsh-terminal-bash": "^0.1.5-rc.1",
|
|
73
|
+
"@deepseek-ai/dsh-tools": "^0.1.5-rc.1",
|
|
74
|
+
"@deepseek-ai/dsh-user-approval": "^0.1.5-rc.1",
|
|
75
|
+
"yaml": "^2.8.0"
|
|
40
76
|
},
|
|
41
77
|
"keywords": [
|
|
42
78
|
"dsh",
|