swallowkit 1.0.3 → 1.1.0
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/dist/cli/commands/create-migration.d.ts +3 -0
- package/dist/cli/commands/create-migration.d.ts.map +1 -0
- package/dist/cli/commands/create-migration.js +16 -0
- package/dist/cli/commands/create-migration.js.map +1 -0
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +5 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +2 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrations.d.ts +3 -0
- package/dist/cli/commands/migrations.d.ts.map +1 -0
- package/dist/cli/commands/migrations.js +22 -0
- package/dist/cli/commands/migrations.js.map +1 -0
- package/dist/cli/commands/provision.d.ts +1 -1
- package/dist/cli/commands/provision.d.ts.map +1 -1
- package/dist/cli/commands/provision.js +95 -185
- package/dist/cli/commands/provision.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +6 -130
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/operations/migration-generator.d.ts +10 -0
- package/dist/core/operations/migration-generator.d.ts.map +1 -0
- package/dist/core/operations/migration-generator.js +194 -0
- package/dist/core/operations/migration-generator.js.map +1 -0
- package/dist/core/operations/provision-operations.d.ts +19 -0
- package/dist/core/operations/provision-operations.d.ts.map +1 -1
- package/dist/core/operations/provision-operations.js +299 -30
- package/dist/core/operations/provision-operations.js.map +1 -1
- package/dist/core/project/capabilities.js +1 -1
- package/dist/core/project/capabilities.js.map +1 -1
- package/dist/core/project/infra.d.ts +4 -0
- package/dist/core/project/infra.d.ts.map +1 -1
- package/dist/core/project/infra.js +19 -1
- package/dist/core/project/infra.js.map +1 -1
- package/dist/core/project/migrations.d.ts +53 -0
- package/dist/core/project/migrations.d.ts.map +1 -0
- package/dist/core/project/migrations.js +262 -0
- package/dist/core/project/migrations.js.map +1 -0
- package/dist/core/project/workflows.d.ts.map +1 -1
- package/dist/core/project/workflows.js +7 -3
- package/dist/core/project/workflows.js.map +1 -1
- package/dist/machine/index.d.ts.map +1 -1
- package/dist/machine/index.js +6 -0
- package/dist/machine/index.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +11 -2
- package/dist/mcp/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/agent-loop-phase34.test.ts +139 -0
- package/src/__tests__/init.test.ts +8 -0
- package/src/__tests__/migration.test.ts +116 -0
- package/src/__tests__/scaffold.test.ts +7 -4
- package/src/cli/commands/create-migration.ts +13 -0
- package/src/cli/commands/index.ts +2 -0
- package/src/cli/commands/init.ts +2 -0
- package/src/cli/commands/migrations.ts +20 -0
- package/src/cli/commands/provision.ts +115 -184
- package/src/cli/commands/scaffold.ts +6 -145
- package/src/cli/index.ts +4 -0
- package/src/core/operations/migration-generator.ts +188 -0
- package/src/core/operations/provision-operations.ts +391 -44
- package/src/core/project/capabilities.ts +1 -1
- package/src/core/project/infra.ts +23 -1
- package/src/core/project/migrations.ts +274 -0
- package/src/core/project/workflows.ts +7 -3
- package/src/machine/index.ts +7 -1
- package/src/mcp/index.ts +8 -2
|
@@ -44,6 +44,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
44
44
|
exports.planProvisionOperation = planProvisionOperation;
|
|
45
45
|
exports.applyProvisionOperation = applyProvisionOperation;
|
|
46
46
|
const crypto = __importStar(require("crypto"));
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
47
48
|
const path = __importStar(require("path"));
|
|
48
49
|
const child_process_1 = require("child_process");
|
|
49
50
|
const errors_1 = require("../../machine/errors");
|
|
@@ -51,6 +52,7 @@ const version_1 = require("../../version");
|
|
|
51
52
|
const infra_1 = require("../project/infra");
|
|
52
53
|
const state_1 = require("../project/state");
|
|
53
54
|
const file_session_1 = require("./file-session");
|
|
55
|
+
const migrations_1 = require("../project/migrations");
|
|
54
56
|
const RESOURCE_GROUP_PATTERN = /^[A-Za-z0-9._()-]{1,90}$/;
|
|
55
57
|
const LOCATION_PATTERN = /^[a-z0-9]{3,30}$/;
|
|
56
58
|
const SUBSCRIPTION_PATTERN = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
|
|
@@ -67,22 +69,100 @@ function validateProvisionInputs(options) {
|
|
|
67
69
|
}
|
|
68
70
|
function isAzCliAvailable() {
|
|
69
71
|
try {
|
|
70
|
-
const result = (0, child_process_1.spawnSync)("az", ["--version"], { shell:
|
|
72
|
+
const result = (0, child_process_1.spawnSync)("az", ["--version"], { shell: false, stdio: "ignore", timeout: 30000 });
|
|
71
73
|
return result.status === 0;
|
|
72
74
|
}
|
|
73
75
|
catch {
|
|
74
76
|
return false;
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
|
-
function
|
|
79
|
+
function displayCommand(command) {
|
|
80
|
+
return [command.file, ...command.args.map((arg) => /\s/.test(arg) ? JSON.stringify(arg) : arg)].join(" ");
|
|
81
|
+
}
|
|
82
|
+
function runAz(args, timeout = 300000) {
|
|
83
|
+
const result = (0, child_process_1.spawnSync)("az", args, { shell: false, encoding: "utf-8", timeout });
|
|
84
|
+
return {
|
|
85
|
+
status: result.status,
|
|
86
|
+
stdout: result.stdout ?? "",
|
|
87
|
+
stderr: result.stderr ?? "",
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function subscriptionArgs(subscription) {
|
|
91
|
+
return subscription ? ["--subscription", subscription] : [];
|
|
92
|
+
}
|
|
93
|
+
function buildBootstrapCommands(options, mainBicepPath, parametersPath) {
|
|
78
94
|
const commands = [];
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
95
|
+
commands.push({ file: "az", args: ["group", "create", "--name", options.resourceGroup, "--location", options.location, ...subscriptionArgs(options.subscription)], kind: "resource-group" });
|
|
96
|
+
commands.push({
|
|
97
|
+
file: "az",
|
|
98
|
+
args: ["deployment", "group", "create", "--name", "swallowkit-baseline", "--resource-group", options.resourceGroup, "--template-file", mainBicepPath, "--parameters", parametersPath, "--parameters", `location=${options.location}`, `swaLocation=${options.swaLocation}`, ...subscriptionArgs(options.subscription)],
|
|
99
|
+
kind: "deployment",
|
|
100
|
+
});
|
|
84
101
|
return commands;
|
|
85
102
|
}
|
|
103
|
+
function readProjectName(parametersPath) {
|
|
104
|
+
try {
|
|
105
|
+
const parameters = JSON.parse(fs.readFileSync(parametersPath, "utf-8"));
|
|
106
|
+
const projectName = parameters?.parameters?.projectName?.value;
|
|
107
|
+
if (typeof projectName === "string" && /^[A-Za-z0-9-]+$/.test(projectName))
|
|
108
|
+
return projectName;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// The caller reports the same actionable error for malformed and missing values.
|
|
112
|
+
}
|
|
113
|
+
throw new errors_1.MachineCommandError("invalid-infra-parameters", "infra/main.parameters.json must define parameters.projectName.value.", undefined, "blocked");
|
|
114
|
+
}
|
|
115
|
+
function inspectRemoteGroup(options) {
|
|
116
|
+
const existsResult = runAz(["group", "exists", "--name", options.resourceGroup, ...subscriptionArgs(options.subscription)], 60000);
|
|
117
|
+
if (existsResult.status !== 0) {
|
|
118
|
+
throw new errors_1.MachineCommandError("azure-state-query-failed", `Could not query resource group: ${(existsResult.stderr || existsResult.stdout || "").trim()}`, undefined, "blocked");
|
|
119
|
+
}
|
|
120
|
+
if ((existsResult.stdout || "").trim() !== "true")
|
|
121
|
+
return { exists: false, tags: {} };
|
|
122
|
+
const showResult = runAz(["group", "show", "--name", options.resourceGroup, ...subscriptionArgs(options.subscription), "--query", "{id:id,tags:tags}", "-o", "json"], 60000);
|
|
123
|
+
if (showResult.status !== 0) {
|
|
124
|
+
throw new errors_1.MachineCommandError("azure-state-query-failed", `Could not read resource group tags: ${(showResult.stderr || showResult.stdout || "").trim()}`, undefined, "blocked");
|
|
125
|
+
}
|
|
126
|
+
const parsed = JSON.parse(showResult.stdout || "{}");
|
|
127
|
+
return { exists: true, id: parsed.id, tags: parsed.tags ?? {} };
|
|
128
|
+
}
|
|
129
|
+
function tagCommand(resourceId, key, state, expectedState) {
|
|
130
|
+
return { file: "az", args: ["tag", "update", "--resource-id", resourceId, "--operation", "Merge", "--tags", `${key}=${(0, migrations_1.encodeMigrationState)(state)}`], kind: "tag", expectedState };
|
|
131
|
+
}
|
|
132
|
+
function bootstrapTagCommand(options, key, state) {
|
|
133
|
+
return { file: "az", args: ["group", "update", "--name", options.resourceGroup, "--set", `tags.${key}=${(0, migrations_1.encodeMigrationState)(state)}`, ...subscriptionArgs(options.subscription)], kind: "tag", expectedState: null };
|
|
134
|
+
}
|
|
135
|
+
function runBaseWhatIf(options, mainBicepPath, parametersPath) {
|
|
136
|
+
const result = runAz([
|
|
137
|
+
"deployment", "group", "what-if",
|
|
138
|
+
"--resource-group", options.resourceGroup,
|
|
139
|
+
"--template-file", mainBicepPath,
|
|
140
|
+
"--parameters", parametersPath,
|
|
141
|
+
"--parameters", `location=${options.location}`, `swaLocation=${options.swaLocation}`,
|
|
142
|
+
...subscriptionArgs(options.subscription),
|
|
143
|
+
"--result-format", "FullResourcePayloads",
|
|
144
|
+
"--no-pretty-print",
|
|
145
|
+
"-o", "json",
|
|
146
|
+
]);
|
|
147
|
+
if (result.status !== 0) {
|
|
148
|
+
throw new errors_1.MachineCommandError("what-if-failed", `az deployment group what-if failed: ${(result.stderr || result.stdout).trim().slice(0, 2000)}`, undefined, "blocked");
|
|
149
|
+
}
|
|
150
|
+
return result.stdout.trim();
|
|
151
|
+
}
|
|
152
|
+
function assertAdoptionWhatIfIsSafe(whatIfResult) {
|
|
153
|
+
try {
|
|
154
|
+
const parsed = JSON.parse(whatIfResult);
|
|
155
|
+
const destructive = (parsed.changes ?? []).filter((change) => change.changeType === "Create" || change.changeType === "Delete");
|
|
156
|
+
if (destructive.length > 0) {
|
|
157
|
+
throw new errors_1.MachineCommandError("adoption-drift-blocked", "Legacy adoption found resources that would be created or deleted. Move undeployed additions into migrations before adopting this environment.", { changes: destructive }, "blocked");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error instanceof errors_1.MachineCommandError)
|
|
162
|
+
throw error;
|
|
163
|
+
throw new errors_1.MachineCommandError("what-if-invalid", "Azure what-if did not return valid JSON for legacy adoption.", undefined, "blocked");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
86
166
|
async function planProvisionOperation(options) {
|
|
87
167
|
const projectRoot = process.cwd();
|
|
88
168
|
validateProvisionInputs(options);
|
|
@@ -100,31 +180,153 @@ async function planProvisionOperation(options) {
|
|
|
100
180
|
}
|
|
101
181
|
const mainBicepPath = path.join(projectRoot, "infra", "main.bicep");
|
|
102
182
|
const parametersPath = path.join(projectRoot, "infra", "main.parameters.json");
|
|
103
|
-
|
|
183
|
+
let mode = "offline";
|
|
184
|
+
let commandSpecs = buildBootstrapCommands(options, mainBicepPath, parametersPath);
|
|
185
|
+
let pendingMigrations = [];
|
|
186
|
+
let migrationTagKey;
|
|
187
|
+
let remoteState;
|
|
104
188
|
let whatIfResult;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
189
|
+
let manifestAfterApply;
|
|
190
|
+
let baselineDrift = [];
|
|
191
|
+
const manifestPath = path.join(projectRoot, migrations_1.MIGRATION_MANIFEST_PATH);
|
|
192
|
+
const manifest = fs.existsSync(manifestPath) ? (0, migrations_1.loadMigrationManifest)(projectRoot) : null;
|
|
193
|
+
if (manifest) {
|
|
194
|
+
for (const migration of manifest.migrations) {
|
|
195
|
+
const files = [migration.template, migration.parameters].filter((value) => Boolean(value));
|
|
196
|
+
for (const relativePath of files) {
|
|
197
|
+
if (!fs.existsSync(path.join(projectRoot, relativePath))) {
|
|
198
|
+
throw new errors_1.MachineCommandError("migration-file-not-found", `Migration file not found: ${relativePath}`, undefined, "blocked");
|
|
199
|
+
}
|
|
200
|
+
}
|
|
108
201
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const result = (0, child_process_1.spawnSync)("az", whatIfArgs, { shell: true, encoding: "utf-8", timeout: 300000 });
|
|
119
|
-
if (result.status !== 0) {
|
|
120
|
-
throw new errors_1.MachineCommandError("what-if-failed", `az deployment group what-if failed: ${(result.stderr || result.stdout || "").trim().slice(0, 2000)}`, undefined, "blocked");
|
|
202
|
+
baselineDrift = (0, migrations_1.findBaselineDrift)(manifest, projectRoot);
|
|
203
|
+
}
|
|
204
|
+
if (azCliAvailable) {
|
|
205
|
+
const remoteGroup = inspectRemoteGroup(options);
|
|
206
|
+
if (!manifest) {
|
|
207
|
+
if (remoteGroup.exists) {
|
|
208
|
+
throw new errors_1.MachineCommandError("migration-manifest-not-found", 'Existing Azure resources require migration tracking. Run "swallowkit migrations init --legacy-baseline" first.', undefined, "blocked");
|
|
209
|
+
}
|
|
210
|
+
throw new errors_1.MachineCommandError("migration-manifest-not-found", "Initialize a migration manifest before the first provision.", undefined, "blocked");
|
|
121
211
|
}
|
|
122
|
-
|
|
212
|
+
migrationTagKey = (0, migrations_1.getMigrationTagKey)(manifest.projectId);
|
|
213
|
+
if (!remoteGroup.exists) {
|
|
214
|
+
mode = "bootstrap";
|
|
215
|
+
const baselineFiles = (0, migrations_1.collectLegacyBaselineFiles)(projectRoot);
|
|
216
|
+
manifestAfterApply = {
|
|
217
|
+
...manifest,
|
|
218
|
+
baseline: { ...manifest.baseline, files: baselineFiles, checksum: (0, migrations_1.computeBaselineChecksum)(baselineFiles) },
|
|
219
|
+
};
|
|
220
|
+
const baselineState = { schemaVersion: 1, version: 0, checksum: manifestAfterApply.baseline.checksum };
|
|
221
|
+
commandSpecs = [...buildBootstrapCommands(options, mainBicepPath, parametersPath), bootstrapTagCommand(options, migrationTagKey, baselineState)];
|
|
222
|
+
if (options.whatIf)
|
|
223
|
+
warnings.push("what-if-skipped: Resource-group-scope what-if requires the target resource group to exist.");
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
if (baselineDrift.length > 0 && !options.reconcile) {
|
|
227
|
+
throw new errors_1.MachineCommandError("baseline-drift", "Baseline infrastructure files changed after migration tracking was initialized. Move additive changes into a migration or use --reconcile for an intentional full deployment.", { changedFiles: baselineDrift }, "blocked");
|
|
228
|
+
}
|
|
229
|
+
const tagValue = remoteGroup.tags[migrationTagKey];
|
|
230
|
+
remoteState = tagValue ? (0, migrations_1.decodeMigrationState)(tagValue) : null;
|
|
231
|
+
if (!remoteState) {
|
|
232
|
+
mode = "adoption-required";
|
|
233
|
+
commandSpecs = [];
|
|
234
|
+
if (options.reconcile && !manifest.baseline.legacy) {
|
|
235
|
+
whatIfResult = runBaseWhatIf(options, mainBicepPath, parametersPath);
|
|
236
|
+
warnings.push("Recovering an interrupted bootstrap by reconciling the baseline before recording migration state.");
|
|
237
|
+
mode = "reconcile";
|
|
238
|
+
const baselineFiles = (0, migrations_1.collectLegacyBaselineFiles)(projectRoot);
|
|
239
|
+
manifestAfterApply = {
|
|
240
|
+
...manifest,
|
|
241
|
+
baseline: { ...manifest.baseline, files: baselineFiles, checksum: (0, migrations_1.computeBaselineChecksum)(baselineFiles) },
|
|
242
|
+
};
|
|
243
|
+
commandSpecs = buildBootstrapCommands(options, mainBicepPath, parametersPath).filter((command) => command.kind !== "resource-group");
|
|
244
|
+
commandSpecs.push(tagCommand(remoteGroup.id, migrationTagKey, { schemaVersion: 1, version: 0, checksum: manifestAfterApply.baseline.checksum }, null));
|
|
245
|
+
}
|
|
246
|
+
else if (options.adoptExisting) {
|
|
247
|
+
if (options.baseline !== 0) {
|
|
248
|
+
throw new errors_1.MachineCommandError("invalid-baseline", "Legacy adoption currently supports only --baseline 0.", undefined, "blocked");
|
|
249
|
+
}
|
|
250
|
+
if (!options.whatIf) {
|
|
251
|
+
throw new errors_1.MachineCommandError("adoption-what-if-required", "Legacy adoption requires --what-if before the baseline tag can be recorded.", undefined, "requires-human");
|
|
252
|
+
}
|
|
253
|
+
if (!manifest.baseline.legacy) {
|
|
254
|
+
throw new errors_1.MachineCommandError("invalid-baseline", "--adopt-existing requires a manifest created with migrations init --legacy-baseline.", undefined, "blocked");
|
|
255
|
+
}
|
|
256
|
+
whatIfResult = runBaseWhatIf(options, mainBicepPath, parametersPath);
|
|
257
|
+
assertAdoptionWhatIfIsSafe(whatIfResult);
|
|
258
|
+
warnings.push("Legacy adoption records the current environment as baseline 0 without deploying main.bicep. Review all Modify results before approval.");
|
|
259
|
+
mode = "adopt";
|
|
260
|
+
commandSpecs = [tagCommand(remoteGroup.id, migrationTagKey, { schemaVersion: 1, version: 0, checksum: manifest.baseline.checksum }, null)];
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else if (options.reconcile) {
|
|
264
|
+
(0, migrations_1.selectPendingMigrations)(manifest, remoteState, projectRoot);
|
|
265
|
+
mode = "reconcile";
|
|
266
|
+
warnings.push("Reconcile redeploys infra/main.bicep and may reset template-managed properties such as Function App settings.");
|
|
267
|
+
whatIfResult = runBaseWhatIf(options, mainBicepPath, parametersPath);
|
|
268
|
+
commandSpecs = buildBootstrapCommands(options, mainBicepPath, parametersPath).filter((command) => command.kind !== "resource-group");
|
|
269
|
+
const baselineFiles = (0, migrations_1.collectLegacyBaselineFiles)(projectRoot);
|
|
270
|
+
manifestAfterApply = {
|
|
271
|
+
...manifest,
|
|
272
|
+
baseline: { ...manifest.baseline, files: baselineFiles, checksum: (0, migrations_1.computeBaselineChecksum)(baselineFiles) },
|
|
273
|
+
};
|
|
274
|
+
const reconciledState = {
|
|
275
|
+
schemaVersion: 1,
|
|
276
|
+
version: remoteState.version,
|
|
277
|
+
checksum: (0, migrations_1.checksumAtVersion)(manifestAfterApply, remoteState.version, projectRoot),
|
|
278
|
+
};
|
|
279
|
+
commandSpecs.push(tagCommand(remoteGroup.id, migrationTagKey, reconciledState, remoteState));
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
pendingMigrations = (0, migrations_1.selectPendingMigrations)(manifest, remoteState, projectRoot);
|
|
283
|
+
mode = pendingMigrations.length > 0 ? "migrate" : "noop";
|
|
284
|
+
commandSpecs = [];
|
|
285
|
+
const projectName = pendingMigrations.length > 0 ? readProjectName(parametersPath) : "";
|
|
286
|
+
let expectedState = remoteState;
|
|
287
|
+
for (const migration of pendingMigrations) {
|
|
288
|
+
commandSpecs.push({
|
|
289
|
+
file: "az",
|
|
290
|
+
args: [
|
|
291
|
+
"deployment", "group", "create",
|
|
292
|
+
"--name", "swallowkit-migration",
|
|
293
|
+
"--resource-group", options.resourceGroup,
|
|
294
|
+
"--template-file", path.join(projectRoot, migration.template),
|
|
295
|
+
...(migration.parameters ? ["--parameters", path.join(projectRoot, migration.parameters)] : []),
|
|
296
|
+
"--parameters", `projectName=${projectName}`, `location=${options.location}`,
|
|
297
|
+
...subscriptionArgs(options.subscription),
|
|
298
|
+
],
|
|
299
|
+
kind: "migration",
|
|
300
|
+
expectedState,
|
|
301
|
+
});
|
|
302
|
+
const nextState = { schemaVersion: 1, version: migration.version, checksum: migration.cumulativeChecksum };
|
|
303
|
+
commandSpecs.push(tagCommand(remoteGroup.id, migrationTagKey, nextState, expectedState));
|
|
304
|
+
expectedState = nextState;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else if (options.whatIf || options.adoptExisting || options.reconcile) {
|
|
310
|
+
throw new errors_1.MachineCommandError("az-cli-not-found", "Azure CLI is required for --what-if, --adopt-existing, and --reconcile.", undefined, "blocked");
|
|
123
311
|
}
|
|
124
312
|
const fingerprints = {
|
|
125
313
|
"infra/main.bicep": (0, file_session_1.hashFileIfExists)(mainBicepPath),
|
|
126
314
|
"infra/main.parameters.json": (0, file_session_1.hashFileIfExists)(parametersPath),
|
|
127
315
|
};
|
|
316
|
+
const baselineSnapshotChecksum = manifest
|
|
317
|
+
? (0, migrations_1.computeBaselineChecksum)((0, migrations_1.collectLegacyBaselineFiles)(projectRoot))
|
|
318
|
+
: undefined;
|
|
319
|
+
if (manifest) {
|
|
320
|
+
fingerprints[migrations_1.MIGRATION_MANIFEST_PATH] = (0, file_session_1.hashFileIfExists)(manifestPath);
|
|
321
|
+
for (const baselineFile of manifest.baseline.files) {
|
|
322
|
+
fingerprints[baselineFile.path] = (0, file_session_1.hashFileIfExists)(path.join(projectRoot, baselineFile.path));
|
|
323
|
+
}
|
|
324
|
+
for (const migration of manifest.migrations) {
|
|
325
|
+
fingerprints[migration.template] = (0, file_session_1.hashFileIfExists)(path.join(projectRoot, migration.template));
|
|
326
|
+
if (migration.parameters)
|
|
327
|
+
fingerprints[migration.parameters] = (0, file_session_1.hashFileIfExists)(path.join(projectRoot, migration.parameters));
|
|
328
|
+
}
|
|
329
|
+
}
|
|
128
330
|
const planId = crypto
|
|
129
331
|
.createHash("sha256")
|
|
130
332
|
.update(JSON.stringify({
|
|
@@ -132,6 +334,10 @@ async function planProvisionOperation(options) {
|
|
|
132
334
|
location: options.location,
|
|
133
335
|
swaLocation: options.swaLocation,
|
|
134
336
|
subscription: options.subscription,
|
|
337
|
+
mode,
|
|
338
|
+
remoteState,
|
|
339
|
+
pendingMigrations: pendingMigrations.map((migration) => ({ version: migration.version, checksum: migration.checksum })),
|
|
340
|
+
baselineSnapshotChecksum,
|
|
135
341
|
fingerprints,
|
|
136
342
|
}))
|
|
137
343
|
.digest("hex")
|
|
@@ -146,16 +352,53 @@ async function planProvisionOperation(options) {
|
|
|
146
352
|
createdAt: new Date().toISOString(),
|
|
147
353
|
swallowkitVersion: (0, version_1.getSwallowKitVersion)(),
|
|
148
354
|
azCliAvailable,
|
|
355
|
+
mode,
|
|
149
356
|
infra,
|
|
150
|
-
commands,
|
|
357
|
+
commands: commandSpecs.map(displayCommand),
|
|
358
|
+
commandSpecs,
|
|
359
|
+
...(migrationTagKey ? { migrationTagKey } : {}),
|
|
360
|
+
...(remoteState !== undefined ? { remoteState } : {}),
|
|
361
|
+
pendingMigrations,
|
|
362
|
+
...(manifestAfterApply ? { manifestAfterApply } : {}),
|
|
151
363
|
...(whatIfResult !== undefined ? { whatIfResult } : {}),
|
|
152
364
|
warnings,
|
|
153
365
|
requiresApproval: true,
|
|
154
366
|
fingerprints,
|
|
367
|
+
...(baselineSnapshotChecksum ? { baselineSnapshotChecksum } : {}),
|
|
155
368
|
};
|
|
156
369
|
(0, state_1.savePlanState)(plan, projectRoot);
|
|
157
370
|
return plan;
|
|
158
371
|
}
|
|
372
|
+
function statesEqual(left, right) {
|
|
373
|
+
return left?.version === right?.version && left?.checksum === right?.checksum;
|
|
374
|
+
}
|
|
375
|
+
function readRemoteMigrationState(plan) {
|
|
376
|
+
const group = inspectRemoteGroup(plan);
|
|
377
|
+
if (!group.exists || !plan.migrationTagKey)
|
|
378
|
+
return { group, state: null };
|
|
379
|
+
const tagValue = group.tags[plan.migrationTagKey];
|
|
380
|
+
return { group, state: tagValue ? (0, migrations_1.decodeMigrationState)(tagValue) : null };
|
|
381
|
+
}
|
|
382
|
+
function assertPlanRemoteState(plan, expected) {
|
|
383
|
+
if (plan.mode === "offline")
|
|
384
|
+
return;
|
|
385
|
+
const current = readRemoteMigrationState(plan);
|
|
386
|
+
if (plan.mode === "bootstrap") {
|
|
387
|
+
if (current.group.exists) {
|
|
388
|
+
throw new errors_1.MachineCommandError("stale-azure-state", "The resource group was created after this plan. Re-run plan provision.", undefined, "blocked");
|
|
389
|
+
}
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (!current.group.exists || !statesEqual(current.state, expected)) {
|
|
393
|
+
throw new errors_1.MachineCommandError("stale-azure-state", "Azure migration state changed after this plan was created. Re-run plan provision.", { expected, actual: current.state, resourceGroupExists: current.group.exists }, "blocked");
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function assertTagExpectedState(plan, expected) {
|
|
397
|
+
const current = readRemoteMigrationState(plan);
|
|
398
|
+
if (!current.group.exists || !statesEqual(current.state, expected)) {
|
|
399
|
+
throw new errors_1.MachineCommandError("stale-azure-state", "Azure migration state changed before its tag could be updated. Re-run plan provision.", { expected, actual: current.state, resourceGroupExists: current.group.exists }, "blocked");
|
|
400
|
+
}
|
|
401
|
+
}
|
|
159
402
|
async function applyProvisionOperation(options) {
|
|
160
403
|
const projectRoot = process.cwd();
|
|
161
404
|
const plan = (0, state_1.loadPlanState)(options.planId, projectRoot);
|
|
@@ -172,22 +415,45 @@ async function applyProvisionOperation(options) {
|
|
|
172
415
|
if (changedFiles.length > 0) {
|
|
173
416
|
throw new errors_1.MachineCommandError("stale-plan", `Plan "${options.planId}" is stale: ${changedFiles.join(", ")} changed after the plan was created. Re-run "plan provision".`, { planId: options.planId, changedFiles }, "blocked");
|
|
174
417
|
}
|
|
418
|
+
if (plan.baselineSnapshotChecksum) {
|
|
419
|
+
const currentBaselineChecksum = (0, migrations_1.computeBaselineChecksum)((0, migrations_1.collectLegacyBaselineFiles)(projectRoot));
|
|
420
|
+
if (currentBaselineChecksum !== plan.baselineSnapshotChecksum) {
|
|
421
|
+
throw new errors_1.MachineCommandError("stale-plan", `Plan "${options.planId}" is stale: baseline infrastructure inventory changed after the plan was created.`, { planId: options.planId }, "blocked");
|
|
422
|
+
}
|
|
423
|
+
}
|
|
175
424
|
if (!options.approve) {
|
|
176
425
|
throw new errors_1.MachineCommandError("approval-required", "Provisioning creates billable Azure resources and always requires human approval. Review plan.commands and re-run with --approve.", { planId: plan.planId, commands: plan.commands }, "requires-human");
|
|
177
426
|
}
|
|
427
|
+
if (!plan.mode || !plan.commandSpecs) {
|
|
428
|
+
throw new errors_1.MachineCommandError("incompatible-plan", "This provision plan was created by an older SwallowKit version. Re-run plan provision.", undefined, "blocked");
|
|
429
|
+
}
|
|
430
|
+
if (plan.mode === "offline") {
|
|
431
|
+
throw new errors_1.MachineCommandError("online-plan-required", "Provision apply requires a fresh plan created while Azure CLI is available and authenticated.", undefined, "blocked");
|
|
432
|
+
}
|
|
433
|
+
if (plan.mode === "adoption-required") {
|
|
434
|
+
throw new errors_1.MachineCommandError("adoption-required", 'This existing resource group has no SwallowKit migration state. Re-plan with --adopt-existing --baseline 0 --what-if.', { planId: plan.planId }, "requires-human");
|
|
435
|
+
}
|
|
178
436
|
if (!isAzCliAvailable()) {
|
|
179
437
|
throw new errors_1.MachineCommandError("az-cli-not-found", "Azure CLI is not installed. Install it first: https://aka.ms/azure-cli", undefined, "blocked");
|
|
180
438
|
}
|
|
181
439
|
const executedCommands = [];
|
|
182
440
|
const warnings = [...plan.warnings];
|
|
183
441
|
let deploymentOutputs;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
442
|
+
assertPlanRemoteState(plan, plan.remoteState);
|
|
443
|
+
for (const command of plan.commandSpecs) {
|
|
444
|
+
if (command.kind === "migration") {
|
|
445
|
+
assertPlanRemoteState(plan, command.expectedState);
|
|
446
|
+
}
|
|
447
|
+
if (command.kind === "tag") {
|
|
448
|
+
assertTagExpectedState(plan, command.expectedState);
|
|
449
|
+
}
|
|
450
|
+
const result = runAz(command.args);
|
|
451
|
+
const commandText = displayCommand(command);
|
|
452
|
+
executedCommands.push(commandText);
|
|
187
453
|
if (result.status !== 0) {
|
|
188
|
-
throw new errors_1.MachineCommandError("provision-failed", `Command failed: ${
|
|
454
|
+
throw new errors_1.MachineCommandError("provision-failed", `Command failed: ${commandText}\n${(result.stderr || result.stdout).trim().slice(0, 4000)}`, { executedCommands }, "failed");
|
|
189
455
|
}
|
|
190
|
-
if (command.
|
|
456
|
+
if (command.kind === "deployment" || command.kind === "migration") {
|
|
191
457
|
try {
|
|
192
458
|
const deployment = JSON.parse(result.stdout || "{}");
|
|
193
459
|
deploymentOutputs = deployment.properties?.outputs;
|
|
@@ -197,6 +463,9 @@ async function applyProvisionOperation(options) {
|
|
|
197
463
|
}
|
|
198
464
|
}
|
|
199
465
|
}
|
|
466
|
+
if (plan.manifestAfterApply) {
|
|
467
|
+
(0, migrations_1.replaceMigrationManifest)(plan.manifestAfterApply, projectRoot);
|
|
468
|
+
}
|
|
200
469
|
(0, state_1.deletePlanState)(plan.planId, projectRoot);
|
|
201
470
|
return {
|
|
202
471
|
planId: plan.planId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision-operations.js","sourceRoot":"","sources":["../../../src/core/operations/provision-operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provision-operations.js","sourceRoot":"","sources":["../../../src/core/operations/provision-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,7 +120,7 @@ function inspectCapabilities() {
|
|
|
120
120
|
"inspect project | entities | routes | artifacts | boundaries | infra | drift | capabilities",
|
|
121
121
|
"validate project",
|
|
122
122
|
"generate model <names...> | generate scaffold <model>",
|
|
123
|
-
"plan scaffold <models...> | plan auth --provider <p> [--scheme <name>] [--allowed-providers <csv>] | plan provision -g <rg> --location <loc> --swa-location <loc>",
|
|
123
|
+
"plan scaffold <models...> | plan auth --provider <p> [--scheme <name>] [--allowed-providers <csv>] | plan provision -g <rg> --location <loc> --swa-location <loc> [--adopt-existing --baseline 0 --what-if] [--reconcile --what-if]",
|
|
124
124
|
"apply scaffold [models...] --plan <id> [--approve] | apply auth --plan <id> [--approve] | apply provision --plan <id> --approve",
|
|
125
125
|
"verify project [--checks <ids>] [--compact]",
|
|
126
126
|
"explain failure [--check <id>]",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/project/capabilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAsDH,kDAkIC;AAtLD,2CAAqD;AAoDrD,SAAgB,mBAAmB;IACjC,OAAO;QACL,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,IAAA,8BAAoB,GAAE;QACzC,iBAAiB,EAAE;YACjB;gBACE,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,gQAAgQ;gBAClQ,MAAM,EACJ,2LAA2L;aAC9L;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,uEAAuE;gBACpF,MAAM,EAAE,oCAAoC;aAC7C;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,mJAAmJ;gBACrJ,MAAM,EAAE,2CAA2C;gBACnD,KAAK,EAAE,CAAC,2EAA2E,CAAC;aACrF;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,qPAAqP;gBACvP,MAAM,EACJ,mNAAmN;aACtN;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,gJAAgJ;gBAClJ,MAAM,EACJ,8IAA8I;aACjJ;SACF;QACD,cAAc,EAAE;YACd,eAAe,EAAE;gBACf,kMAAkM;gBAClM,kGAAkG;gBAClG,gJAAgJ;gBAChJ,+HAA+H;gBAC/H,oHAAoH;gBACpH,sFAAsF;aACvF;YACD,KAAK,EAAE;gBACL,yIAAyI;gBACzI,sGAAsG;gBACtG,gHAAgH;aACjH;YACD,SAAS,EAAE;gBACT;oBACE,QAAQ,EAAE,YAAY;oBACtB,WAAW,EAAE,0FAA0F;oBACvG,cAAc,EAAE,CAAC,kDAAkD,EAAE,sDAAsD,CAAC;iBAC7H;gBACD;oBACE,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,8FAA8F;oBAC3G,cAAc,EAAE;wBACd,6IAA6I;qBAC9I;iBACF;gBACD;oBACE,QAAQ,EAAE,gBAAgB;oBAC1B,WAAW,EAAE,+GAA+G;oBAC5H,cAAc,EAAE;wBACd,mFAAmF;wBACnF,sEAAsE;qBACvE;iBACF;gBACD;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,wCAAwC;oBACrD,cAAc,EAAE,EAAE;iBACnB;aACF;YACD,qBAAqB,EAAE;gBACrB,SAAS,EACP,kMAAkM;gBACpM,aAAa,EACX,kUAAkU;gBACpU,eAAe,EAAE,IAAI;aACtB;SACF;QACD,aAAa,EAAE;YACb,UAAU,EAAE;gBACV,yFAAyF;gBACzF,yCAAyC;aAC1C;YACD,aAAa,EAAE;gBACb,+JAA+J;aAChK;YACD,QAAQ,EAAE;gBACR,oRAAoR;aACrR;SACF;QACD,YAAY,EAAE;YACZ,WAAW,EAAE,uGAAuG;YACpH,SAAS,EACP,uPAAuP;SAC1P;QACD,OAAO,EAAE;YACP,eAAe,EAAE,oGAAoG;YACrH,UAAU,EAAE,iHAAiH;YAC7H,KAAK,EAAE,CAAC,yFAAyF,CAAC;SACnG;QACD,eAAe,EAAE;YACf,6FAA6F;YAC7F,kBAAkB;YAClB,uDAAuD;YACvD,
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/project/capabilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAsDH,kDAkIC;AAtLD,2CAAqD;AAoDrD,SAAgB,mBAAmB;IACjC,OAAO;QACL,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,IAAA,8BAAoB,GAAE;QACzC,iBAAiB,EAAE;YACjB;gBACE,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,gQAAgQ;gBAClQ,MAAM,EACJ,2LAA2L;aAC9L;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,uEAAuE;gBACpF,MAAM,EAAE,oCAAoC;aAC7C;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,mJAAmJ;gBACrJ,MAAM,EAAE,2CAA2C;gBACnD,KAAK,EAAE,CAAC,2EAA2E,CAAC;aACrF;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,qPAAqP;gBACvP,MAAM,EACJ,mNAAmN;aACtN;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,gJAAgJ;gBAClJ,MAAM,EACJ,8IAA8I;aACjJ;SACF;QACD,cAAc,EAAE;YACd,eAAe,EAAE;gBACf,kMAAkM;gBAClM,kGAAkG;gBAClG,gJAAgJ;gBAChJ,+HAA+H;gBAC/H,oHAAoH;gBACpH,sFAAsF;aACvF;YACD,KAAK,EAAE;gBACL,yIAAyI;gBACzI,sGAAsG;gBACtG,gHAAgH;aACjH;YACD,SAAS,EAAE;gBACT;oBACE,QAAQ,EAAE,YAAY;oBACtB,WAAW,EAAE,0FAA0F;oBACvG,cAAc,EAAE,CAAC,kDAAkD,EAAE,sDAAsD,CAAC;iBAC7H;gBACD;oBACE,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,8FAA8F;oBAC3G,cAAc,EAAE;wBACd,6IAA6I;qBAC9I;iBACF;gBACD;oBACE,QAAQ,EAAE,gBAAgB;oBAC1B,WAAW,EAAE,+GAA+G;oBAC5H,cAAc,EAAE;wBACd,mFAAmF;wBACnF,sEAAsE;qBACvE;iBACF;gBACD;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,wCAAwC;oBACrD,cAAc,EAAE,EAAE;iBACnB;aACF;YACD,qBAAqB,EAAE;gBACrB,SAAS,EACP,kMAAkM;gBACpM,aAAa,EACX,kUAAkU;gBACpU,eAAe,EAAE,IAAI;aACtB;SACF;QACD,aAAa,EAAE;YACb,UAAU,EAAE;gBACV,yFAAyF;gBACzF,yCAAyC;aAC1C;YACD,aAAa,EAAE;gBACb,+JAA+J;aAChK;YACD,QAAQ,EAAE;gBACR,oRAAoR;aACrR;SACF;QACD,YAAY,EAAE;YACZ,WAAW,EAAE,uGAAuG;YACpH,SAAS,EACP,uPAAuP;SAC1P;QACD,OAAO,EAAE;YACP,eAAe,EAAE,oGAAoG;YACrH,UAAU,EAAE,iHAAiH;YAC7H,KAAK,EAAE,CAAC,yFAAyF,CAAC;SACnG;QACD,eAAe,EAAE;YACf,6FAA6F;YAC7F,kBAAkB;YAClB,uDAAuD;YACvD,qOAAqO;YACrO,iIAAiI;YACjI,6CAA6C;YAC7C,gCAAgC;SACjC;QACD,YAAY,EAAE;YACZ,aAAa,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC;YAClD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;YACtC,YAAY,EAAE,wEAAwE;SACvF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../../src/core/project/infra.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,UAAU,EAAE,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,CAAC;QACvB,OAAO,EAAE,WAAW,EAAE,CAAC;KACxB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqFD,wBAAgB,YAAY,CAAC,WAAW,GAAE,MAAsB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../../src/core/project/infra.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,UAAU,EAAE,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,CAAC;QACvB,OAAO,EAAE,WAAW,EAAE,CAAC;KACxB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE;QACV,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqFD,wBAAgB,YAAY,CAAC,WAAW,GAAE,MAAsB,GAAG,eAAe,CA0EjF"}
|
|
@@ -142,6 +142,20 @@ function inspectInfra(projectRoot = process.cwd()) {
|
|
|
142
142
|
}
|
|
143
143
|
return { file: `infra/containers/${f}`, wired };
|
|
144
144
|
});
|
|
145
|
+
const migrationManifestPath = path.join(infraDir, "migrations", "manifest.json");
|
|
146
|
+
let migrationVersions = [];
|
|
147
|
+
if (fs.existsSync(migrationManifestPath)) {
|
|
148
|
+
try {
|
|
149
|
+
const manifest = JSON.parse(fs.readFileSync(migrationManifestPath, "utf-8"));
|
|
150
|
+
migrationVersions = (manifest.migrations ?? [])
|
|
151
|
+
.map((migration) => migration.version)
|
|
152
|
+
.filter((version) => Number.isSafeInteger(version))
|
|
153
|
+
.sort((left, right) => left - right);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
warnings.push("migration-manifest-invalid: infra/migrations/manifest.json is not valid JSON.");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
145
159
|
return {
|
|
146
160
|
hasInfraDirectory,
|
|
147
161
|
mainBicep: {
|
|
@@ -157,9 +171,13 @@ function inspectInfra(projectRoot = process.cwd()) {
|
|
|
157
171
|
},
|
|
158
172
|
moduleFiles,
|
|
159
173
|
containers,
|
|
174
|
+
migrations: {
|
|
175
|
+
manifestExists: fs.existsSync(migrationManifestPath),
|
|
176
|
+
versions: migrationVersions,
|
|
177
|
+
},
|
|
160
178
|
boundary: {
|
|
161
179
|
zone: "shared",
|
|
162
|
-
note: "infra/main.bicep
|
|
180
|
+
note: "infra/main.bicep and modules form the baseline. New model containers and custom resources belong in immutable infra/migrations entries.",
|
|
163
181
|
},
|
|
164
182
|
warnings,
|
|
165
183
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../../src/core/project/infra.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../../src/core/project/infra.ts"],"names":[],"mappings":"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"}
|