dsh-ops 0.0.0-stage → 0.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 (139) hide show
  1. package/CHANGELOG.md +189 -0
  2. package/LICENSE +30 -0
  3. package/NOTICE +106 -0
  4. package/PROVENANCE.md +417 -0
  5. package/README.en.md +121 -0
  6. package/README.md +113 -2
  7. package/README.zh.md +114 -0
  8. package/bin/dsh-ops.mjs +1216 -0
  9. package/cordis.patch.yml +160 -0
  10. package/docs/manual-validation.md +53 -0
  11. package/docs/schema-baseline.json +64 -0
  12. package/docs/schema-current.json +84 -0
  13. package/docs/schema-measurement.md +17 -0
  14. package/dsh-plugin.json +88 -0
  15. package/icon.svg +12 -0
  16. package/lib/binary.js +409 -0
  17. package/lib/config.js +198 -0
  18. package/lib/handshake.js +252 -0
  19. package/lib/index.js +108 -0
  20. package/lib/jobs.js +42 -0
  21. package/lib/policy.js +64 -0
  22. package/lib/presentation.js +63 -0
  23. package/lib/profile-install.js +61 -0
  24. package/lib/rust.js +194 -0
  25. package/lib/session-shells.js +78 -0
  26. package/lib/shells.js +993 -0
  27. package/lib/tools.js +657 -0
  28. package/locale/en.json +6 -0
  29. package/locale/zh.json +6 -0
  30. package/package.json +114 -4
  31. package/vendor/fastctx/Cargo.lock +3210 -0
  32. package/vendor/fastctx/Cargo.toml +94 -0
  33. package/vendor/fastctx/FORK.md +119 -0
  34. package/vendor/fastctx/LICENSE-APACHE +201 -0
  35. package/vendor/fastctx/NOTICE +40 -0
  36. package/vendor/fastctx/README.md +439 -0
  37. package/vendor/fastctx/THIRD_PARTY_LICENSES.md +17 -0
  38. package/vendor/fastctx/THIRD_PARTY_LICENSES_RUST.md +7914 -0
  39. package/vendor/fastctx/UPSTREAM.md +49 -0
  40. package/vendor/fastctx/build.rs +413 -0
  41. package/vendor/fastctx/src/background_status.rs +403 -0
  42. package/vendor/fastctx/src/binary.rs +75 -0
  43. package/vendor/fastctx/src/bounded_sort.rs +500 -0
  44. package/vendor/fastctx/src/budget.rs +781 -0
  45. package/vendor/fastctx/src/cli/mod.rs +110 -0
  46. package/vendor/fastctx/src/context_guard.rs +289 -0
  47. package/vendor/fastctx/src/control/mod.rs +6 -0
  48. package/vendor/fastctx/src/control/paths.rs +49 -0
  49. package/vendor/fastctx/src/control/settings.rs +753 -0
  50. package/vendor/fastctx/src/control/transaction.rs +531 -0
  51. package/vendor/fastctx/src/edit/document.rs +535 -0
  52. package/vendor/fastctx/src/edit/locks.rs +371 -0
  53. package/vendor/fastctx/src/edit/mod.rs +213 -0
  54. package/vendor/fastctx/src/edit/private_storage/unix.rs +315 -0
  55. package/vendor/fastctx/src/edit/private_storage/windows.rs +793 -0
  56. package/vendor/fastctx/src/edit/private_storage.rs +234 -0
  57. package/vendor/fastctx/src/edit/replace.rs +1030 -0
  58. package/vendor/fastctx/src/edit_server.rs +53 -0
  59. package/vendor/fastctx/src/encoding/reference_v011.rs +587 -0
  60. package/vendor/fastctx/src/encoding/snapshot_pipeline.rs +1678 -0
  61. package/vendor/fastctx/src/encoding.rs +1118 -0
  62. package/vendor/fastctx/src/file_executor.rs +1151 -0
  63. package/vendor/fastctx/src/file_snapshot.rs +1491 -0
  64. package/vendor/fastctx/src/glob_filter.rs +98 -0
  65. package/vendor/fastctx/src/glob_tool.rs +653 -0
  66. package/vendor/fastctx/src/grep_sink.rs +1162 -0
  67. package/vendor/fastctx/src/grep_tool.rs +2449 -0
  68. package/vendor/fastctx/src/lib.rs +45 -0
  69. package/vendor/fastctx/src/main.rs +15 -0
  70. package/vendor/fastctx/src/model.rs +51 -0
  71. package/vendor/fastctx/src/model_guidance.rs +62 -0
  72. package/vendor/fastctx/src/operation.rs +356 -0
  73. package/vendor/fastctx/src/ordered_window.rs +1235 -0
  74. package/vendor/fastctx/src/os_environment.rs +414 -0
  75. package/vendor/fastctx/src/path_codec.rs +850 -0
  76. package/vendor/fastctx/src/paths.rs +244 -0
  77. package/vendor/fastctx/src/process_identity.rs +763 -0
  78. package/vendor/fastctx/src/process_policy.rs +74 -0
  79. package/vendor/fastctx/src/read_tool/batch.rs +496 -0
  80. package/vendor/fastctx/src/read_tool/hex_file.rs +141 -0
  81. package/vendor/fastctx/src/read_tool/image_file.rs +88 -0
  82. package/vendor/fastctx/src/read_tool/mod.rs +245 -0
  83. package/vendor/fastctx/src/read_tool/pdf.rs +470 -0
  84. package/vendor/fastctx/src/read_tool/pdf_disabled.rs +47 -0
  85. package/vendor/fastctx/src/read_tool/pdf_engine.rs +664 -0
  86. package/vendor/fastctx/src/read_tool/text_file.rs +351 -0
  87. package/vendor/fastctx/src/render_plan.rs +468 -0
  88. package/vendor/fastctx/src/runtime/activity.rs +159 -0
  89. package/vendor/fastctx/src/runtime/hosts.rs +99 -0
  90. package/vendor/fastctx/src/runtime/journal.rs +556 -0
  91. package/vendor/fastctx/src/runtime/local_ipc.rs +186 -0
  92. package/vendor/fastctx/src/runtime/mod.rs +746 -0
  93. package/vendor/fastctx/src/runtime/protocol.rs +296 -0
  94. package/vendor/fastctx/src/runtime/session.rs +536 -0
  95. package/vendor/fastctx/src/runtime/windows_process.rs +66 -0
  96. package/vendor/fastctx/src/search_parallelism.rs +106 -0
  97. package/vendor/fastctx/src/search_text.rs +227 -0
  98. package/vendor/fastctx/src/server.rs +359 -0
  99. package/vendor/fastctx/src/server_manifest.rs +468 -0
  100. package/vendor/fastctx/src/server_support.rs +826 -0
  101. package/vendor/fastctx/src/session.rs +629 -0
  102. package/vendor/fastctx/src/shell/apply_patch_hint.rs +41 -0
  103. package/vendor/fastctx/src/shell/bash.rs +263 -0
  104. package/vendor/fastctx/src/shell/buffer.rs +108 -0
  105. package/vendor/fastctx/src/shell/encoding.rs +403 -0
  106. package/vendor/fastctx/src/shell/foreground.rs +115 -0
  107. package/vendor/fastctx/src/shell/jobs/admission.rs +91 -0
  108. package/vendor/fastctx/src/shell/jobs/background.rs +146 -0
  109. package/vendor/fastctx/src/shell/jobs/host.rs +830 -0
  110. package/vendor/fastctx/src/shell/jobs/identity.rs +29 -0
  111. package/vendor/fastctx/src/shell/jobs/mod.rs +1513 -0
  112. package/vendor/fastctx/src/shell/jobs/model.rs +244 -0
  113. package/vendor/fastctx/src/shell/jobs/output_log.rs +1148 -0
  114. package/vendor/fastctx/src/shell/jobs/store.rs +1300 -0
  115. package/vendor/fastctx/src/shell/mod.rs +345 -0
  116. package/vendor/fastctx/src/shell/normalize.rs +389 -0
  117. package/vendor/fastctx/src/shell/output.rs +406 -0
  118. package/vendor/fastctx/src/shell/process.rs +493 -0
  119. package/vendor/fastctx/src/shell_server.rs +156 -0
  120. package/vendor/fastctx/src/skip_report.rs +83 -0
  121. package/vendor/fastctx/src/stdio_transport.rs +177 -0
  122. package/vendor/fastctx/src/tool_schema.rs +204 -0
  123. package/vendor/fastctx/src/traversal.rs +846 -0
  124. package/vendor/fastctx/third-party/pdfium-7763/LICENSE +9 -0
  125. package/vendor/fastctx/third-party/pdfium-7763/licenses/abseil.txt +202 -0
  126. package/vendor/fastctx/third-party/pdfium-7763/licenses/agg23.txt +14 -0
  127. package/vendor/fastctx/third-party/pdfium-7763/licenses/fast_float.txt +27 -0
  128. package/vendor/fastctx/third-party/pdfium-7763/licenses/freetype.txt +169 -0
  129. package/vendor/fastctx/third-party/pdfium-7763/licenses/icu.txt +542 -0
  130. package/vendor/fastctx/third-party/pdfium-7763/licenses/lcms.txt +27 -0
  131. package/vendor/fastctx/third-party/pdfium-7763/licenses/libjpeg_turbo.ijg +260 -0
  132. package/vendor/fastctx/third-party/pdfium-7763/licenses/libjpeg_turbo.md +135 -0
  133. package/vendor/fastctx/third-party/pdfium-7763/licenses/libopenjpeg.txt +32 -0
  134. package/vendor/fastctx/third-party/pdfium-7763/licenses/libpng.txt +134 -0
  135. package/vendor/fastctx/third-party/pdfium-7763/licenses/libtiff.txt +21 -0
  136. package/vendor/fastctx/third-party/pdfium-7763/licenses/llvm-libc.txt +278 -0
  137. package/vendor/fastctx/third-party/pdfium-7763/licenses/pdfium.txt +230 -0
  138. package/vendor/fastctx/third-party/pdfium-7763/licenses/simdutf.txt +18 -0
  139. package/vendor/fastctx/third-party/pdfium-7763/licenses/zlib.txt +29 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,189 @@
