dsh-ops 0.2.1 → 0.2.2
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/CHANGELOG.md +15 -2
- package/PROVENANCE.md +27 -9
- package/README.en.md +5 -0
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/docs/release-0.2.1.md +72 -0
- package/docs/schema-current.json +4 -4
- package/docs/schema-measurement.md +1 -1
- package/dsh-plugin.json +1 -1
- package/lib/shells.js +19 -14
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -5,13 +5,26 @@ All notable changes to this package are recorded here.
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
|
|
6
6
|
this package adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [0.2.
|
|
8
|
+
## [0.2.2] — Bash parameter schema hotfix
|
|
9
|
+
|
|
10
|
+
- Fix `ops_bash` parameters to use a JSON Schema object root with `properties`, `required: ['command']`, and `additionalProperties: false`. The previous field map was forwarded unchanged by the official host and rejected by the model API before tool execution.
|
|
11
|
+
- Reuse the three published Windows runtime packages at exact version 0.2.1; only the main plugin package changes.
|
|
12
|
+
- Validate the exported schema through the official host tool registry without calling a model. Registry installation and shell version probes alone did not verify this boundary in 0.2.1.
|
|
13
|
+
|
|
14
|
+
## [0.2.1] — Windows payload packaging — published
|
|
15
|
+
|
|
16
|
+
Published to the public npm registry on 2026-10-08 as `dsh-ops@0.2.1` with
|
|
17
|
+
`@dsh-ops/fastctx-win32-x64@0.2.1`, `@dsh-ops/bash-win32-x64@0.2.1` and
|
|
18
|
+
`@dsh-ops/pwsh-win32-x64@0.2.1`. Packed sizes and registry digests:
|
|
19
|
+
[docs/release-0.2.1.md](docs/release-0.2.1.md).
|
|
9
20
|
|
|
10
21
|
- Assemble complete digest-verified PortableGit/bash and PowerShell 7 runtime packages instead of metadata-only pins; inject all three Windows x64 runtime dependencies in the publish artifact.
|
|
11
22
|
- Add explicit-profile install/status/uninstall delegation to the official DSH manager; map tui to dsh-tui and use Desktop's installation-owned CLI.
|
|
12
23
|
- Resolve the pwsh dependency from the plugin package under pnpm isolation.
|
|
13
24
|
- Make the default README Chinese and add a concise English translation.
|
|
14
|
-
-
|
|
25
|
+
- Materialize PortableGit's hardlinked paths during assembly: npm rejects hard links with E415, so the shell packages publish regular files with identical bytes.
|
|
26
|
+
- Fix credential selection: the first publish attempt used an unrelated local npm token and received E403. The maintainer's explicitly selected bypass credential was accepted; the earlier attribution of that failure to the maintainer's token was wrong.
|
|
27
|
+
- Known unresolved item: complete corresponding-source delivery for the GPL/LGPL components in the PortableGit inventory was not collected or reviewed, and no source offer is claimed. Publication proceeded at the maintainer's explicit direction.
|
|
15
28
|
|
|
16
29
|
## [Unreleased] — additive tool surface
|
|
17
30
|
|
package/PROVENANCE.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
What this repository is, where its parts came from, what was verified, and what
|
|
4
4
|
was not.
|
|
5
5
|
|
|
6
|
+
## 0.2.2 Bash schema hotfix
|
|
7
|
+
|
|
8
|
+
The maintainer reported a model API rejection after official marketplace installation:
|
|
9
|
+
`ops_bash` had no object-root JSON Schema. The plugin supplied a field map directly to
|
|
10
|
+
`tools.register`, whereas only the host's `defineTool` helper compiles such maps; raw
|
|
11
|
+
registration and model projection preserve `parameters` unchanged. The plugin now
|
|
12
|
+
supplies explicit `type: 'object'`, `properties`, and root `required`. Inspection through
|
|
13
|
+
the installed official 0.2.0-rc.2 registry confirms the exported schema is object-rooted
|
|
14
|
+
and valid. No model API request or full marketplace round trip is claimed. The three
|
|
15
|
+
existing 0.2.1 runtime payloads are reused unchanged; only the main package is patched.
|
|
16
|
+
|
|
6
17
|
## 0.2.1 Windows payload packaging
|
|
7
18
|
|
|
8
19
|
The assembler now builds all three Windows x64 payload packages. Bash carries
|
|
@@ -11,15 +22,22 @@ PowerShell 7.6.6 under bin/. Original licenses/notices are preserved. Archive
|
|
|
11
22
|
and executable hashes are pinned in lib/shells.js. All three runtime packages
|
|
12
23
|
are injected into the main publish artifact; no install lifecycle downloads.
|
|
13
24
|
|
|
14
|
-
The maintainer
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
The maintainer directed publication after the source-delivery risk was reported. The
|
|
26
|
+
first attempt used an unrelated local npm credential and received E403; selecting the
|
|
27
|
+
maintainer's bypass credential succeeded, so that failure was credential selection,
|
|
28
|
+
not the maintainer's token. Publishing hit a second real blocker: npm rejects tar
|
|
29
|
+
hard links (E415), so the assembler materializes PortableGit's 84 linked paths and the
|
|
30
|
+
published bash package is 161.2 MB packed rather than the 136.1 MB first measured.
|
|
31
|
+
All four packages are published at 0.2.1; the registry-reported digests of exactly
|
|
32
|
+
what users receive are recorded in docs/release-0.2.1.md, because the local dist
|
|
33
|
+
provenance is regenerated with a new timestamp on every build and does not describe
|
|
34
|
+
the earlier-published FastCtx tarball byte for byte.
|
|
35
|
+
|
|
36
|
+
PortableGit's etc/package-versions.txt includes many GPL/LGPL components; complete
|
|
37
|
+
matching source closure/delivery has not been collected or reviewed. Retaining
|
|
38
|
+
upstream licenses does not attest that those obligations have been fulfilled. No
|
|
39
|
+
source offer is invented. Historical 0.2.0 pin-package descriptions below do not
|
|
40
|
+
describe this new payload layout.
|
|
23
41
|
|
|
24
42
|
The profile installer delegates to the official DSH CLI, retaining its locks,
|
|
25
43
|
compatibility checks and rollback rather than cloning them. Live installation
|
package/README.en.md
CHANGED
|
@@ -41,6 +41,11 @@ dsh plugin --profile dsh-tui add dsh-ops
|
|
|
41
41
|
Update by repeating the npx install command, or official `add dsh-ops@latest`.
|
|
42
42
|
Reload/restart as the application requests; replacing loaded code may require restart.
|
|
43
43
|
|
|
44
|
+
The patch version is `0.2.2`: it fixes the malformed `ops_bash` parameter schema
|
|
45
|
+
that caused model requests to fail after marketplace installation. All three runtime
|
|
46
|
+
dependencies remain pinned to `0.2.1`; their original release record is in
|
|
47
|
+
[docs/release-0.2.1.md](docs/release-0.2.1.md).
|
|
48
|
+
|
|
44
49
|
```console
|
|
45
50
|
npx --yes dsh-ops@latest status --profile desktop
|
|
46
51
|
npx --yes dsh-ops@latest uninstall --profile desktop
|
package/README.md
CHANGED
|
@@ -40,6 +40,8 @@ dsh plugin --profile dsh-tui add dsh-ops
|
|
|
40
40
|
|
|
41
41
|
**更新**:重新运行相同的 `npx --yes dsh-ops@latest install --profile ...`,或用官方 CLI `add dsh-ops@latest`。按应用提示重载;替换已加载代码时重启应用。
|
|
42
42
|
|
|
43
|
+
当前 npm 补丁版本为 `0.2.2`,修复官方市场安装后 `ops_bash` 参数 schema 缺少对象根导致模型请求失败的问题;三个运行包仍使用 `0.2.1`。原始载荷发布记录见 [docs/release-0.2.1.md](docs/release-0.2.1.md)。
|
|
44
|
+
|
|
43
45
|
**卸载与查看状态**:
|
|
44
46
|
|
|
45
47
|
```console
|
package/README.zh.md
CHANGED
|
@@ -40,6 +40,8 @@ dsh plugin --profile dsh-tui add dsh-ops
|
|
|
40
40
|
|
|
41
41
|
**更新**:重新运行相同的 `npx --yes dsh-ops@latest install --profile ...`,或用官方 CLI `add dsh-ops@latest`。按应用提示重载;替换已加载代码时重启应用。
|
|
42
42
|
|
|
43
|
+
当前 npm 补丁版本为 `0.2.2`,修复官方市场安装后 `ops_bash` 参数 schema 缺少对象根导致模型请求失败的问题;三个运行包仍使用 `0.2.1`。原始载荷发布记录见 [docs/release-0.2.1.md](docs/release-0.2.1.md)。
|
|
44
|
+
|
|
43
45
|
**卸载与查看状态**:
|
|
44
46
|
|
|
45
47
|
```console
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Published release record — 0.2.1
|
|
2
|
+
|
|
3
|
+
Exactly what this release published to the public npm registry. `npm` reports these
|
|
4
|
+
digests; they are the authoritative record of the bytes users receive. They are not
|
|
5
|
+
derived from the local `dist` directory, whose `provenance.json` is regenerated on
|
|
6
|
+
every build and therefore carries a different build timestamp.
|
|
7
|
+
|
|
8
|
+
| Package | Packed | Unpacked | shasum (sha1) |
|
|
9
|
+
| --- | ---: | ---: | --- |
|
|
10
|
+
| `dsh-ops@0.2.1` | 501.9 kB | 2.4 MB | `fe4fc569565e5544b1b779b90192f610de1783d3` |
|
|
11
|
+
| `@dsh-ops/fastctx-win32-x64@0.2.1` | 24.7 MB | 49.9 MB | `96caf16a5978f699560d05b2126a2c6f92efb08c` |
|
|
12
|
+
| `@dsh-ops/bash-win32-x64@0.2.1` | 161.2 MB | 411.1 MB | `8df967f0f9ac0104e327ae1e50d55036f4790121` |
|
|
13
|
+
| `@dsh-ops/pwsh-win32-x64@0.2.1` | 107.6 MB | 256.6 MB | `4a3cd69f68ffc616dd6d334f170bf7423e660f24` |
|
|
14
|
+
|
|
15
|
+
All four are published with public access and tag `latest`. The main package declares
|
|
16
|
+
the three Windows x64 runtime packages as exact `optionalDependencies`; the platform
|
|
17
|
+
packages were published first, so the main package never pointed at a version the
|
|
18
|
+
registry did not have.
|
|
19
|
+
|
|
20
|
+
## Two publishing problems this release hit
|
|
21
|
+
|
|
22
|
+
1. **Wrong credential selected.** The first attempt used a pre-existing credential in
|
|
23
|
+
the operator's `~/.npmrc`, which is a different token, and npm answered `E403`
|
|
24
|
+
(2FA or a granular bypass token required). The maintainer's explicitly selected
|
|
25
|
+
bypass credential was accepted. The earlier local message blaming the maintainer's
|
|
26
|
+
token was wrong; the error was credential selection.
|
|
27
|
+
2. **Hard links are rejected by the registry.** PortableGit's tree contains 84
|
|
28
|
+
hardlinked paths, and npm refused the first bash upload with
|
|
29
|
+
`E415 Unsupported Media Type — Hard link is not allowed`. The assembler now
|
|
30
|
+
materializes every linked path as an independent file with identical bytes, which
|
|
31
|
+
is why the published bash package is 161.2 MB (411.1 MB unpacked) rather than the
|
|
32
|
+
136.1 MB measured before. Runtime layout and file contents are unchanged; the
|
|
33
|
+
executable digests still match `lib/shells.js`.
|
|
34
|
+
|
|
35
|
+
## Distribution
|
|
36
|
+
|
|
37
|
+
- Tag `v0.2.1` and a GitHub Release with **notes only, no assets**. `v0.2.0`
|
|
38
|
+
attached four tarballs and `SHA256SUMS`; npm is now the installation channel, so
|
|
39
|
+
re-uploading ~290 MB of tarballs would only duplicate it.
|
|
40
|
+
- Repository Actions are **disabled at repository level**. Nothing runs on push,
|
|
41
|
+
tag, schedule or dispatch; the tag push above triggered no workflow. `.github/workflows/`
|
|
42
|
+
is kept as documentation of the intended gate and pipeline, and each file now says
|
|
43
|
+
at the top that it does not run. Publication is performed from a maintainer machine.
|
|
44
|
+
|
|
45
|
+
## What was verified, and what was not
|
|
46
|
+
|
|
47
|
+
Verified by installing the published artifacts from the registry into an isolated
|
|
48
|
+
directory with `--ignore-scripts`:
|
|
49
|
+
|
|
50
|
+
- `resolveShells` finds both bundled shells inside the installed dependency tree;
|
|
51
|
+
- the installed bash reports `GNU bash, version 5.3.15(2)-release`;
|
|
52
|
+
- the installed pwsh reports `7.6.6`;
|
|
53
|
+
- `npx --yes dsh-ops@0.2.1 status --profile tui` runs and maps `tui` to `dsh-tui`;
|
|
54
|
+
- `install --profile tui|desktop --dry-run` selects the expected official CLI,
|
|
55
|
+
including Desktop's own `resources/runtime/cli/bin/dsh.cmd`.
|
|
56
|
+
|
|
57
|
+
Not verified: a live install into a real profile, the marketplace's pnpm path and hot
|
|
58
|
+
reload, official uninstall behaviour, and end-to-end plugin mount inside a running
|
|
59
|
+
DSH session. The repository regression suites were not updated or run for this
|
|
60
|
+
release, and no CI gate guarded this publication.
|
|
61
|
+
|
|
62
|
+
## Licence status
|
|
63
|
+
|
|
64
|
+
The Windows payload packages redistribute complete upstream runtime trees: Git for
|
|
65
|
+
Windows (GPL and other licences) and PowerShell (MIT and third-party licences). Their
|
|
66
|
+
original licences and notices travel inside the packages, and `provenance.json`
|
|
67
|
+
records the upstream URL, release, byte count and SHA-256 of the archive each payload
|
|
68
|
+
came from. The complete corresponding-source closure for every GPL/LGPL component in
|
|
69
|
+
the PortableGit inventory has **not** been collected or reviewed; no written offer was
|
|
70
|
+
invented, and the plugin's MIT licence does not relicense the upstream components.
|
|
71
|
+
This is a documented, unresolved compliance item, published at the maintainer's
|
|
72
|
+
explicit direction.
|
package/docs/schema-current.json
CHANGED
|
@@ -62,12 +62,12 @@
|
|
|
62
62
|
"approximateTokens": 118
|
|
63
63
|
},
|
|
64
64
|
"bashSchema": {
|
|
65
|
-
"bytes":
|
|
66
|
-
"approximateTokens":
|
|
65
|
+
"bytes": 961,
|
|
66
|
+
"approximateTokens": 241
|
|
67
67
|
},
|
|
68
68
|
"fullWithBash": {
|
|
69
|
-
"bytes":
|
|
70
|
-
"approximateTokens":
|
|
69
|
+
"bytes": 10700,
|
|
70
|
+
"approximateTokens": 2675
|
|
71
71
|
},
|
|
72
72
|
"toolingPrompt": {
|
|
73
73
|
"bytes": 1053,
|
|
@@ -10,7 +10,7 @@ Baseline: plugin `dee3c57`, FastCtx 0.2.6, before presentation changes. Current:
|
|
|
10
10
|
| Four file schemas | 12,807 | 6,724 | 47.5% |
|
|
11
11
|
| Routing section (original full ladder vs restored compact three-layer table) | 3,373 | 1,053 | 68.8% |
|
|
12
12
|
|
|
13
|
-
Full-access FastCtx schema estimate: 4,723 → 2,435 tokens. The
|
|
13
|
+
Full-access FastCtx schema estimate: 4,723 → 2,435 tokens. The corrected object-root ops_bash schema adds 961 bytes (~241 tokens); full FastCtx+bash surface is 10,700 bytes (~2,675 tokens). Restricted file-only surface: about 1,681 tokens; its routing table is 470 bytes (~118 tokens). No server instructions are published (the original raw server instructions were 246 bytes); the old host-shell section is also removed. Baseline excludes ops_bash, so compare nine FastCtx tools like-for-like rather than treating restoration as a regression of those numbers. Total request savings depend on host presentation; these are not API usage/billing measurements.
|
|
14
14
|
|
|
15
15
|
`ops_grep` went from 3,766 → 2,019 bytes; `ops_inspect_local_file` from 4,375 → 1,968. `ops_replace` is retained: schema cost cannot establish invocation frequency, and no usage-frequency measurement was collected.
|
|
16
16
|
|
package/dsh-plugin.json
CHANGED
package/lib/shells.js
CHANGED
|
@@ -807,21 +807,26 @@ export function bashToolDefinition({ file, source, subprocess }) {
|
|
|
807
807
|
name: BASH_TOOL_NAME,
|
|
808
808
|
description: bashToolDescription(),
|
|
809
809
|
parameters: {
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
type: 'string',
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
810
|
+
type: 'object',
|
|
811
|
+
properties: {
|
|
812
|
+
command: { type: 'string', description: 'The bash command to execute.' },
|
|
813
|
+
workdir: {
|
|
814
|
+
type: 'string',
|
|
815
|
+
description: 'Working directory for this command. Defaults to the session workspace when omitted.',
|
|
816
|
+
},
|
|
817
|
+
timeoutMs: {
|
|
818
|
+
type: 'number',
|
|
819
|
+
description: 'Timeout in milliseconds; the command is killed on expiry. '
|
|
820
|
+
+ `Defaults to ${DEFAULT_BASH_TIMEOUT_MS}.`,
|
|
821
|
+
},
|
|
822
|
+
graceMs: {
|
|
823
|
+
type: 'number',
|
|
824
|
+
description: 'Grace period in milliseconds between termination and a forced kill. '
|
|
825
|
+
+ `Defaults to ${DEFAULT_GRACE_MS}.`,
|
|
826
|
+
},
|
|
824
827
|
},
|
|
828
|
+
required: ['command'],
|
|
829
|
+
additionalProperties: false,
|
|
825
830
|
},
|
|
826
831
|
output: {
|
|
827
832
|
schema: BASH_OUTPUT_SCHEMA,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ops",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -96,6 +96,11 @@
|
|
|
96
96
|
"optional": true
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
+
"optionalDependencies": {
|
|
100
|
+
"@dsh-ops/fastctx-win32-x64": "0.2.1",
|
|
101
|
+
"@dsh-ops/bash-win32-x64": "0.2.1",
|
|
102
|
+
"@dsh-ops/pwsh-win32-x64": "0.2.1"
|
|
103
|
+
},
|
|
99
104
|
"devDependencies": {
|
|
100
105
|
"@deepseek-ai/cordis": "4.0.4",
|
|
101
106
|
"@deepseek-ai/dsh-scope": "0.2.0-rc.2",
|
|
@@ -107,10 +112,5 @@
|
|
|
107
112
|
},
|
|
108
113
|
"engines": {
|
|
109
114
|
"node": "^22.19 || >=24"
|
|
110
|
-
},
|
|
111
|
-
"optionalDependencies": {
|
|
112
|
-
"@dsh-ops/fastctx-win32-x64": "0.2.1",
|
|
113
|
-
"@dsh-ops/bash-win32-x64": "0.2.1",
|
|
114
|
-
"@dsh-ops/pwsh-win32-x64": "0.2.1"
|
|
115
115
|
}
|
|
116
116
|
}
|