swallowkit 1.0.3 → 1.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.
Files changed (77) hide show
  1. package/dist/cli/commands/create-migration.d.ts +3 -0
  2. package/dist/cli/commands/create-migration.d.ts.map +1 -0
  3. package/dist/cli/commands/create-migration.js +16 -0
  4. package/dist/cli/commands/create-migration.js.map +1 -0
  5. package/dist/cli/commands/index.d.ts +2 -0
  6. package/dist/cli/commands/index.d.ts.map +1 -1
  7. package/dist/cli/commands/index.js +5 -1
  8. package/dist/cli/commands/index.js.map +1 -1
  9. package/dist/cli/commands/init.d.ts.map +1 -1
  10. package/dist/cli/commands/init.js +2 -0
  11. package/dist/cli/commands/init.js.map +1 -1
  12. package/dist/cli/commands/migrations.d.ts +3 -0
  13. package/dist/cli/commands/migrations.d.ts.map +1 -0
  14. package/dist/cli/commands/migrations.js +22 -0
  15. package/dist/cli/commands/migrations.js.map +1 -0
  16. package/dist/cli/commands/provision.d.ts +1 -1
  17. package/dist/cli/commands/provision.d.ts.map +1 -1
  18. package/dist/cli/commands/provision.js +95 -185
  19. package/dist/cli/commands/provision.js.map +1 -1
  20. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  21. package/dist/cli/commands/scaffold.js +6 -130
  22. package/dist/cli/commands/scaffold.js.map +1 -1
  23. package/dist/cli/index.d.ts.map +1 -1
  24. package/dist/cli/index.js +4 -0
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/core/operations/migration-generator.d.ts +10 -0
  27. package/dist/core/operations/migration-generator.d.ts.map +1 -0
  28. package/dist/core/operations/migration-generator.js +202 -0
  29. package/dist/core/operations/migration-generator.js.map +1 -0
  30. package/dist/core/operations/provision-operations.d.ts +19 -0
  31. package/dist/core/operations/provision-operations.d.ts.map +1 -1
  32. package/dist/core/operations/provision-operations.js +299 -30
  33. package/dist/core/operations/provision-operations.js.map +1 -1
  34. package/dist/core/operations/scaffold-plan.d.ts.map +1 -1
  35. package/dist/core/operations/scaffold-plan.js +13 -1
  36. package/dist/core/operations/scaffold-plan.js.map +1 -1
  37. package/dist/core/project/capabilities.js +1 -1
  38. package/dist/core/project/capabilities.js.map +1 -1
  39. package/dist/core/project/infra.d.ts +4 -0
  40. package/dist/core/project/infra.d.ts.map +1 -1
  41. package/dist/core/project/infra.js +19 -1
  42. package/dist/core/project/infra.js.map +1 -1
  43. package/dist/core/project/migrations.d.ts +53 -0
  44. package/dist/core/project/migrations.d.ts.map +1 -0
  45. package/dist/core/project/migrations.js +262 -0
  46. package/dist/core/project/migrations.js.map +1 -0
  47. package/dist/core/project/workflows.d.ts.map +1 -1
  48. package/dist/core/project/workflows.js +7 -3
  49. package/dist/core/project/workflows.js.map +1 -1
  50. package/dist/machine/index.d.ts.map +1 -1
  51. package/dist/machine/index.js +6 -0
  52. package/dist/machine/index.js.map +1 -1
  53. package/dist/mcp/index.d.ts.map +1 -1
  54. package/dist/mcp/index.js +11 -2
  55. package/dist/mcp/index.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/__tests__/agent-loop-phase34.test.ts +139 -0
  58. package/src/__tests__/init.test.ts +8 -0
  59. package/src/__tests__/migration.test.ts +116 -0
  60. package/src/__tests__/plan-apply.test.ts +132 -0
  61. package/src/__tests__/scaffold.test.ts +7 -4
  62. package/src/cli/commands/create-migration.ts +13 -0
  63. package/src/cli/commands/index.ts +2 -0
  64. package/src/cli/commands/init.ts +2 -0
  65. package/src/cli/commands/migrations.ts +20 -0
  66. package/src/cli/commands/provision.ts +115 -184
  67. package/src/cli/commands/scaffold.ts +6 -145
  68. package/src/cli/index.ts +4 -0
  69. package/src/core/operations/migration-generator.ts +206 -0
  70. package/src/core/operations/provision-operations.ts +391 -44
  71. package/src/core/operations/scaffold-plan.ts +17 -1
  72. package/src/core/project/capabilities.ts +1 -1
  73. package/src/core/project/infra.ts +23 -1
  74. package/src/core/project/migrations.ts +274 -0
  75. package/src/core/project/workflows.ts +7 -3
  76. package/src/machine/index.ts +7 -1
  77. package/src/mcp/index.ts +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swallowkit",