1
+ # Changelog
2
+
3
+ All notable changes to this package are recorded here.
4
+
5
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
6
+ this package adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.1] — Windows payload packaging
9
+
10
+ - 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
+ - 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
+ - Resolve the pwsh dependency from the plugin package under pnpm isolation.
13
+ - Make the default README Chinese and add a concise English translation.
14
+ - Correct the npm credential selection: the initial E403 used an old local token, not the maintainer-provided bypass token. The explicitly selected bypass token was accepted for publication. Local payload builds are not license-compliance evidence.
15
+
16
+ ## [Unreleased] — additive tool surface
17
+
18
+ ### Changed
19
+
20
+ - Replace the execution ladder and duplicate prompt sections with one compact routing table.
21
+ - Preserve `ops_bash` as the preferred general command executor in the tools → bash → PowerShell 7 design; publish it in full-access agent scopes with the host subprocess service. Keep the compact routing table and use pwsh only for necessary Windows-native operations.
22
+ - Publish command/job tools only in plugin-owned agent fibers under authoritative per-session `danger-full-access`; reconcile `sandbox/mode` changes and recheck calls. No env/preset fallback.
23
+ - Reject image inspection explicitly and advertise PDF text only; preserve batch text ranges, encodings, hex, search filtering, and batch replacement.
24
+ - Shorten published schema descriptions and advertise only symmetric grep context. Forward ordinary arguments unchanged.
25
+ - Track background-job ownership per session/connection; reject foreign output/kill, filter background footers, and project owned job listings/counts/pagination.
26
+ - Withdraw tools on disconnect. Scope all definitions/disposers to plugin ownership, with no shared registry rewrite or host value imports.
27
+ - Declare read-only sibling concurrency through the host's function API. Do not assert host timeout quiescence; preserve the existing transport deadline.
28
+
29
+ ### Measurement and validation
30
+
31
+ - Add a standalone schema measurement command and pre-change baseline, not a test gate.
32
+ - Document manual acceptance and limits. No regression tests/CI added, existing tests neither updated nor run for this change.
33
+ - Filesystem confinement of FastCtx file tools, per-command approval escalation, and cancellation quiescence remain outside this pass.
34
+
35
+ ## [0.2.0] - Unreleased
36
+
37
+ The command-execution ladder, the plugin's own shells, the runtime package and the
38
+ two shell pins that bring them, and the end of the MCP bridge dependency. Not
39
+ published either: the repository still has no remote and no release tags, and this
40
+ entry is where `package.json` / `dsh-plugin.json` move to `0.2.0`; no tag has been
41
+ cut from it.
42
+
43
+ ### Added
44
+
45
+ - **The command-execution ladder.** `lib/policy.js` renders the repository-tooling
46
+ section as an explicit ladder — FastCtx (`ops_*`), then `ops_bash`, then
47
+ PowerShell 7, then the host's own shell tools as the last resort — naming only the
48
+ rungs the model can actually reach and renumbering the rest, so the text the model
49
+ reads has no gaps. Preference is wording: the plugin never retries a failed call
50
+ on another rung and never cascades at run time.
51
+ - **`ops_bash`** — the plugin's own bash, published as an ordinary tool through
52
+ `ctx.tools.register` (only while the host's subprocess service is mounted) and
53
+ executed through `ctx.get('subprocess')`, so commands run under the harness's own
54
+ credential scrub, output spilling, and process termination. Its environment is the
55
+ terminal overrides (`NO_COLOR`, `TERM`, `PAGER`, `GIT_PAGER`) and nothing else: it
56
+ forwards no credential-shaped name and no `DSH_*` fact, and it never writes
57
+ `process.env`, `PATH`, or the working directory.
58
+ - **PowerShell 7 as rung 3.** The bundle patch re-points the host's `pwsh-sandbox`
59
+ row at the plugin's own pwsh through a `!!js` `pwshPath` — Windows-gated,
60
+ `lstat`-based usability checks over both bundled layouts in one order (the
61
+ installed `@dsh-ops/pwsh-<platform>-<arch>` package first, then the vendored copy),
62
+ and a wrapping `try`/`catch`. A deployment whose package carries neither copy gets
63
+ `undefined`, which is the row's own default, so the host's PowerShell resolution is
64
+ untouched. A profile overrides the entry in its own `cordis.patch.yml`, which
65
+ applies after every bundle layer.
66
+ - **Per-agent visibility under `deny-host-shell`.** On `agent/created` the plugin
67
+ masks the configured host shell tools out of that agent's view with
68
+ `agent.ctx.tools.restrict({ deny })` — only while a rung of its own is live; the
69
+ fence at `tools/pre-execute` stays the guarantee, and the mask's disposer is owned
70
+ by the plugin as well, so unloading lifts it. With no rung of the plugin's own, the
71
+ fence is kept, visibility is left alone, and the reason is reported once.
72
+ - Three config keys: `bashPath` (an explicit bash for rung 2, authoritative),
73
+ `publishBashTool` (default `true`), and `allowSystemShellFallback` (default
74
+ `true`, to confine rung 2 to plugin-provided shells).
75
+ - **One runtime package, and two pins instead of two redistributions.**
76
+ `@dsh-ops/fastctx-<platform>-<arch>` carries this fork's slimmed FastCtx build
77
+ (`bin/fastctx.exe`), built here. `@dsh-ops/bash-<platform>-<arch>` and
78
+ `@dsh-ops/pwsh-<platform>-<arch>` carry **metadata only** — the upstream URL,
79
+ release, version, byte count, and SHA-256 of Git for Windows PortableGit and of
80
+ PowerShell 7. Neither upstream binary is repackaged, forwarded, or redistributed
81
+ by this distribution; the tag's GitHub Release carries this distribution's own
82
+ tarballs and a `SHA256SUMS`, and nothing upstream's. `PROVENANCE.md` records every
83
+ pin and licence.
84
+ - **`dsh-ops provision-shells [--bash|--pwsh]`.** Reads a pin, downloads that
85
+ upstream archive on the user's own machine, verifies it against the pinned
86
+ SHA-256, and unpacks it under `<DSH_HOME>/dsh-ops/shells/<name>/<version>/`, which
87
+ is the first place both shell rungs resolve from. Nothing is downloaded at plugin
88
+ load time, and nothing is downloaded unless the command is run.
89
+ - **`dsh-ops ladder`.** The CLI prints each rung's availability and the executable it
90
+ came from, together with the rungs the prompt text renders for that answer, so a
91
+ deployment can confirm which shells took effect without opening a session.
92
+ - **The shell resolution gained a provisioned tier, and so did the runtime chain.**
93
+ Rung 2 resolves `config.bashPath`, then the provisioned copy, then a packaged copy,
94
+ then `PATH`, then the well-known installs; rung 3 and the bundle patch that
95
+ re-points the host's `pwsh-sandbox` row walk the same layouts in the same order. On
96
+ the runtime side, the FastCtx chain tries `@dsh-ops/fastctx-<platform>-<arch>` ahead
97
+ of the upstream `@fastctx/<platform>-<arch>` step, so an install gets this fork's
98
+ build by default while a deployment without it still falls through to the vendored
99
+ source build, the upstream package, or `fastctx` on `PATH`.
100
+
101
+ ### Changed
102
+
103
+ - The repository-tooling section is no longer a flat tool list; it is the ladder
104
+ above, rendered from the rungs the model can actually reach.
105
+ - `dsh-plugin.json` declares a second tool namespace for the tools the plugin
106
+ registers itself (`ops_bash`, `transport: in-process`), and the manifest gate
107
+ checks it against the fully-open ladder text.
108
+ - **This distribution's own platform packages are injected into
109
+ `optionalDependencies` at release time, not committed.** Before the first release
110
+ those names resolve nowhere, so listing them in the repository would put a failed
111
+ optional fetch into every contributor's install log for no gain; the release step
112
+ writes them, and the tarball it publishes is the one that declares them. The two
113
+ shell pins cost an install nothing to declare, because they hold metadata and no
114
+ binaries.
115
+ - The package version moves to `0.2.0` in `package.json` and `dsh-plugin.json`.
116
+
117
+ ### Removed
118
+
119
+ - `pwshPath` and `overridePwshExecutor` are not config keys and now fail as unknown
120
+ keys. A bundle patch is evaluated before any `dsh-ops` row is mounted, so a key
121
+ could never reach the `pwsh-sandbox` override; rung 3 follows the executable
122
+ instead, and the override is the patch entry documented above.
123
+ - `@deepseek-ai/dsh-mcp-client`, along with the `BRIDGE_PACKAGE` declaration and the
124
+ manifest check that required it. The plugin holds the MCP stdio connection to the
125
+ FastCtx server it spawns and publishes the tools itself (`lib/handshake.js`,
126
+ `lib/tools.js`); it no longer mounts a bridge, and the 0.1.0 entry's
127
+ registry-boundary renaming is gone with it.
128
+
129
+ ### Fixed
130
+
131
+ - **`ops_bash` registers on the real host.** Its output schema used type arrays
132
+ (`['integer', 'null']`), which the harness's schema gate rejects outright, so the
133
+ tool could not be registered at all. Every `type` is now a single type and
134
+ `exitCode`/`signal` are optional properties: an unknown exit fact omits the key
135
+ rather than sending `null`.
136
+ - **Rung 3 and the host row are one fact.** The bundle patch's expression and the
137
+ plugin's own probe now walk the same two bundled layouts
138
+ (`BUNDLED_LAYOUT_ORDER`) in the same order with the same `lstat` test, so the
139
+ ladder cannot advertise a PowerShell rung the host row does not run — or miss one
140
+ it would.
141
+ - **The visibility mask follows the rungs that are live.** `deny-host-shell` used to
142
+ hide the host shell tools whenever a bash merely resolved. The question is now
143
+ asked of the ladder the model can reach — `ops_bash` published, or the PowerShell
144
+ rung live — and asked again as each agent appears. With no rung of the plugin's
145
+ own, visibility is left alone and the reason is reported once; the
146
+ `tools/pre-execute` fence is unchanged and is installed by the mode alone.
147
+
148
+ ## [0.1.0] - Unreleased
149
+
150
+ The first version. Not published: the repository has no remote and no release
151
+ tags, and `package.json` still carries `"private": true`.
152
+
153
+ ### Added
154
+
155
+ - The plugin itself: one bundle that mounts the FastCtx MCP runtime as the
156
+ profile's repository tool surface, publishes its tools under a namespace of the
157
+ plugin's own, and injects two prompt sections that steer repository work away
158
+ from the host shell.
159
+ - `shellPolicy: deny-host-shell` — an opt-in `tools/pre-execute` fence that
160
+ refuses the configured host shell tools by name. FastCtx's own tools are never
161
+ refused, so command execution stays available.
162
+ - The `dsh-ops` CLI: `resolve`, `status`, `build`, and `provision`. `provision`
163
+ installs the built runtime into `<DSH_HOME>/dsh-ops/bin/` and writes a receipt
164
+ recording its origin, version, and SHA-256.
165
+ - Composite licensing — MIT for the plugin, Apache-2.0 for `vendor/fastctx/` —
166
+ with FastCtx's required notice reproduced verbatim in `README.md`,
167
+ `README.zh.md`, and `NOTICE`.
168
+
169
+ ### Changed
170
+
171
+ - **The FastCtx tools are published as `ops_*`.** The bridge's own
172
+ `mcp__<serverName>__<rawName>` naming is transport vocabulary in every
173
+ transcript, so registrations inside this plugin's bridge namespace are renamed
174
+ at the registry boundary: the model calls `ops_grep`, and a transcript shows
175
+ `ops_grep`. The `mcp__fastctx__*` names never reach the model.
176
+ - **The vendored FastCtx is stripped to its MCP server.** Upstream's control
177
+ terminal (`src/tui/`), self-updater and upstream-version check (`src/update/`),
178
+ and Codex integration — including `control/i18n.rs` and the other locale
179
+ catalogs — are deleted rather than left unreachable, along with the
180
+ distribution and CI machinery. 57 files changed, 285 insertions and 24,715
181
+ deletions. The binary now carries `serve` plus the internal entry points the
182
+ shell and session machinery spawn.
183
+ - `PROVENANCE.md` now records what was read from the readable `0.2.0-rc.2`
184
+ source, with file and line, next to what a suite actually ran.
185
+
186
+ ### Removed
187
+
188
+ - Upstream's `.github/`, `packages/` (the npm launcher, `codex-fastctx`, and the
189
+ five `@fastctx/<platform>` binary packages), and `scripts/`.
package/LICENSE ADDED
@@ -0,0 +1,30 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 T-Auto and the dsh-ops contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ -------------------------------------------------------------------------------
24
+
25
+ This MIT license covers the dsh-ops plugin: everything in this repository
26
+ except `vendor/fastctx/`, which is FastCtx under the Apache License 2.0. The
27
+ distribution as a whole is therefore licensed under the composite
28
+ `MIT AND Apache-2.0`. See `NOTICE` for the full statement and the attribution
29
+ FastCtx requires, and `vendor/fastctx/LICENSE-APACHE` for the Apache License
30
+ 2.0 text.
package/NOTICE ADDED
@@ -0,0 +1,106 @@
1
+ dsh-ops
2
+ Copyright (c) 2026 T-Auto and the dsh-ops contributors
3
+
4
+ ================================================================
5
+ COMPOSITE LICENSE
6
+ ================================================================
7
+
8
+ This distribution is licensed under the composite expression
9
+
10
+ MIT AND Apache-2.0
11
+
12
+ because it contains two bodies of work under two licenses:
13
+
14
+ 1. The dsh-ops plugin — everything in this repository except
15
+ `vendor/fastctx/`. Licensed MIT. The license text is in `LICENSE`.
16
+
17
+ 2. The vendored FastCtx source in `vendor/fastctx/`. Licensed
18
+ Apache-2.0 by its author. The license text is in
19
+ `vendor/fastctx/LICENSE-APACHE`, upstream's notice is in
20
+ `vendor/fastctx/NOTICE`, and the exact upstream revision and every
21
+ difference from it are recorded in `vendor/fastctx/UPSTREAM.md` and
22
+ `vendor/fastctx/FORK.md`.
23
+
24
+ The installed npm package additionally depends on the published FastCtx
25
+ platform packages `@fastctx/<platform>` (Apache-2.0), which are separate
26
+ works distributed under their own terms; `vendor/fastctx/THIRD_PARTY_LICENSES.md`
27
+ lists the third-party components inside FastCtx itself. Bundled Pdfium
28
+ notices are in `vendor/fastctx/third-party/pdfium-7763/`.
29
+
30
+ The published package also declares this distribution's own platform
31
+ packages as OPTIONAL dependencies, and the same packages — this
32
+ distribution's own tarballs, and nothing upstream's — are the assets
33
+ attached to the GitHub Release for a tag. They are optional in the
34
+ dependency sense, and two of them are not payloads at all: no upstream
35
+ binary travels in this distribution.
36
+
37
+ * `@dsh-ops/fastctx-<platform>-<arch>` — this fork's build of FastCtx,
38
+ a payload built by this distribution from `vendor/fastctx/`.
39
+ Apache-2.0, by FastCtx's author, with the removals this distribution
40
+ made: the notice upstream requires is reproduced in this file and in
41
+ both READMEs, every source file this distribution touched carries its
42
+ own Apache-2.0 section 4(b) notice, and the complete enumeration is
43
+ in `vendor/fastctx/FORK.md`. `PROVENANCE.md` records this package's
44
+ upstream revision, upstream version, and payload SHA-256.
45
+
46
+ * `@dsh-ops/bash-<platform>-<arch>` — a PIN, not a redistribution.
47
+ This distribution does not contain, forward, repackage, or
48
+ redistribute Git for Windows. The pin records the upstream release
49
+ the shell is taken from (`PortableGit-2.56.0.2-64-bit.7z.exe`, Git
50
+ for Windows `v2.56.0.windows.2`), the official URL that publishes it,
51
+ and its SHA-256; `dsh-ops provision-shells` reads the pin, downloads
52
+ that asset on the user's own machine, verifies the digest there, and
53
+ unpacks it there. Git for Windows is distributed under the GNU
54
+ General Public License version 2, so the bytes a user obtains that
55
+ way are GPL-2.0 and are used under that licence; its terms, its
56
+ copyright, and the corresponding source belong to the Git for
57
+ Windows project (https://github.com/git-for-windows/git) and to the
58
+ Git project (https://github.com/git/git). No GPL-2.0-covered
59
+ component is part of this distribution.
60
+
61
+ * `@dsh-ops/pwsh-<platform>-<arch>` — a PIN, not a redistribution.
62
+ This distribution does not contain, forward, repackage, or
63
+ redistribute PowerShell. The pin records the upstream release
64
+ (`PowerShell-7.6.6-win-x64.zip`, PowerShell `v7.6.6`), the official
65
+ URL that publishes it, and its SHA-256; `dsh-ops provision-shells
66
+ --pwsh` reads the pin, downloads that asset on the user's own
67
+ machine, and verifies the digest there. PowerShell is distributed by
68
+ Microsoft under the MIT licence; that licence text, its copyright,
69
+ and the corresponding source belong to Microsoft and to the
70
+ PowerShell project (https://github.com/PowerShell/PowerShell).
71
+
72
+ Nothing in this distribution is relicensed. The MIT grant covers only the
73
+ work this repository authored.
74
+
75
+ ================================================================
76
+ ATTRIBUTION NOTICE — FastCtx
77
+ ================================================================
78
+
79
+ FastCtx's NOTICE requires that a derivative work carry the following
80
+ notice verbatim in its documentation. It is reproduced here and in the
81
+ repository README, as required.
82
+
83
+ This product includes FastCtx
84
+ (https://github.com/yc-duan/fastctx), Copyright (c) 2026 yc-duan,
85
+ used under the Apache License 2.0.
86
+
87
+ FastCtx is redistributed and/or modified here by the maintainer of
88
+ this distribution. Any such change is that maintainer's own work
89
+ and their sole responsibility. It is not endorsed by, not
90
+ supported by, and not attributable to the author of FastCtx, who
91
+ accepts no liability of any kind arising from this distribution or
92
+ from anything built on top of it.
93
+
94
+ The changes this distribution makes to FastCtx are removals — of
95
+ distribution and CI machinery, and of the code that existed only for
96
+ upstream's standalone product (the control terminal, the self-updater and
97
+ its upstream update detection, and the Codex integration) — together with
98
+ the edits those removals forced in the files that remain. Every source
99
+ file this distribution touched carries its own Apache-2.0 section 4(b)
100
+ notice at the top, and the complete enumeration is in
101
+ `vendor/fastctx/FORK.md`.
102
+
103
+ ================================================================
104
+
105
+ FastCtx is developed and maintained at
106
+ https://github.com/yc-duan/fastctx