create-principles-disciple 1.134.3 → 1.134.4
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/console/dist/server/feedback/ingest-adapter.js +1 -1
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +4 -0
- package/dist/i18n.js.map +1 -1
- package/dist/installer.d.ts +13 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +182 -16
- package/dist/installer.js.map +1 -1
- package/package.json +1 -1
- package/release-manager/dist/i18n.d.ts.map +1 -1
- package/release-manager/dist/i18n.js +4 -0
- package/release-manager/dist/i18n.js.map +1 -1
- package/release-manager/dist/installer.d.ts +13 -0
- package/release-manager/dist/installer.d.ts.map +1 -1
- package/release-manager/dist/installer.js +182 -16
- package/release-manager/dist/installer.js.map +1 -1
- package/release-manager/package.json +1 -1
package/dist/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAqPnC,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEhD;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D"}
|
package/dist/i18n.js
CHANGED
|
@@ -115,6 +115,8 @@ const translations = {
|
|
|
115
115
|
rollback_fresh_clean_failed: 'The install failed before activation, and some partially deployed files could NOT be removed: {dirs}. They are not activated (no install manifest), but should be removed manually.',
|
|
116
116
|
next_fresh_cleaned: 'Fix the error above and re-run the installer.',
|
|
117
117
|
next_fresh_clean_failed: 'Remove the listed directories manually (they are not activated), then re-run the installer.',
|
|
118
|
+
// PRI-697 review P1: global pd shim files this run created survived the rollback.
|
|
119
|
+
rollback_global_shim_residue: 'Global pd shim files this run created could not be removed ({files}) — remove them manually.',
|
|
118
120
|
},
|
|
119
121
|
zh: {
|
|
120
122
|
select_language: '选择语言',
|
|
@@ -232,6 +234,8 @@ const translations = {
|
|
|
232
234
|
rollback_fresh_clean_failed: '安装未激活即失败,且部分已部署文件无法移除:{dirs}。它们未被激活(无安装清单),但应手动移除。',
|
|
233
235
|
next_fresh_cleaned: '请修复上方错误后重新运行安装器。',
|
|
234
236
|
next_fresh_clean_failed: '请手动移除上述目录(它们未被激活),然后重新运行安装器。',
|
|
237
|
+
// PRI-697 评审 P1:本次安装创建的全局 pd shim 文件在回滚后仍残留。
|
|
238
|
+
rollback_global_shim_residue: '本次安装创建的全局 pd shim 文件未能移除({files})——请手动移除。',
|
|
235
239
|
},
|
|
236
240
|
};
|
|
237
241
|
let currentLanguage = 'zh';
|
package/dist/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/installer.d.ts
CHANGED
|
@@ -209,6 +209,19 @@ export declare function ensureBundledPdCliResolution(pdCliRoot: string): void;
|
|
|
209
209
|
export declare function runLegacyRuleContractPreflight(pluginDir: string, workspaceDir: string, runScan?: LegacyRulePreflightRunner): Promise<LegacyRulePreflightOutcome>;
|
|
210
210
|
export declare function checkBuiltPlugin(pluginDir: string): Promise<void>;
|
|
211
211
|
export declare function installPluginToStaging(pluginDir: string, language: SkillLanguage): Promise<void>;
|
|
212
|
+
/** Outcome of one global-shim discovery/install attempt (PRI-697 review P1). */
|
|
213
|
+
export interface GlobalPdShimResult {
|
|
214
|
+
/** true when PD-owned shim files are in place in the npm global bin dir. */
|
|
215
|
+
installed: boolean;
|
|
216
|
+
/** Shim files this run CREATED (absent before) — the rollback set. */
|
|
217
|
+
createdPaths: string[];
|
|
218
|
+
/** PD-owned shim files that already existed and were overwritten in place. */
|
|
219
|
+
replacedPaths: string[];
|
|
220
|
+
/** Foreign-owned `pd` entries found — never written, never rolled back. */
|
|
221
|
+
skippedForeignPaths: string[];
|
|
222
|
+
}
|
|
223
|
+
export declare function installGlobalPdShim(): GlobalPdShimResult | boolean;
|
|
224
|
+
export declare function tryUpgradePdCliFromNpm(installedPdCliDir: string): void;
|
|
212
225
|
/**
|
|
213
226
|
* PRI-711: materialize node_modules links for the INSTALLED codex-adapter so
|
|
214
227
|
* its declared `file:../<component>` dependencies resolve under ESM realpath
|
package/dist/installer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/installer.js
CHANGED
|
@@ -727,6 +727,33 @@ function cleanupBackup(backupDir, runtimeBackupDir) {
|
|
|
727
727
|
}
|
|
728
728
|
}
|
|
729
729
|
}
|
|
730
|
+
/**
|
|
731
|
+
* PRI-697 review P1: undo the global `pd` shim side effect when the
|
|
732
|
+
* install transaction fails. Exactly the files THIS run created are
|
|
733
|
+
* removed; PD-owned shims that already existed before the run (a
|
|
734
|
+
* pre-existing install's global command) are left in place — rolling back
|
|
735
|
+
* to the pre-run state, not to "no PD anywhere". Best-effort with every
|
|
736
|
+
* residue named (rc-9); never throws.
|
|
737
|
+
*/
|
|
738
|
+
function rollbackGlobalPdShim(record) {
|
|
739
|
+
const removed = [];
|
|
740
|
+
const failed = [];
|
|
741
|
+
for (const shimPath of record.createdPaths) {
|
|
742
|
+
if (!existsSync(shimPath))
|
|
743
|
+
continue;
|
|
744
|
+
try {
|
|
745
|
+
rmSync(shimPath, { force: true });
|
|
746
|
+
removed.push(shimPath);
|
|
747
|
+
}
|
|
748
|
+
catch (e) {
|
|
749
|
+
failed.push(`${shimPath} (${e instanceof Error ? e.message : String(e)})`);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
if (failed.length > 0) {
|
|
753
|
+
logger.warn(`Failed to remove global pd shim files created by this run: ${failed.join(', ')} — remove them manually.`);
|
|
754
|
+
}
|
|
755
|
+
return { removed, failed };
|
|
756
|
+
}
|
|
730
757
|
/**
|
|
731
758
|
* Decide how to handle a running gateway.
|
|
732
759
|
* - --stop-gateway flag → 'stop' (auto-stop, no prompt, even in interactive).
|
|
@@ -1094,8 +1121,59 @@ function getNpmGlobalBinDir() {
|
|
|
1094
1121
|
return null;
|
|
1095
1122
|
}
|
|
1096
1123
|
}
|
|
1097
|
-
|
|
1098
|
-
|
|
1124
|
+
/** Fixed filename whitelist for global-shim targets (no caller input). */
|
|
1125
|
+
const GLOBAL_PD_SHIM_BASENAMES = isWindows() ? ['pd.cmd', 'pd.ps1'] : ['pd'];
|
|
1126
|
+
/** Resolve a whitelisted shim basename under the npm global bin dir. */
|
|
1127
|
+
function globalShimPath(globalBin, basename) {
|
|
1128
|
+
if (!GLOBAL_PD_SHIM_BASENAMES.includes(basename)) {
|
|
1129
|
+
throw new Error(`Refusing to touch non-whitelisted global shim name: ${basename}`);
|
|
1130
|
+
}
|
|
1131
|
+
const target = path.resolve(globalBin, basename);
|
|
1132
|
+
if (path.dirname(target) !== path.resolve(globalBin)) {
|
|
1133
|
+
throw new Error(`Global shim path escaped the npm global bin dir: ${target}`);
|
|
1134
|
+
}
|
|
1135
|
+
return target;
|
|
1136
|
+
}
|
|
1137
|
+
/**
|
|
1138
|
+
* Global `pd` shim ownership, mirroring the uninstaller's isPdOwnedShim
|
|
1139
|
+
* discipline: a shim whose content points at the PD install dir belongs to
|
|
1140
|
+
* us and may be updated in place; anything else (another tool's `pd`, a
|
|
1141
|
+
* broken/unreadable entry) is foreign — refuse to overwrite it and surface
|
|
1142
|
+
* a warning + next action instead (review P1: the pre-PRI-697 code
|
|
1143
|
+
* writeFileSync'd blindly, but that path was only reachable via the
|
|
1144
|
+
* explicit legacy-recovery env; the npm channel makes it default, so the
|
|
1145
|
+
* write now needs the same ownership discipline the uninstaller already
|
|
1146
|
+
* has).
|
|
1147
|
+
*/
|
|
1148
|
+
function classifyGlobalPdShim(globalBin, installedBinDir) {
|
|
1149
|
+
const foreignPaths = [];
|
|
1150
|
+
let existingPdOwned = false;
|
|
1151
|
+
for (const shim of GLOBAL_PD_SHIM_BASENAMES) {
|
|
1152
|
+
const shimPath = globalShimPath(globalBin, shim);
|
|
1153
|
+
if (!existsSync(shimPath))
|
|
1154
|
+
continue;
|
|
1155
|
+
let content;
|
|
1156
|
+
try {
|
|
1157
|
+
content = readFileSync(shimPath, 'utf-8');
|
|
1158
|
+
}
|
|
1159
|
+
catch {
|
|
1160
|
+
foreignPaths.push(shimPath); // unreadable → do not touch
|
|
1161
|
+
continue;
|
|
1162
|
+
}
|
|
1163
|
+
if (content.includes(installedBinDir))
|
|
1164
|
+
existingPdOwned = true;
|
|
1165
|
+
else
|
|
1166
|
+
foreignPaths.push(shimPath);
|
|
1167
|
+
}
|
|
1168
|
+
return { foreignPaths, existingPdOwned };
|
|
1169
|
+
}
|
|
1170
|
+
export function installGlobalPdShim() {
|
|
1171
|
+
// Global-shim discovery consults the npm global root, so it belongs to
|
|
1172
|
+
// the npm-distributed payload shape (isNpmDependencyResolutionEnabled
|
|
1173
|
+
// documents "global root discovery" as its concern). Gating on the
|
|
1174
|
+
// legacy env var instead fired this skip — with a self-contained-mode
|
|
1175
|
+
// message — inside standard npm-channel installs (PRI-697).
|
|
1176
|
+
if (!isNpmDependencyResolutionEnabled()) {
|
|
1099
1177
|
logger.info('Skipping npm global shim discovery for the self-contained release asset.');
|
|
1100
1178
|
return false;
|
|
1101
1179
|
}
|
|
@@ -1110,31 +1188,80 @@ function installGlobalPdShim() {
|
|
|
1110
1188
|
const globalBin = getNpmGlobalBinDir();
|
|
1111
1189
|
if (!globalBin)
|
|
1112
1190
|
return false;
|
|
1191
|
+
const installedBinDir = getInstalledBinDir();
|
|
1192
|
+
// Ownership gate before ANY write: foreign `pd` entries are never
|
|
1193
|
+
// overwritten (uninstaller's isPdOwnedShim discipline, write side).
|
|
1194
|
+
const { foreignPaths, existingPdOwned } = classifyGlobalPdShim(globalBin, installedBinDir);
|
|
1195
|
+
if (foreignPaths.length > 0) {
|
|
1196
|
+
const foreignList = foreignPaths.join(', ');
|
|
1197
|
+
logger.warn(`A non-PD "pd" command already exists in the npm global bin dir (${foreignList}) — not overwriting it.`);
|
|
1198
|
+
logger.warn(`The bundled PD CLI stays available at "${path.join(installedBinDir, isWindows() ? 'pd.cmd' : 'pd')}". Remove the foreign "pd" yourself if you want the global name.`);
|
|
1199
|
+
if (existingPdOwned) {
|
|
1200
|
+
logger.warn('PD-owned shim files in the same dir were left untouched to keep the existing installation consistent.');
|
|
1201
|
+
}
|
|
1202
|
+
return { installed: false, createdPaths: [], replacedPaths: [], skippedForeignPaths: foreignPaths };
|
|
1203
|
+
}
|
|
1204
|
+
// Rollback bookkeeping: which shim targets already existed (PD-owned)?
|
|
1205
|
+
// preExisting drives the replaced-list and the partial-failure residue
|
|
1206
|
+
// computation below.
|
|
1207
|
+
const preExisting = new Set(GLOBAL_PD_SHIM_BASENAMES
|
|
1208
|
+
.map((shim) => globalShimPath(globalBin, shim))
|
|
1209
|
+
.filter((shimPath) => existsSync(shimPath)));
|
|
1210
|
+
const createdPaths = [];
|
|
1211
|
+
const replacedPaths = [...preExisting];
|
|
1113
1212
|
try {
|
|
1114
1213
|
mkdirSync(globalBin, { recursive: true });
|
|
1115
|
-
const installedBinDir = getInstalledBinDir();
|
|
1116
1214
|
if (isWindows()) {
|
|
1117
1215
|
const pluginCmd = path.join(installedBinDir, 'pd.cmd');
|
|
1118
|
-
|
|
1216
|
+
const globalCmdPath = globalShimPath(globalBin, 'pd.cmd');
|
|
1217
|
+
writeFileSync(globalCmdPath, `@echo off\r\ncall "${pluginCmd.replace(/"/g, '""')}" %*\r\n`, 'utf-8');
|
|
1119
1218
|
const pluginPs = path.join(installedBinDir, 'pd.ps1');
|
|
1120
|
-
|
|
1219
|
+
const globalPsPath = globalShimPath(globalBin, 'pd.ps1');
|
|
1220
|
+
writeFileSync(globalPsPath, `$shim = "${pluginPs.replace(/`/g, '``').replace(/"/g, '`"')}"\r\n& $shim @args\r\nexit $LASTEXITCODE\r\n`, 'utf-8');
|
|
1121
1221
|
}
|
|
1122
1222
|
else {
|
|
1123
1223
|
const pluginSh = path.join(installedBinDir, 'pd');
|
|
1124
|
-
const globalSh =
|
|
1224
|
+
const globalSh = globalShimPath(globalBin, 'pd');
|
|
1125
1225
|
writeFileSync(globalSh, `#!/usr/bin/env sh\nexec "${pluginSh.replace(/"/g, '\\"')}" "$@"\n`, 'utf-8');
|
|
1126
1226
|
chmodSync(globalSh, 0o755);
|
|
1127
1227
|
}
|
|
1128
|
-
|
|
1228
|
+
// PRI-697 review P1: the success path MUST record which targets are new
|
|
1229
|
+
// (created) vs pre-existing PD-owned (replaced) — rollbackGlobalPdShim
|
|
1230
|
+
// removes exactly createdPaths when a LATER install step fails. The
|
|
1231
|
+
// pre-fix success path left createdPaths empty, silently no-op'ing the
|
|
1232
|
+
// rollback while the failure message claimed a clean cleanup.
|
|
1233
|
+
for (const shim of GLOBAL_PD_SHIM_BASENAMES) {
|
|
1234
|
+
const shimPath = globalShimPath(globalBin, shim);
|
|
1235
|
+
if (!preExisting.has(shimPath))
|
|
1236
|
+
createdPaths.push(shimPath);
|
|
1237
|
+
}
|
|
1238
|
+
return { installed: true, createdPaths, replacedPaths, skippedForeignPaths: [] };
|
|
1129
1239
|
}
|
|
1130
1240
|
catch (e) {
|
|
1131
1241
|
logger.warn(`Global pd shim installation failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1242
|
+
// Partial writes may have landed before the failure — hand the raw
|
|
1243
|
+
// targets to the caller as createdPaths so the rollback can remove
|
|
1244
|
+
// exactly this run's residue.
|
|
1245
|
+
const landed = GLOBAL_PD_SHIM_BASENAMES
|
|
1246
|
+
.map((shim) => globalShimPath(globalBin, shim))
|
|
1247
|
+
.filter((shimPath) => existsSync(shimPath) && !preExisting.has(shimPath));
|
|
1248
|
+
return { installed: false, createdPaths: landed, replacedPaths: [], skippedForeignPaths: [] };
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
export function tryUpgradePdCliFromNpm(installedPdCliDir) {
|
|
1252
|
+
// The npm upgrade stays gated on the legacy env var (PRI-697 keeps the
|
|
1253
|
+
// behavior): a registry pd-cli version can import exports the bundled
|
|
1254
|
+
// core no longer has, so upgrading is only for the explicit recovery
|
|
1255
|
+
// path where the whole shape is registry-resolved anyway. The skip
|
|
1256
|
+
// message reports the ACTUAL payload mode — it used to claim
|
|
1257
|
+
// "self-contained release asset" even in npm-distributed installs.
|
|
1136
1258
|
if (!legacyNpmInstallEnabled()) {
|
|
1137
|
-
|
|
1259
|
+
if (activePayloadMode === 'npm-distributed') {
|
|
1260
|
+
logger.info('Skipping npm pd-cli upgrade (bundled pd-cli is authoritative; set PD_ALLOW_LEGACY_NPM_INSTALL to enable registry upgrades).');
|
|
1261
|
+
}
|
|
1262
|
+
else {
|
|
1263
|
+
logger.info('Skipping npm pd-cli upgrade for the self-contained release asset.');
|
|
1264
|
+
}
|
|
1138
1265
|
return;
|
|
1139
1266
|
}
|
|
1140
1267
|
// Allow skipping the npm upgrade in smoke tests / offline environments.
|
|
@@ -1219,6 +1346,16 @@ function tryUpgradePdCliFromNpm(installedPdCliDir) {
|
|
|
1219
1346
|
logger.info(`pd-cli npm upgrade skipped (${msg}). Bundled version is functional.`);
|
|
1220
1347
|
}
|
|
1221
1348
|
}
|
|
1349
|
+
/**
|
|
1350
|
+
* Deploy the bundled pd-cli into the runtime + local bin shims + (npm-
|
|
1351
|
+
* distributed payload only) the global `pd` shim. Returns the global-shim
|
|
1352
|
+
* transaction bookkeeping so install() can roll the global side effect back
|
|
1353
|
+
* on failure (PRI-697 review P1): globalShim is null when no global write
|
|
1354
|
+
* was attempted (skip gates / payload mode), otherwise it records which
|
|
1355
|
+
* shim files this run CREATED (rollback removes them) vs which PD-owned
|
|
1356
|
+
* files it replaced in place (rollback keeps them — a pre-existing PD
|
|
1357
|
+
* install keeps its global command).
|
|
1358
|
+
*/
|
|
1222
1359
|
function syncPdCli(pluginDir) {
|
|
1223
1360
|
const pdCliSourceDir = path.join(pluginDir, 'pd-cli');
|
|
1224
1361
|
const distDir = path.join(pdCliSourceDir, 'dist');
|
|
@@ -1335,7 +1472,13 @@ function syncPdCli(pluginDir) {
|
|
|
1335
1472
|
writeFileSync(target, shShim, 'utf-8');
|
|
1336
1473
|
chmodSync(target, 0o755);
|
|
1337
1474
|
}
|
|
1338
|
-
|
|
1475
|
+
// PRI-697 review P1: propagate the structured global-shim outcome so the
|
|
1476
|
+
// install transaction can roll the global side effect back on failure.
|
|
1477
|
+
// Plain false (skip gates: payload mode / smoke env) carries no residue.
|
|
1478
|
+
const shimResult = installGlobalPdShim();
|
|
1479
|
+
if (typeof shimResult === 'boolean')
|
|
1480
|
+
return { ok: shimResult, globalShim: null };
|
|
1481
|
+
return { ok: shimResult.installed, globalShim: shimResult };
|
|
1339
1482
|
}
|
|
1340
1483
|
function verifyPdCliShim() {
|
|
1341
1484
|
const localShim = path.join(getInstalledBinDir(), isWindows() ? 'pd.cmd' : 'pd');
|
|
@@ -2276,6 +2419,10 @@ transaction) {
|
|
|
2276
2419
|
// the backup step). With no pre-existing install (no backup), a failure
|
|
2277
2420
|
// after this point must clean up instead of claiming "not modified".
|
|
2278
2421
|
let mutationStarted = false;
|
|
2422
|
+
// PRI-697 review P1: global pd shim side effect, recorded when the
|
|
2423
|
+
// npm-distributed payload wrote PD-owned shims into the npm global bin
|
|
2424
|
+
// dir. Null until syncPdCli runs (or when no global write was attempted).
|
|
2425
|
+
let globalShimRecord = null;
|
|
2279
2426
|
const killConsoleChild = () => {
|
|
2280
2427
|
if (consoleProcess) {
|
|
2281
2428
|
try {
|
|
@@ -2414,7 +2561,11 @@ transaction) {
|
|
|
2414
2561
|
stepIndex++;
|
|
2415
2562
|
if (spinner)
|
|
2416
2563
|
updateProgress(spinner, stepIndex, 'Installing pd CLI...');
|
|
2417
|
-
|
|
2564
|
+
// PRI-697 review P1: keep the global-shim bookkeeping — a LATER failure
|
|
2565
|
+
// must undo exactly the global side effect this run caused.
|
|
2566
|
+
const pdCliSync = syncPdCli(pluginDir);
|
|
2567
|
+
if (pdCliSync.globalShim !== null)
|
|
2568
|
+
globalShimRecord = pdCliSync.globalShim;
|
|
2418
2569
|
await installPdCliDependencies();
|
|
2419
2570
|
stepIndex++;
|
|
2420
2571
|
if (spinner)
|
|
@@ -2703,6 +2854,17 @@ transaction) {
|
|
|
2703
2854
|
const freshCleanup = !hasBackup && mutationStarted
|
|
2704
2855
|
? cleanUnactivatedFreshInstall()
|
|
2705
2856
|
: undefined;
|
|
2857
|
+
// PRI-697 review P1: the global pd shim is a side effect OUTSIDE the
|
|
2858
|
+
// runtime/extension trees both cleanup paths above address. Whatever
|
|
2859
|
+
// the backup state, files THIS run created in the npm global bin dir
|
|
2860
|
+
// are this run's residue — remove them (rollbackGlobalPdShim keeps
|
|
2861
|
+
// PD-owned shims that pre-dated the run, so a rolled-back upgrade of a
|
|
2862
|
+
// previously-shimmed install keeps its old global command; the shim
|
|
2863
|
+
// content targets the stable installed bin dir, which the restored
|
|
2864
|
+
// backup re-populates).
|
|
2865
|
+
const globalShimRollback = globalShimRecord !== null
|
|
2866
|
+
? rollbackGlobalPdShim(globalShimRecord)
|
|
2867
|
+
: undefined;
|
|
2706
2868
|
// R2 (review): after template/config steps have run (console verified →
|
|
2707
2869
|
// templates copied → config generated), the WORKSPACE also holds this
|
|
2708
2870
|
// run's files — but the workspace is the operator's own directory and may
|
|
@@ -2721,7 +2883,11 @@ transaction) {
|
|
|
2721
2883
|
.replace('{restoreError}', restoreResult.error ?? '')
|
|
2722
2884
|
.replace('{extDir}', extDir)
|
|
2723
2885
|
.replace('{backupDir}', backupDir ?? runtimeBackupDir ?? '');
|
|
2724
|
-
const rollbackSuffixFinal = rollbackSuffix
|
|
2886
|
+
const rollbackSuffixFinal = rollbackSuffix
|
|
2887
|
+
+ (workspaceTouched && freshCleanup && freshCleanup.failed.length === 0 ? ` ${t('rollback_fresh_workspace_kept')}` : '')
|
|
2888
|
+
+ (globalShimRollback !== undefined && globalShimRollback.failed.length > 0
|
|
2889
|
+
? ` ${t('rollback_global_shim_residue').replace('{files}', globalShimRollback.failed.join(', '))}`
|
|
2890
|
+
: '');
|
|
2725
2891
|
const rollbackNextAction = !hasBackup
|
|
2726
2892
|
? freshCleanup
|
|
2727
2893
|
? (freshCleanup.failed.length === 0 ? t('next_fresh_cleaned') : t('next_fresh_clean_failed'))
|
|
@@ -2736,7 +2902,7 @@ transaction) {
|
|
|
2736
2902
|
.replace('{errorMsg}', errorMsg);
|
|
2737
2903
|
const rollbackReason = !hasBackup
|
|
2738
2904
|
? freshCleanup
|
|
2739
|
-
? (freshCleanup.failed.length === 0
|
|
2905
|
+
? (freshCleanup.failed.length === 0 && (globalShimRollback === undefined || globalShimRollback.failed.length === 0)
|
|
2740
2906
|
? `install_failed_unactivated_cleaned: ${errorMsg}`
|
|
2741
2907
|
: `install_failed_unactivated_residue: ${errorMsg}`)
|
|
2742
2908
|
: (isLockError ? `install_aborted_lock: ${errorMsg}` : `install_failed_before_mutation: ${errorMsg}`)
|