dsh-plugin-lcu 0.3.7 → 0.3.8
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 +18 -0
- package/package.json +1 -1
- package/scripts/codex-baseline.json +2 -2
- package/scripts/update-codex.mjs +21 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.8
|
|
4
|
+
|
|
5
|
+
The Codex upgrade script works across DSH Desktop releases again, and its
|
|
6
|
+
baseline now records `@openai/codex` 0.164.0.
|
|
7
|
+
|
|
8
|
+
- Resolve the app-bundled pnpm from the location current Desktop builds use
|
|
9
|
+
(`runtime/primary-runtime/dependencies/pnpm/bin/pnpm.mjs`), keeping the old
|
|
10
|
+
`runtime/pnpm/...` path as a fallback. The 0.2.1-rc.3 release moved it, and the
|
|
11
|
+
script's stale constant made every install fail with a null status.
|
|
12
|
+
- Keep the two-space indent when rewriting an existing override line. Dropping
|
|
13
|
+
it turned the key into a top-level entry, so pnpm ignored the override and
|
|
14
|
+
installed the dependency's own 0.153.4 pin; the script then reported
|
|
15
|
+
"installed 0.153.4, wanted 0.164.0" instead of applying the target.
|
|
16
|
+
- Include the spawn error when pnpm cannot start, instead of an empty detail.
|
|
17
|
+
- Verified 0.164.0 through all three gates (handshake, protocol schema, real
|
|
18
|
+
turn) and recorded it in `scripts/codex-baseline.json`; this profile now pins
|
|
19
|
+
`@deepseek-ai/dsh-subagent-codex>@openai/codex` to 0.164.0.
|
|
20
|
+
|
|
3
21
|
## 0.3.7
|
|
4
22
|
|
|
5
23
|
Documentation only; no behaviour change.
|
package/package.json
CHANGED
package/scripts/update-codex.mjs
CHANGED
|
@@ -55,7 +55,16 @@ const CODEX_ENTRY = 'node_modules/@openai/codex/bin/codex.js'
|
|
|
55
55
|
// fetch every OS/arch payload (~275 MB each).
|
|
56
56
|
const OVERRIDE_KEY = '"@deepseek-ai/dsh-subagent-codex>@openai/codex"'
|
|
57
57
|
const OVERRIDE_RE = /^\s*"@deepseek-ai\/dsh-subagent-codex>@openai\/codex":.*$/m
|
|
58
|
-
|
|
58
|
+
// The Desktop app bundles the pnpm the profile was installed with, and that
|
|
59
|
+
// payload moves between releases: 0.2.1-rc.3 keeps it under primary-runtime,
|
|
60
|
+
// while older builds used runtime/pnpm. Resolve the first one that exists —
|
|
61
|
+
// a PATH pnpm is only a last resort, because a different pnpm may refuse this
|
|
62
|
+
// profile's node_modules without a TTY.
|
|
63
|
+
const APP_PNPM_CANDIDATES = [
|
|
64
|
+
'/Applications/DeepSeek Harness.app/Contents/Resources/runtime/primary-runtime/dependencies/pnpm/bin/pnpm.mjs',
|
|
65
|
+
'/Applications/DeepSeek Harness.app/Contents/Resources/runtime/pnpm/bin/pnpm.cjs',
|
|
66
|
+
]
|
|
67
|
+
const APP_PNPM = APP_PNPM_CANDIDATES.find((path) => existsSync(path))
|
|
59
68
|
|
|
60
69
|
/**
|
|
61
70
|
* The protocol surface dsh-subagent-codex/src/wire.ts actually uses.
|
|
@@ -129,7 +138,11 @@ function readOverride(text) {
|
|
|
129
138
|
function writeOverride(text, version, key = OVERRIDE_KEY) {
|
|
130
139
|
const line = ` ${key}: "${version}"`
|
|
131
140
|
if (OVERRIDE_RE.test(text)) {
|
|
132
|
-
|
|
141
|
+
// Keep the two-space indent: the replacement line lands inside the
|
|
142
|
+
// `overrides:` mapping. Dropping it (a previous bug) turned the key into a
|
|
143
|
+
// top-level entry, so pnpm silently ignored the override and installed the
|
|
144
|
+
// dependency's own pin instead.
|
|
145
|
+
return text.replace(OVERRIDE_RE, line)
|
|
133
146
|
}
|
|
134
147
|
if (/^overrides:/m.test(text)) {
|
|
135
148
|
return text.replace(/^overrides:\s*$/m, `overrides:\n${line}`)
|
|
@@ -399,12 +412,15 @@ function install(profile, runner) {
|
|
|
399
412
|
env: { ...process.env, CI: 'true' },
|
|
400
413
|
})
|
|
401
414
|
if (result.status !== 0) {
|
|
402
|
-
|
|
415
|
+
// spawnSync reports a failure to start (missing executable, EACCES) as a
|
|
416
|
+
// null status plus `error`; without it the message would be empty.
|
|
417
|
+
const spawnFailure = result.error === undefined ? '' : `${result.error.message}\n`
|
|
418
|
+
const detail = `${spawnFailure}${result.stdout ?? ''}\n${result.stderr ?? ''}`
|
|
403
419
|
.split('\n')
|
|
404
420
|
.filter((line) => line.trim() !== '' && !line.includes('NPM_TOKEN'))
|
|
405
421
|
.slice(-25)
|
|
406
422
|
.join('\n')
|
|
407
|
-
throw new Error(`pnpm install failed (${result.status}):\n${detail}`)
|
|
423
|
+
throw new Error(`pnpm install failed (${String(result.status)}):\n${detail}`)
|
|
408
424
|
}
|
|
409
425
|
}
|
|
410
426
|
|
|
@@ -417,7 +433,7 @@ function install(profile, runner) {
|
|
|
417
433
|
*/
|
|
418
434
|
function resolvePnpm(explicit) {
|
|
419
435
|
if (explicit !== undefined) return [explicit]
|
|
420
|
-
if (
|
|
436
|
+
if (APP_PNPM !== undefined) return [process.execPath, APP_PNPM]
|
|
421
437
|
return ['pnpm']
|
|
422
438
|
}
|
|
423
439
|
|