3
- "version": "1.0.3",
3
+ "version": "1.1.1",
4
4
  "description": "Type-safe schema-driven development toolkit for Next.js applications on Azure",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,6 +16,9 @@ import { parseModelFile } from "../core/scaffold/model-parser";
16
16
  import { inspectInfra } from "../core/project/infra";
17
17
  import { loadCustomVerifyChecks, compactVerifyResult, runVerify, VerifyResult } from "../core/verify";
18
18
  import { buildAgentSkills, buildWorkflowDocs, writeAgentSkills, writeWorkflowDocs } from "../core/project/workflows";
19
+ import { applyProvisionOperation, planProvisionOperation } from "../core/operations/provision-operations";
20
+ import { createCustomMigration, initializeLegacyMigrations } from "../core/operations/migration-generator";
21
+ import { createMigrationManifest, encodeMigrationState, getMigrationTagKey, saveMigrationManifest } from "../core/project/migrations";
19
22
 
20
23
  jest.mock("child_process", () => {
21
24
  const actual = jest.requireActual<typeof import("child_process")>("child_process");
@@ -300,6 +303,142 @@ describe("agent loop phase 3/4", () => {
300
303
  expect(applyMissing.response.status).toBe("blocked");
301
304
  });
302
305
 
306
+ it("requires explicit adoption for an existing untagged resource group", async () => {
307
+ createProjectFixture(tempDir);
308
+ writeFile(path.join(tempDir, "infra", "main.bicep"), SAMPLE_MAIN_BICEP);
309
+ writeFile(path.join(tempDir, "infra", "main.parameters.json"), JSON.stringify({ parameters: { projectName: { value: "sample-app" } } }));
310
+ initializeLegacyMigrations(tempDir);
311
+
312
+ (childProcess.spawnSync as unknown as any).mockImplementation((_file: string, args: string[]) => {
313
+ if (args[0] === "--version") return { status: 0, stdout: "azure-cli", stderr: "" };
314
+ if (args[0] === "group" && args[1] === "exists") return { status: 0, stdout: "true\n", stderr: "" };
315
+ if (args[0] === "group" && args[1] === "show") return { status: 0, stdout: JSON.stringify({ id: "/subscriptions/test/resourceGroups/rg-sample", tags: {} }), stderr: "" };
316
+ return { status: 1, stdout: "", stderr: "unexpected" };
317
+ });
318
+
319
+ const plan = await planProvisionOperation({ resourceGroup: "rg-sample", location: "japaneast", swaLocation: "eastasia" });
320
+
321
+ expect(plan.mode).toBe("adoption-required");
322
+ expect(plan.commands).toEqual([]);
323
+ });
324
+
325
+ it("adopts a legacy baseline without deploying main.bicep when what-if only modifies resources", async () => {
326
+ createProjectFixture(tempDir);
327
+ writeFile(path.join(tempDir, "infra", "main.bicep"), SAMPLE_MAIN_BICEP);
328
+ writeFile(path.join(tempDir, "infra", "main.parameters.json"), JSON.stringify({ parameters: { projectName: { value: "sample-app" } } }));
329
+ initializeLegacyMigrations(tempDir);
330
+
331
+ (childProcess.spawnSync as unknown as any).mockImplementation((_file: string, args: string[]) => {
332
+ if (args[0] === "--version") return { status: 0, stdout: "azure-cli", stderr: "" };
333
+ if (args[0] === "group" && args[1] === "exists") return { status: 0, stdout: "true\n", stderr: "" };
334
+ if (args[0] === "group" && args[1] === "show") return { status: 0, stdout: JSON.stringify({ id: "/subscriptions/test/resourceGroups/rg-sample", tags: {} }), stderr: "" };
335
+ if (args[0] === "deployment" && args[2] === "what-if") {
336
+ return { status: 0, stdout: JSON.stringify({ changes: [{ changeType: "Modify", resourceId: "/functions/sample" }] }), stderr: "" };
337
+ }
338
+ return { status: 1, stdout: "", stderr: "unexpected" };
339
+ });
340
+
341
+ const plan = await planProvisionOperation({
342
+ resourceGroup: "rg-sample",
343
+ location: "japaneast",
344
+ swaLocation: "eastasia",
345
+ adoptExisting: true,
346
+ baseline: 0,
347
+ whatIf: true,
348
+ });
349
+
350
+ expect(plan.mode).toBe("adopt");
351
+ expect(plan.commands).toHaveLength(1);
352
+ expect(plan.commands[0]).toContain("az tag update");
353
+ expect(plan.commands[0]).not.toContain("deployment group create");
354
+ });
355
+
356
+ it("recovers an interrupted bootstrap by reconciling before recording baseline state", async () => {
357
+ createProjectFixture(tempDir);
358
+ writeFile(path.join(tempDir, "infra", "main.bicep"), SAMPLE_MAIN_BICEP);
359
+ writeFile(path.join(tempDir, "infra", "main.parameters.json"), JSON.stringify({ parameters: { projectName: { value: "sample-app" } } }));
360
+ saveMigrationManifest(createMigrationManifest(tempDir, { projectId: "new-project" }), tempDir);
361
+
362
+ (childProcess.spawnSync as unknown as any).mockImplementation((_file: string, args: string[]) => {
363
+ if (args[0] === "--version") return { status: 0, stdout: "azure-cli", stderr: "" };
364
+ if (args[0] === "group" && args[1] === "exists") return { status: 0, stdout: "true\n", stderr: "" };
365
+ if (args[0] === "group" && args[1] === "show") return { status: 0, stdout: JSON.stringify({ id: "/subscriptions/test/resourceGroups/rg-sample", tags: {} }), stderr: "" };
366
+ if (args[0] === "deployment" && args[2] === "what-if") return { status: 0, stdout: JSON.stringify({ changes: [] }), stderr: "" };
367
+ return { status: 1, stdout: "", stderr: "unexpected" };
368
+ });
369
+
370
+ const plan = await planProvisionOperation({
371
+ resourceGroup: "rg-sample",
372
+ location: "japaneast",
373
+ swaLocation: "eastasia",
374
+ reconcile: true,
375
+ });
376
+
377
+ expect(plan.mode).toBe("reconcile");
378
+ expect(plan.commands.some((command) => command.includes("deployment group create"))).toBe(true);
379
+ expect(plan.commands.at(-1)).toContain("tag update");
380
+ expect(plan.manifestAfterApply?.baseline.legacy).toBe(false);
381
+ });
382
+
383
+ it("plans only migrations newer than the Azure tag", async () => {
384
+ createProjectFixture(tempDir);
385
+ writeFile(path.join(tempDir, "infra", "main.bicep"), SAMPLE_MAIN_BICEP);
386
+ writeFile(path.join(tempDir, "infra", "main.parameters.json"), JSON.stringify({ parameters: { projectName: { value: "sample-app" } } }));
387
+ const manifest = initializeLegacyMigrations(tempDir);
388
+ createCustomMigration("add-search", tempDir);
389
+ const tagValue = encodeMigrationState({ schemaVersion: 1, version: 0, checksum: manifest.baseline.checksum });
390
+
391
+ (childProcess.spawnSync as unknown as any).mockImplementation((_file: string, args: string[]) => {
392
+ if (args[0] === "--version") return { status: 0, stdout: "azure-cli", stderr: "" };
393
+ if (args[0] === "group" && args[1] === "exists") return { status: 0, stdout: "true\n", stderr: "" };
394
+ if (args[0] === "group" && args[1] === "show") {
395
+ const tagKey = getMigrationTagKey(manifest.projectId);
396
+ return { status: 0, stdout: JSON.stringify({ id: "/subscriptions/test/resourceGroups/rg-sample", tags: { [tagKey]: tagValue } }), stderr: "" };
397
+ }
398
+ return { status: 1, stdout: "", stderr: "unexpected" };
399
+ });
400
+
401
+ const plan = await planProvisionOperation({ resourceGroup: "rg-sample", location: "japaneast", swaLocation: "eastasia" });
402
+
403
+ expect(plan.mode).toBe("migrate");
404
+ expect(plan.pendingMigrations.map((migration) => migration.version)).toEqual([1]);
405
+ expect(plan.commands.filter((command) => command.includes("deployment group create"))).toHaveLength(1);
406
+ expect(plan.commands.some((command) => command.includes("tag update") && command.includes("--operation Merge"))).toBe(true);
407
+ });
408
+
409
+ it("applies only the pending migration and advances its tag", async () => {
410
+ createProjectFixture(tempDir);
411
+ writeFile(path.join(tempDir, "infra", "main.bicep"), SAMPLE_MAIN_BICEP);
412
+ writeFile(path.join(tempDir, "infra", "main.parameters.json"), JSON.stringify({ parameters: { projectName: { value: "sample-app" } } }));
413
+ const manifest = initializeLegacyMigrations(tempDir);
414
+ createCustomMigration("add-search", tempDir);
415
+ const tagKey = getMigrationTagKey(manifest.projectId);
416
+ let tagValue = encodeMigrationState({ schemaVersion: 1, version: 0, checksum: manifest.baseline.checksum });
417
+ const deployedTemplates: string[] = [];
418
+
419
+ (childProcess.spawnSync as unknown as any).mockImplementation((_file: string, args: string[]) => {
420
+ if (args[0] === "--version") return { status: 0, stdout: "azure-cli", stderr: "" };
421
+ if (args[0] === "group" && args[1] === "exists") return { status: 0, stdout: "true\n", stderr: "" };
422
+ if (args[0] === "group" && args[1] === "show") return { status: 0, stdout: JSON.stringify({ id: "/subscriptions/test/resourceGroups/rg-sample", tags: { [tagKey]: tagValue } }), stderr: "" };
423
+ if (args[0] === "deployment" && args[2] === "create") {
424
+ deployedTemplates.push(args[args.indexOf("--template-file") + 1]);
425
+ return { status: 0, stdout: JSON.stringify({ properties: { outputs: {} } }), stderr: "" };
426
+ }
427
+ if (args[0] === "tag" && args[1] === "update") {
428
+ tagValue = args[args.indexOf("--tags") + 1].slice(tagKey.length + 1);
429
+ return { status: 0, stdout: "{}", stderr: "" };
430
+ }
431
+ return { status: 1, stdout: "", stderr: `unexpected: ${args.join(" ")}` };
432
+ });
433
+
434
+ const plan = await planProvisionOperation({ resourceGroup: "rg-sample", location: "japaneast", swaLocation: "eastasia" });
435
+ const result = await applyProvisionOperation({ planId: plan.planId, approve: true });
436
+
437
+ expect(result.executedCommands).toHaveLength(2);
438
+ expect(deployedTemplates).toEqual([path.join(tempDir, "infra", "migrations", "0001-add-search", "main.bicep")]);
439
+ expect(tagValue).toContain(":1:");
440
+ });
441
+
303
442
  it("rejects invalid provision inputs", async () => {
304
443
  createProjectFixture(tempDir);
305
444
  writeFile(path.join(tempDir, "infra", "main.bicep"), SAMPLE_MAIN_BICEP);
@@ -296,10 +296,18 @@ describe("Infrastructure generation", () => {
296
296
  expect(fs.existsSync(path.join(projectDir, "infra", "modules", "private-endpoint-cosmos.bicep"))).toBe(true);
297
297
 
298
298
  const mainBicep = fs.readFileSync(path.join(projectDir, "infra", "main.bicep"), "utf-8");
299
+ const migrationManifest = JSON.parse(
300
+ fs.readFileSync(path.join(projectDir, "infra", "migrations", "manifest.json"), "utf-8")
301
+ );
299
302
  expect(mainBicep).toContain("param enableVNet bool = false");
300
303
  expect(mainBicep).toContain("module vnet 'modules/vnet.bicep' = if (enableVNet)");
301
304
  expect(mainBicep).toContain("functionsAppName: functionsFlex.outputs.name");
302
305
  expect(mainBicep).not.toContain("functionsHostKey:");
306
+ expect(migrationManifest).toMatchObject({
307
+ schemaVersion: 1,
308
+ baseline: { version: 0, legacy: false },
309
+ migrations: [],
310
+ });
303
311
  },
304
312
  );
305
313
  });
@@ -0,0 +1,116 @@
1
+ import * as fs from "fs";
2
+ import * as os from "os";
3
+ import * as path from "path";
4
+ import {
5
+ checksumAtVersion,
6
+ collectLegacyBaselineFiles,
7
+ createMigrationManifest,
8
+ decodeMigrationState,
9
+ encodeMigrationState,
10
+ getMigrationTagKey,
11
+ findBaselineDrift,
12
+ loadMigrationManifest,
13
+ resolveMigrations,
14
+ saveMigrationManifest,
15
+ selectPendingMigrations,
16
+ } from "../core/project/migrations";
17
+
18
+ function writeFile(filePath: string, content: string): void {
19
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
20
+ fs.writeFileSync(filePath, content, "utf-8");
21
+ }
22
+
23
+ describe("infrastructure migrations", () => {
24
+ let projectRoot: string;
25
+
26
+ beforeEach(() => {
27
+ projectRoot = fs.mkdtempSync(path.join(os.tmpdir(), "swallowkit-migrations-"));
28
+ writeFile(path.join(projectRoot, "infra", "main.bicep"), "targetScope = 'resourceGroup'\n");
29
+ writeFile(path.join(projectRoot, "infra", "main.parameters.json"), '{"parameters":{}}\n');
30
+ writeFile(path.join(projectRoot, "infra", "modules", "functions.bicep"), "// functions\n");
31
+ });
32
+
33
+ afterEach(() => fs.rmSync(projectRoot, { recursive: true, force: true }));
34
+
35
+ it("records a deterministic legacy baseline without including migrations", () => {
36
+ writeFile(path.join(projectRoot, "infra", "migrations", "ignored.bicep"), "// ignored\n");
37
+
38
+ const first = createMigrationManifest(projectRoot, { legacy: true, projectId: "project-one" });
39
+ const second = createMigrationManifest(projectRoot, { legacy: true, projectId: "project-one" });
40
+
41
+ expect(first.baseline.legacy).toBe(true);
42
+ expect(first.baseline.files.map((file) => file.path)).toEqual([
43
+ "infra/main.bicep",
44
+ "infra/main.parameters.json",
45
+ "infra/modules/functions.bicep",
46
+ ]);
47
+ expect(first.baseline.checksum).toBe(second.baseline.checksum);
48
+ });
49
+
50
+ it("saves and loads a manifest without overwriting it", () => {
51
+ const manifest = createMigrationManifest(projectRoot, { legacy: true, projectId: "project-one" });
52
+ saveMigrationManifest(manifest, projectRoot);
53
+
54
+ expect(loadMigrationManifest(projectRoot)).toEqual(manifest);
55
+ expect(() => saveMigrationManifest(manifest, projectRoot)).toThrow(/already exists/);
56
+ });
57
+
58
+ it("computes cumulative checksums and selects only pending migrations", () => {
59
+ const manifest = createMigrationManifest(projectRoot, { projectId: "project-one" });
60
+ writeFile(path.join(projectRoot, "infra", "migrations", "0001-products", "main.bicep"), "resource product 'Example/items@2020-01-01' = {}\n");
61
+ writeFile(path.join(projectRoot, "infra", "migrations", "0002-search", "main.bicep"), "resource search 'Example/search@2020-01-01' = {}\n");
62
+ manifest.migrations = [
63
+ { version: 1, slug: "products", template: "infra/migrations/0001-products/main.bicep", source: "model", sourceModel: "Product" },
64
+ { version: 2, slug: "search", template: "infra/migrations/0002-search/main.bicep", source: "custom" },
65
+ ];
66
+
67
+ const resolved = resolveMigrations(manifest, projectRoot);
68
+ const pending = selectPendingMigrations(manifest, {
69
+ schemaVersion: 1,
70
+ version: 1,
71
+ checksum: resolved[0].cumulativeChecksum,
72
+ }, projectRoot);
73
+
74
+ expect(resolved[0].checksum).toHaveLength(64);
75
+ expect(resolved[1].cumulativeChecksum).not.toBe(resolved[0].cumulativeChecksum);
76
+ expect(pending.map((migration) => migration.version)).toEqual([2]);
77
+ expect(checksumAtVersion(manifest, 0, projectRoot)).toBe(manifest.baseline.checksum);
78
+ });
79
+
80
+ it("rejects gaps, traversal, remote-ahead state, and checksum drift", () => {
81
+ const manifest = createMigrationManifest(projectRoot, { projectId: "project-one" });
82
+ manifest.migrations = [{ version: 2, slug: "bad", template: "../bad.bicep", source: "custom" }];
83
+ expect(() => resolveMigrations(manifest, projectRoot)).toThrow(/contiguous/);
84
+
85
+ manifest.migrations = [];
86
+ expect(() => selectPendingMigrations(manifest, {
87
+ schemaVersion: 1,
88
+ version: 1,
89
+ checksum: manifest.baseline.checksum,
90
+ }, projectRoot)).toThrow(/Azure is at migration 1/);
91
+ expect(() => selectPendingMigrations(manifest, {
92
+ schemaVersion: 1,
93
+ version: 0,
94
+ checksum: "0".repeat(64),
95
+ }, projectRoot)).toThrow(/does not match/);
96
+ });
97
+
98
+ it("round-trips project-specific Azure tag state", () => {
99
+ const state = { schemaVersion: 1 as const, version: 12, checksum: "a".repeat(64) };
100
+ expect(decodeMigrationState(encodeMigrationState(state))).toEqual(state);
101
+ expect(getMigrationTagKey("project-one")).toMatch(/^swallowkit-migration-[a-f0-9]{12}$/);
102
+ expect(getMigrationTagKey("project-one")).not.toBe(getMigrationTagKey("project-two"));
103
+ expect(() => decodeMigrationState("broken")).toThrow(/invalid/);
104
+ });
105
+
106
+ it("collects current baseline file hashes", () => {
107
+ expect(collectLegacyBaselineFiles(projectRoot)).toHaveLength(3);
108
+ });
109
+
110
+ it("detects edits to baseline files after initialization", () => {
111
+ const manifest = createMigrationManifest(projectRoot, { projectId: "project-one" });
112
+ writeFile(path.join(projectRoot, "infra", "main.bicep"), "// changed\n");
113
+
114
+ expect(findBaselineDrift(manifest, projectRoot)).toEqual(["infra/main.bicep"]);
115
+ });
116
+ });
@@ -5,6 +5,13 @@ import * as childProcess from "child_process";
5
5
  import { EventEmitter } from "events";
6
6
  import { runMachineCli } from "../machine";
7
7
  import { getCSharpSchemaModelPath } from "../core/scaffold/native-schema-generator";
8
+ import { initializeLegacyMigrations } from "../core/operations/migration-generator";
9
+ import {
10
+ MIGRATION_MANIFEST_PATH,
11
+ createMigrationManifest,
12
+ loadMigrationManifest,
13
+ saveMigrationManifest,
14
+ } from "../core/project/migrations";
8
15
 
9
16
  jest.mock("child_process", () => {
10
17
  const actual = jest.requireActual<typeof import("child_process")>("child_process");
@@ -67,6 +74,15 @@ function createProjectFixture(rootDir: string): void {
67
74
  );
68
75
  }
69
76
 
77
+ function createInfrastructureFixture(rootDir: string): void {
78
+ writeFile(path.join(rootDir, "infra", "main.bicep"), "targetScope = 'resourceGroup'\n");
79
+ writeFile(
80
+ path.join(rootDir, "infra", "main.parameters.json"),
81
+ JSON.stringify({ parameters: { projectName: { value: "sample-app" } } }, null, 2)
82
+ );
83
+ writeFile(path.join(rootDir, "infra", "modules", "cosmosdb.bicep"), "// baseline cosmos\n");
84
+ }
85
+
70
86
  function createNativeBackendFixture(rootDir: string, backendLanguage: "csharp" | "python"): void {
71
87
  createProjectFixture(rootDir);
72
88
  writeFile(
@@ -192,6 +208,122 @@ describe("plan / apply / drift / verify machine commands", () => {
192
208
  ).toBe(true);
193
209
  });
194
210
 
211
+ it("updates a ledger-unregistered legacy manifest without approval and preserves baseline identity", async () => {
212
+ createProjectFixture(tempDir);
213
+ createInfrastructureFixture(tempDir);
214
+ const original = initializeLegacyMigrations(tempDir);
215
+ fs.rmSync(path.join(tempDir, ".swallowkit", "artifacts.json"));
216
+ expect(fs.existsSync(path.join(tempDir, ".swallowkit", "artifacts.json"))).toBe(false);
217
+
218
+ const plan = await runMachine(machineArgs("plan", "scaffold", "todo", "--api-only"));
219
+
220
+ expect(plan.exitCode).toBe(0);
221
+ expect(plan.response.ok).toBe(true);
222
+ expect(plan.response.status).toBe("complete");
223
+ expect(plan.response.data.requiresApproval).toBe(false);
224
+ expect(plan.response.data.conflicts).toEqual([]);
225
+ expect(plan.response.data.operations).toEqual(expect.arrayContaining([
226
+ expect.objectContaining({
227
+ path: MIGRATION_MANIFEST_PATH.replace(/\\/g, "/"),
228
+ action: "update",
229
+ ownership: "metadata",
230
+ conflict: false,
231
+ }),
232
+ expect.objectContaining({
233
+ path: "infra/migrations/0001-create-todo-container/main.bicep",
234
+ action: "create",
235
+ conflict: false,
236
+ }),
237
+ ]));
238
+
239
+ const apply = await runMachine(machineArgs("apply", "scaffold", "--plan", plan.response.data.planId));
240
+ expect(apply.exitCode).toBe(0);
241
+ expect(apply.response.ok).toBe(true);
242
+
243
+ const updated = loadMigrationManifest(tempDir);
244
+ expect(updated.projectId).toBe(original.projectId);
245
+ expect(updated.baseline).toEqual(original.baseline);
246
+ expect(updated.migrations).toEqual([
247
+ expect.objectContaining({
248
+ version: 1,
249
+ slug: "create-todo-container",
250
+ source: "model",
251
+ sourceModel: "Todo",
252
+ template: "infra/migrations/0001-create-todo-container/main.bicep",
253
+ }),
254
+ ]);
255
+ });
256
+
257
+ it("uses the same approval-free manifest update for a non-legacy project", async () => {
258
+ createProjectFixture(tempDir);
259
+ createInfrastructureFixture(tempDir);
260
+ const original = createMigrationManifest(tempDir, { legacy: false, projectId: "new-project" });
261
+ saveMigrationManifest(original, tempDir);
262
+
263
+ const plan = await runMachine(machineArgs("plan", "scaffold", "todo", "--api-only"));
264
+
265
+ expect(plan.exitCode).toBe(0);
266
+ expect(plan.response.data.requiresApproval).toBe(false);
267
+ expect(plan.response.data.operations).toContainEqual(expect.objectContaining({
268
+ path: MIGRATION_MANIFEST_PATH.replace(/\\/g, "/"),
269
+ action: "update",
270
+ conflict: false,
271
+ }));
272
+ });
273
+
274
+ it.each([
275
+ {
276
+ name: "invalid manifest",
277
+ arrange: (rootDir: string) => writeFile(path.join(rootDir, MIGRATION_MANIFEST_PATH), "{ invalid json\n"),
278
+ code: "invalid-migration-manifest",
279
+ },
280
+ {
281
+ name: "baseline drift",
282
+ arrange: (rootDir: string) => {
283
+ initializeLegacyMigrations(rootDir);
284
+ writeFile(path.join(rootDir, "infra", "main.bicep"), "// changed after baseline\n");
285
+ },
286
+ code: "baseline-drift",
287
+ },
288
+ {
289
+ name: "missing migration template",
290
+ arrange: (rootDir: string) => {
291
+ const manifest = createMigrationManifest(rootDir, { legacy: true, projectId: "legacy-project" });
292
+ manifest.migrations.push({
293
+ version: 1,
294
+ slug: "missing-template",
295
+ template: "infra/migrations/0001-missing-template/main.bicep",
296
+ source: "custom",
297
+ });
298
+ saveMigrationManifest(manifest, rootDir);
299
+ },
300
+ code: "migration-file-not-found",
301
+ },
302
+ {
303
+ name: "discontinuous migration versions",
304
+ arrange: (rootDir: string) => {
305
+ const manifest = createMigrationManifest(rootDir, { legacy: true, projectId: "legacy-project" });
306
+ const template = "infra/migrations/0002-version-gap/main.bicep";
307
+ writeFile(path.join(rootDir, template), "targetScope = 'resourceGroup'\n");
308
+ manifest.migrations.push({ version: 2, slug: "version-gap", template, source: "custom" });
309
+ saveMigrationManifest(manifest, rootDir);
310
+ },
311
+ code: "invalid-migration-manifest",
312
+ },
313
+ ])("fails closed for $name before planning scaffold writes", async ({ arrange, code }) => {
314
+ createProjectFixture(tempDir);
315
+ createInfrastructureFixture(tempDir);
316
+ arrange(tempDir);
317
+
318
+ const plan = await runMachine(machineArgs("plan", "scaffold", "todo", "--api-only"));
319
+
320
+ expect(plan.exitCode).toBe(1);
321
+ expect(plan.response.ok).toBe(false);
322
+ expect(plan.response.status).toBe("blocked");
323
+ expect(plan.response.error.code).toBe(code);
324
+ expect(fs.existsSync(path.join(tempDir, "infra", "migrations", "0002-create-todo-container"))).toBe(false);
325
+ });
326
+
195
327
  it("plans and applies multiple models in one command (scaffold batch)", async () => {
196
328
  createProjectFixture(tempDir);
197
329
  writeFile(path.join(tempDir, "shared", "models", "note.ts"), createModelSource("Note"));
@@ -16,6 +16,7 @@ import {
16
16
  getPythonSchemaModelPath,
17
17
  } from "../core/scaffold/native-schema-generator";
18
18
  import { createBasicModelInfo } from "./fixtures";
19
+ import { createMigrationManifest, saveMigrationManifest } from "../core/project/migrations";
19
20
 
20
21
  describe("authenticated UI scaffold layouts", () => {
21
22
  const originalCwd = process.cwd();
@@ -215,6 +216,7 @@ describe("generateCosmosContainer", () => {
215
216
  process.chdir(tempDir);
216
217
  fs.mkdirSync(path.join(tempDir, "infra", "containers"), { recursive: true });
217
218
  fs.writeFileSync(path.join(tempDir, "infra", "main.bicep"), "module cosmosDbServerless 'modules/cosmosdb-serverless.bicep' = if (cosmosDbMode == 'serverless') {\n name: 'cosmosDb'\n}\n");
219
+ saveMigrationManifest(createMigrationManifest(tempDir, { projectId: "test-project" }), tempDir);
218
220
  });
219
221
 
220
222
  afterEach(() => {
@@ -222,18 +224,19 @@ describe("generateCosmosContainer", () => {
222
224
  fs.rmSync(tempDir, { recursive: true, force: true });
223
225
  });
224
226
 
225
- it("generates container templates without container-level throughput settings", async () => {
227
+ it("generates a container migration without changing main.bicep", async () => {
228
+ const mainBefore = fs.readFileSync(path.join(tempDir, "infra", "main.bicep"), "utf-8");
226
229
  await generateCosmosContainer({ name: "SurveyResponse", partitionKey: "/id" });
227
230
 
228
- const containerFilePath = path.join(tempDir, "infra", "containers", "survey-response-container.bicep");
231
+ const containerFilePath = path.join(tempDir, "infra", "migrations", "0001-create-survey-response-container", "main.bicep");
229
232
  const containerContent = fs.readFileSync(containerFilePath, "utf-8");
230
233
  const mainContent = fs.readFileSync(path.join(tempDir, "infra", "main.bicep"), "utf-8");
231
234
 
232
235
  expect(containerContent).toContain("resource container");
236
+ expect(containerContent).toContain("existing");
233
237
  expect(containerContent).not.toContain("throughput");
234
238
  expect(containerContent).not.toContain("options:");
235
- expect(mainContent).toContain("module surveyResponseContainer 'containers/survey-response-container.bicep'");
236
- expect(mainContent).not.toContain("dependsOn");
239
+ expect(mainContent).toBe(mainBefore);
237
240
  });
238
241
  });
239
242
  describe("non-destructive native schema generation", () => {
@@ -0,0 +1,13 @@
1
+ import { Command } from "commander";
2
+ import { ensureSwallowKitProject } from "../../core/config";
3
+ import { createCustomMigration } from "../../core/operations/migration-generator";
4
+
5
+ export const createMigrationCommand = new Command("create-migration")
6
+ .description("Create a versioned Bicep migration for additional Azure resources")
7
+ .argument("<slug>", "Kebab-case migration name")
8
+ .action((slug: string) => {
9
+ ensureSwallowKitProject("create-migration");
10
+ const migration = createCustomMigration(slug);
11
+ console.log(`Created migration ${migration.version}: ${migration.template}`);
12
+ console.log("Edit the Bicep file, then run provision to plan and apply it.");
13
+ });
@@ -7,3 +7,5 @@ export { devCommand } from "./dev";
7
7
  export { devSeedsCommand } from "./dev-seeds";
8
8
  export { scaffoldCommand } from "./scaffold";
9
9
  export { createModelCommand } from "./create-model";
10
+ export { createMigrationCommand } from "./create-migration";
11
+ export { migrationsCommand } from "./migrations";
@@ -19,6 +19,7 @@ import {
19
19
  import { syncProjectManifest } from "../../core/project/manifest";
20
20
  import { writeWorkflowDocs, writeAgentSkills } from "../../core/project/workflows";
21
21
  import { writeAgentInstructionFiles } from "../../core/project/agent-instructions";
22
+ import { initializeNewProjectMigrations } from "../../core/operations/migration-generator";
22
23
  import {
23
24
  buildCSharpCodegenToolManifestSource,
24
25
  buildPythonCodegenRequirementsSource,
@@ -2759,6 +2760,7 @@ output privateDnsZoneId string = privateDnsZone.id
2759
2760
 
2760
2761
  console.log('✅ VNet module definitions created\n');
2761
2762
 
2763
+ initializeNewProjectMigrations(projectDir);
2762
2764
  console.log('✅ Infrastructure files created\n');
2763
2765
  }
2764
2766
 
@@ -0,0 +1,20 @@
1
+ import { Command } from "commander";
2
+ import { ensureSwallowKitProject } from "../../core/config";
3
+ import { initializeLegacyMigrations } from "../../core/operations/migration-generator";
4
+
5
+ export const migrationsCommand = new Command("migrations")
6
+ .description("Manage versioned Azure infrastructure migrations");
7
+
8
+ migrationsCommand
9
+ .command("init")
10
+ .description("Initialize migration tracking for an existing SwallowKit project")
11
+ .option("--legacy-baseline", "Record the current infra directory as version 0")
12
+ .action((options: { legacyBaseline?: boolean }) => {
13
+ ensureSwallowKitProject("migrations init");
14
+ if (!options.legacyBaseline) {
15
+ throw new Error("Existing projects must be initialized with --legacy-baseline.");
16
+ }
17
+ const manifest = initializeLegacyMigrations();
18
+ console.log(`Migration baseline 0 created for project ${manifest.projectId}.`);
19
+ console.log("Commit infra/migrations/manifest.json, then run provision with --adopt-existing --baseline 0.");
20
+ });