specrails-core 5.0.0 → 5.1.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.
- package/README.md +103 -310
- package/bin/specrails-core.mjs +3 -1
- package/dist/installer/cli.js +4 -0
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/framework.js +64 -49
- package/dist/installer/commands/framework.js.map +1 -1
- package/dist/installer/commands/init.js +108 -66
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +86 -74
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/commands/v5-migration.js +14 -0
- package/dist/installer/commands/v5-migration.js.map +1 -1
- package/dist/installer/phases/framework-lifecycle.js +2 -0
- package/dist/installer/phases/framework-lifecycle.js.map +1 -1
- package/dist/installer/phases/scaffold.js +198 -258
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/dist/installer/runtime/pipeline-state.js +801 -0
- package/dist/installer/runtime/pipeline-state.js.map +1 -0
- package/dist/installer/util/exec.js +6 -1
- package/dist/installer/util/exec.js.map +1 -1
- package/dist/installer/util/fs.js +141 -2
- package/dist/installer/util/fs.js.map +1 -1
- package/dist/installer/util/install-transaction.js +266 -0
- package/dist/installer/util/install-transaction.js.map +1 -0
- package/dist/installer/util/registry.js +20 -0
- package/dist/installer/util/registry.js.map +1 -1
- package/docs/ci-cd.md +57 -0
- package/docs/user-docs/codex-vs-claude-code.md +23 -151
- package/docs/user-docs/core-updates.md +70 -0
- package/docs/user-docs/provider-pipelines.md +53 -0
- package/integration-contract.json +179 -66
- package/package.json +5 -2
- package/templates/agents/sr-developer.md +9 -11
- package/templates/agents/sr-reviewer.md +26 -33
- package/templates/codex-skills/batch-implement/SKILL.md +58 -244
- package/templates/codex-skills/implement/SKILL.md +136 -338
- package/templates/codex-skills/rails/sr-architect/SKILL.md +7 -0
- package/templates/codex-skills/rails/sr-developer/SKILL.md +13 -0
- package/templates/codex-skills/rails/sr-reviewer/SKILL.md +39 -5
- package/templates/codex-skills/retry/SKILL.md +37 -117
- package/templates/commands/specrails/batch-implement.md +16 -288
- package/templates/commands/specrails/implement.md +62 -1057
- package/templates/commands/specrails/retry.md +22 -314
- package/templates/gemini-commands/batch-implement.toml +28 -40
- package/templates/gemini-commands/implement.toml +55 -114
- package/templates/gemini-commands/retry.toml +21 -0
- package/templates/kimi/specrails/run-skill.mjs +51 -2
- package/templates/runtime/provider-pipeline.md +55 -0
|
@@ -4,9 +4,9 @@ import { InstallerError, PrerequisiteError } from '../util/errors.js';
|
|
|
4
4
|
import { info, ok, step, warn } from '../util/logger.js';
|
|
5
5
|
import { copyDir, isDir, pathExists, readTextFile } from '../util/fs.js';
|
|
6
6
|
import { loadInstallConfig, resolveConfigPath } from '../phases/install-config.js';
|
|
7
|
-
import { buildManifest, writeManifestFiles } from '../phases/manifest.js';
|
|
8
7
|
import { derivedPaths, detectAvailability, resolveProvider } from '../phases/provider-detect.js';
|
|
9
|
-
import { frameworkRoot, resolveArtifacts } from '../util/registry.js';
|
|
8
|
+
import { frameworkRoot, resolveArtifacts, recordSuccessfulInstall } from '../util/registry.js';
|
|
9
|
+
import { assertNoCoreDowngrade, currentFrameworkVersion, withFrameworkLifecycleLock, withInstallRollback } from '../util/install-transaction.js';
|
|
10
10
|
import { migratePreV5Install } from './v5-migration.js';
|
|
11
11
|
import { ensureFramework, installOpenSpecProject, reassembleWorkspaceProviders, snapshotWorkspaceProviderSelections, warnUnknownSelectedAgents, } from './init.js';
|
|
12
12
|
const VALID_ONLY = new Set([
|
|
@@ -28,9 +28,8 @@ export async function runUpdate(flags) {
|
|
|
28
28
|
// workspace (desktop's registry entry already exists, so even `allocate:false`
|
|
29
29
|
// returns it). All Specrails artifacts (the specrails-version marker, manifest,
|
|
30
30
|
// install-config) live under `artifactRoot`.
|
|
31
|
-
const relocate = flags.relocate === true || process.env.SPECRAILS_RELOCATE === '1';
|
|
32
31
|
const { artifactRoot, codeRoot } = resolveArtifacts(repoRoot, {
|
|
33
|
-
allocate:
|
|
32
|
+
allocate: false,
|
|
34
33
|
allocator: 'core-standalone',
|
|
35
34
|
home: process.env.SPECRAILS_REGISTRY_HOME,
|
|
36
35
|
coreVersion: currentVersion,
|
|
@@ -45,8 +44,9 @@ export async function runUpdate(flags) {
|
|
|
45
44
|
if (!pathExists(marker)) {
|
|
46
45
|
throw new PrerequisiteError(`No existing specrails install detected at ${repoRoot}. Run \`npx specrails-core init\` first.`);
|
|
47
46
|
}
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
let previousVersion = readExistingVersion(artifactRoot);
|
|
48
|
+
assertNoCoreDowngrade(previousVersion, currentVersion);
|
|
49
|
+
assertNoCoreDowngrade(currentFrameworkVersion(frameworkRoot(process.env.SPECRAILS_REGISTRY_HOME)), currentVersion);
|
|
50
50
|
// Provider can be FORCED via --provider (e.g. specrails-desktop updating one
|
|
51
51
|
// provider on a multi-provider workspace, where auto-detection would always
|
|
52
52
|
// resolve `.claude` first and never reach codex/gemini/kimi). Absent ⇒ auto-detect
|
|
@@ -68,15 +68,6 @@ export async function runUpdate(flags) {
|
|
|
68
68
|
}
|
|
69
69
|
const { providerDir } = derivedPaths(provider);
|
|
70
70
|
ok(`Detected provider: ${provider} (${providerDir})`);
|
|
71
|
-
if (artifactRoot !== codeRoot) {
|
|
72
|
-
resolveArtifacts(repoRoot, {
|
|
73
|
-
allocate: true,
|
|
74
|
-
allocator: 'core-standalone',
|
|
75
|
-
home: process.env.SPECRAILS_REGISTRY_HOME,
|
|
76
|
-
providers: [provider],
|
|
77
|
-
coreVersion: currentVersion,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
71
|
// ─── Resolve --only scope ────────────────────────────────────────
|
|
81
72
|
const scope = resolveScope(flags.only);
|
|
82
73
|
if (scope === 'web-manager') {
|
|
@@ -95,66 +86,87 @@ export async function runUpdate(flags) {
|
|
|
95
86
|
`for ${previousVersion ?? '(unknown)'} → ${currentVersion}.`);
|
|
96
87
|
return { repoRoot, previousVersion, currentVersion, provider, dryRun, scope };
|
|
97
88
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
89
|
+
const fwDir = frameworkRoot(process.env.SPECRAILS_REGISTRY_HOME);
|
|
90
|
+
return withFrameworkLifecycleLock(fwDir, async () => {
|
|
91
|
+
previousVersion = readExistingVersion(artifactRoot);
|
|
92
|
+
if (!pathExists(marker))
|
|
93
|
+
throw new PrerequisiteError('No existing specrails install detected at ' + repoRoot + '. Run init first.');
|
|
94
|
+
assertNoCoreDowngrade(previousVersion, currentVersion);
|
|
95
|
+
assertNoCoreDowngrade(currentFrameworkVersion(fwDir), currentVersion);
|
|
96
|
+
const previousSelections = snapshotWorkspaceProviderSelections(artifactRoot);
|
|
97
|
+
const surfaces = [
|
|
98
|
+
...['.claude', '.codex', '.gemini', '.kimi-code', 'AGENTS.md', 'GEMINI.md', '.gitignore'].map((name) => path.join(artifactRoot, name)),
|
|
99
|
+
...['specrails-version', 'specrails-manifest.json', 'setup-templates', 'runtime'].map((name) => path.join(artifactRoot, '.specrails', name)),
|
|
100
|
+
path.join(fwDir, 'current'),
|
|
101
|
+
// Contents deliberately NOT snapshotted: `installFramework` rebuilds a
|
|
102
|
+
// version tree whenever its content stamp does not match and stages
|
|
103
|
+
// through a temp dir, so copying the whole framework store per install
|
|
104
|
+
// insured a risk that is already covered. A version dir this install
|
|
105
|
+
// CREATED is still removed on rollback.
|
|
106
|
+
{ path: path.join(fwDir, currentVersion), snapshotContents: false },
|
|
107
|
+
];
|
|
108
|
+
return withInstallRollback(surfaces, async () => {
|
|
109
|
+
// ─── v5 migration: remove artefacts a pre-v5 install left behind ─────
|
|
110
|
+
// Runs BEFORE the re-scaffold so obsolete agents/commands/staging are gone
|
|
111
|
+
// before the fresh v5 template set is placed. Reserved paths (profiles, custom-*)
|
|
112
|
+
// and files the installer never owned are left untouched.
|
|
113
|
+
if (scope === 'all' || scope === 'core') {
|
|
114
|
+
for (const installedProvider of new Set([provider, ...Object.keys(previousSelections)])) {
|
|
115
|
+
migratePreV5Install({ artifactRoot, providerDir: derivedPaths(installedProvider).providerDir });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
step(`Update: refreshing scaffold [scope=${scope}] (${previousVersion ?? '?'} → ${currentVersion})`);
|
|
119
|
+
if (scope === 'all' || scope === 'core') {
|
|
120
|
+
// Bundled-framework update: re-materialize the framework to the (possibly
|
|
121
|
+
// new) version dir, atomically swap `current`, then RE-ASSEMBLE the
|
|
122
|
+
// workspace (re-link the static subtrees at the new `current` + re-seed the
|
|
123
|
+
// project layer). `assembleProjectWorkspace` rewrites the manifest itself.
|
|
124
|
+
ensureFramework({
|
|
125
|
+
scriptDir,
|
|
126
|
+
frameworkDir: fwDir,
|
|
127
|
+
provider,
|
|
128
|
+
providerDir,
|
|
129
|
+
version: currentVersion,
|
|
130
|
+
selectedAgents,
|
|
131
|
+
requiredProviders: Object.keys(previousSelections),
|
|
132
|
+
});
|
|
133
|
+
reassembleWorkspaceProviders({
|
|
134
|
+
workspace: artifactRoot,
|
|
135
|
+
frameworkDir: fwDir,
|
|
136
|
+
version: currentVersion,
|
|
137
|
+
codeRoot,
|
|
138
|
+
scriptDir,
|
|
139
|
+
selectedProvider: provider,
|
|
140
|
+
selectedAgents: config?.provider === provider
|
|
141
|
+
? selectedAgents
|
|
142
|
+
: previousSelections[provider] ?? selectedAgents,
|
|
143
|
+
previousSelections,
|
|
144
|
+
// In-repo updates COPY real files; relocated workspaces symlink.
|
|
145
|
+
copyStatics: artifactRoot === codeRoot,
|
|
146
|
+
});
|
|
147
|
+
if (provider === 'kimi' || provider === 'gemini') {
|
|
148
|
+
await installOpenSpecProject(codeRoot, provider, artifactRoot);
|
|
149
|
+
}
|
|
150
|
+
ok(`Re-linked ${providerDir}/ at framework ${currentVersion} + rewrote manifest`);
|
|
151
|
+
}
|
|
152
|
+
else if (scope === 'rules' || scope === 'agents') {
|
|
153
|
+
rescaffoldComponent(scope, { scriptDir, artifactRoot });
|
|
154
|
+
info(`Refreshed ${scope}; complete framework remains ${previousVersion ?? 'unknown'}. Run a full update to advance its version.`);
|
|
155
|
+
}
|
|
156
|
+
const installedVersion = readExistingVersion(artifactRoot);
|
|
157
|
+
if ((scope === 'all' || scope === 'core') && installedVersion !== currentVersion) {
|
|
158
|
+
throw new InstallerError(`Update did not install the expected framework ${currentVersion}; found ${installedVersion ?? 'none'}`, 41);
|
|
159
|
+
}
|
|
160
|
+
if (artifactRoot !== codeRoot && (scope === 'all' || scope === 'core')) {
|
|
161
|
+
recordSuccessfulInstall(repoRoot, { home: process.env.SPECRAILS_REGISTRY_HOME, providers: [provider], coreVersion: currentVersion });
|
|
162
|
+
}
|
|
163
|
+
step('Update complete');
|
|
164
|
+
info(`specrails-core ${previousVersion ?? '?'} → ${installedVersion ?? '?'}`);
|
|
165
|
+
// Terminal sentinel for programmatic consumers (see comment in init.ts).
|
|
166
|
+
ok('update complete');
|
|
167
|
+
return { repoRoot, previousVersion, currentVersion, provider, dryRun: false, scope, installedVersion };
|
|
119
168
|
});
|
|
120
|
-
|
|
121
|
-
workspace: artifactRoot,
|
|
122
|
-
frameworkDir: fwDir,
|
|
123
|
-
version: currentVersion,
|
|
124
|
-
codeRoot,
|
|
125
|
-
scriptDir,
|
|
126
|
-
selectedProvider: provider,
|
|
127
|
-
selectedAgents: config?.provider === provider
|
|
128
|
-
? selectedAgents
|
|
129
|
-
: previousSelections[provider] ?? selectedAgents,
|
|
130
|
-
previousSelections,
|
|
131
|
-
// In-repo updates COPY real files; relocated workspaces symlink.
|
|
132
|
-
copyStatics: artifactRoot === codeRoot,
|
|
133
|
-
});
|
|
134
|
-
if (provider === 'kimi') {
|
|
135
|
-
await installOpenSpecProject(codeRoot, provider, artifactRoot);
|
|
136
|
-
}
|
|
137
|
-
ok(`Re-linked ${providerDir}/ at framework ${currentVersion} + rewrote manifest`);
|
|
138
|
-
}
|
|
139
|
-
else if (scope === 'rules' || scope === 'agents') {
|
|
140
|
-
rescaffoldComponent(scope, { scriptDir, artifactRoot });
|
|
141
|
-
step('Update: rewriting manifest');
|
|
142
|
-
const manifest = buildManifest({
|
|
143
|
-
scriptDir,
|
|
144
|
-
repoRoot: artifactRoot,
|
|
145
|
-
version: currentVersion,
|
|
146
|
-
providers: [provider],
|
|
147
|
-
primaryProvider: provider,
|
|
148
|
-
});
|
|
149
|
-
const { manifestPath, versionPath } = writeManifestFiles(artifactRoot, manifest);
|
|
150
|
-
ok(`Wrote ${path.relative(artifactRoot, manifestPath)}`);
|
|
151
|
-
ok(`Wrote ${path.relative(artifactRoot, versionPath)}`);
|
|
152
|
-
}
|
|
153
|
-
step('Update complete');
|
|
154
|
-
info(`specrails-core ${previousVersion ?? '?'} → ${currentVersion}`);
|
|
155
|
-
// Terminal sentinel for programmatic consumers (see comment in init.ts).
|
|
156
|
-
ok('update complete');
|
|
157
|
-
return { repoRoot, previousVersion, currentVersion, provider, dryRun: false, scope };
|
|
169
|
+
});
|
|
158
170
|
}
|
|
159
171
|
/**
|
|
160
172
|
* Re-applies a single subtree (rules or agents) from the bundled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAC/G,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC9F,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAChJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvD,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,4BAA4B,EAC5B,mCAAmC,EACnC,yBAAyB,GAC1B,MAAM,WAAW,CAAA;AASlB,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC;IAC9C,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,aAAa;CACd,CAAC,CAAA;AAqDF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAA;IACpC,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;IAE7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAC1E,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;IAExC,yEAAyE;IACzE,gFAAgF;IAChF,+EAA+E;IAC/E,wEAAwE;IACxE,+EAA+E;IAC/E,gFAAgF;IAChF,6CAA6C;IAC7C,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE;QAC5D,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,iBAAiB;QAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACzC,WAAW,EAAE,cAAc;KAC5B,CAAC,CAAA;IAEF,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,MAAM,GACV,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IACtG,MAAM,cAAc,GAAG,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC9C,yBAAyB,CAAC,cAAc,CAAC,CAAA;IAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAA;IACzE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAiB,CACzB,6CAA6C,QAAQ,0CAA0C,CAChG,CAAA;IACH,CAAC;IACD,IAAI,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;IACvD,qBAAqB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;IACtD,qBAAqB,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAElH,6EAA6E;IAC7E,4EAA4E;IAC5E,mFAAmF;IACnF,wEAAwE;IACxE,IAAI,QAAkB,CAAA;IACtB,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACvC,IACE,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAC3B,KAAK,CAAC,QAAQ,KAAK,OAAO;YAC1B,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAC3B,KAAK,CAAC,QAAQ,KAAK,MAAM,EACzB,CAAC;YACD,MAAM,IAAI,cAAc,CACtB,yEAAyE,KAAK,CAAC,QAAQ,EAAE,EACzF,EAAE,CACH,CAAA;QACH,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC,QAAoB,CAAA;QACrC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAA;IACtD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,kDAAkD,CAAC,CAAA;QACxD,QAAQ,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9C,EAAE,CAAC,sBAAsB,QAAQ,KAAK,WAAW,GAAG,CAAC,CAAA;IAErD,oEAAoE;IACpE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,IAAI,CACF,iFAAiF;YAC/E,yEAAyE,CAC5E,CAAA;QACD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC/E,CAAC;IACD,IACE,QAAQ,KAAK,MAAM;QACnB,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,CAAC,EACzC,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,UAAU,KAAK,0DAA0D;YACvE,0EAA0E;YAC1E,6EAA6E,EAC/E,EAAE,CACH,CAAA;IACH,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CACF,0BAA0B,KAAK,IAAI;YACjC,OAAO,eAAe,IAAI,WAAW,MAAM,cAAc,GAAG,CAC/D,CAAA;QACD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC/E,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAChE,OAAO,0BAA0B,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACpD,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,GAAG,QAAQ,GAAG,mBAAmB,CAAC,CAAA;QACnI,qBAAqB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;QACtD,qBAAqB,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAA;QACrE,MAAM,kBAAkB,GAAG,mCAAmC,CAAC,YAAY,CAAC,CAAA;QAC5E,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACtI,GAAG,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC5I,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YAC3B,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,qEAAqE;YACrE,wCAAwC;YACxC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE;SACpE,CAAA;QACD,OAAO,mBAAmB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAChD,wEAAwE;YACxE,2EAA2E;YAC3E,kFAAkF;YAClF,0DAA0D;YAC1D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACxC,KAAK,MAAM,iBAAiB,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxF,mBAAmB,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,iBAA6B,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC7G,CAAC;YACH,CAAC;YAED,IAAI,CAAC,sCAAsC,KAAK,MAAM,eAAe,IAAI,GAAG,MAAM,cAAc,GAAG,CAAC,CAAA;YAEpG,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACxC,0EAA0E;gBAC1E,oEAAoE;gBACpE,4EAA4E;gBAC5E,2EAA2E;gBAC3E,eAAe,CAAC;oBACd,SAAS;oBACT,YAAY,EAAE,KAAK;oBACnB,QAAQ;oBACR,WAAW;oBACX,OAAO,EAAE,cAAc;oBACvB,cAAc;oBACd,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAe;iBACjE,CAAC,CAAA;gBACF,4BAA4B,CAAC;oBAC3B,SAAS,EAAE,YAAY;oBACvB,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,cAAc;oBACvB,QAAQ;oBACR,SAAS;oBACT,gBAAgB,EAAE,QAAQ;oBAC1B,cAAc,EACZ,MAAM,EAAE,QAAQ,KAAK,QAAQ;wBAC3B,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,cAAc;oBACpD,kBAAkB;oBAClB,iEAAiE;oBACjE,WAAW,EAAE,YAAY,KAAK,QAAQ;iBACvC,CAAC,CAAA;gBACF,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjD,MAAM,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;gBAChE,CAAC;gBACD,EAAE,CAAC,aAAa,WAAW,kBAAkB,cAAc,qBAAqB,CAAC,CAAA;YACnF,CAAC;iBAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnD,mBAAmB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;gBAEvD,IAAI,CAAC,aAAa,KAAK,gCAAgC,eAAe,IAAI,SAAS,6CAA6C,CAAC,CAAA;YACnI,CAAC;YAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;YAC1D,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;gBACjF,MAAM,IAAI,cAAc,CAAC,iDAAiD,cAAc,WAAW,gBAAgB,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;YACtI,CAAC;YACD,IAAI,YAAY,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;gBACvE,uBAAuB,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAA;YACtI,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACvB,IAAI,CAAC,kBAAkB,eAAe,IAAI,GAAG,MAAM,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAA;YAC7E,yEAAyE;YACzE,EAAE,CAAC,iBAAiB,CAAC,CAAA;YACrB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;QACtG,CAAC,CAAC,CAAA;IACF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAC1B,SAA6B,EAC7B,IAAiD;IAEjD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,SAAS,iBAAiB,GAAG,sBAAsB,CAAC,CAAA;QACtE,OAAM;IACR,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAA;IAC5F,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE;QACxB,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACzF,CAAC,CAAA;IACF,EAAE,CAAC,wCAAwC,SAAS,GAAG,CAAC,CAAA;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,IAAkC;IACtD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,+FAA+F,CAAC,CAAA;QACrG,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,IAAI,yCAAyC,CAAC,CAAA;QAC7D,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,UAA2B,CAAA;AACpC,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,YAAoB;IACzD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IACnE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAAE,OAAO,OAAO,CAAA;IACjE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IACnE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,MAAM,CAAA;IACpE,8DAA8D;IAC9D,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,eAAe,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,cAAc;YAAE,MAAM,GAAG,CAAA;QAC5C,MAAM,IAAI,cAAc,CACtB,uDAAuD,YAAY,EAAE,EACrE,EAAE,CACH,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAA;IACpE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAA;IACtD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACpC,4DAA4D;IAC5D,iEAAiE;IACjE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAC9C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAyB,CAAA;QAC/D,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import { lstatSync } from 'node:fs';
|
|
2
3
|
import { info, ok } from '../util/logger.js';
|
|
3
4
|
import { pathExists, removePath } from '../util/fs.js';
|
|
4
5
|
import { isReservedPath, repoRelative } from '../util/paths.js';
|
|
@@ -53,6 +54,19 @@ export function migratePreV5Install(input) {
|
|
|
53
54
|
const remove = (abs) => {
|
|
54
55
|
if (!pathExists(abs))
|
|
55
56
|
return;
|
|
57
|
+
// Parent symlinks/junctions belong to an immutable shared framework. The
|
|
58
|
+
// new assembly replaces the workspace link; never delete its old target.
|
|
59
|
+
for (let parent = path.dirname(abs); parent !== artifactRoot; parent = path.dirname(parent)) {
|
|
60
|
+
if (parent === path.dirname(parent))
|
|
61
|
+
return;
|
|
62
|
+
try {
|
|
63
|
+
if (lstatSync(parent).isSymbolicLink())
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
56
70
|
const rel = repoRelative(artifactRoot, abs);
|
|
57
71
|
if (isReservedPath(rel))
|
|
58
72
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v5-migration.js","sourceRoot":"","sources":["../../../src/installer/commands/v5-migration.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"v5-migration.js","sourceRoot":"","sources":["../../../src/installer/commands/v5-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import { assertNoCoreDowngrade, currentFrameworkVersion } from '../util/install-transaction.js';
|
|
2
3
|
import { InstallerError } from '../util/errors.js';
|
|
3
4
|
import { isDir, pathExists } from '../util/fs.js';
|
|
4
5
|
import { readRegistryOrEmpty } from '../util/registry.js';
|
|
@@ -105,6 +106,7 @@ export function assertFrameworkVersionComplete(frameworkDir, version, requiredPr
|
|
|
105
106
|
* fails, existing workspaces continue resolving through the previous version.
|
|
106
107
|
*/
|
|
107
108
|
export function materializeFrameworkVersion(input) {
|
|
109
|
+
assertNoCoreDowngrade(currentFrameworkVersion(input.frameworkDir), input.version);
|
|
108
110
|
const required = resolveRequiredFrameworkProviders(input);
|
|
109
111
|
if (required.length === 0) {
|
|
110
112
|
throw new InstallerError(`framework version ${input.version} has no requested or registered provider`, 41);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-lifecycle.js","sourceRoot":"","sources":["../../../src/installer/phases/framework-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"framework-lifecycle.js","sourceRoot":"","sources":["../../../src/installer/phases/framework-lifecycle.ts"],"names":[],"mappings":"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"}
|