@databricks-solutions/lakebase-scm-utils 0.3.10 → 0.3.11
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/{pr-e-E4aP4j.d.cts → pr-D-eayWyJ.d.cts} +59 -1
- package/dist/{pr-e-E4aP4j.d.ts → pr-D-eayWyJ.d.ts} +59 -1
- package/dist/scripts/git/index.cjs +30 -14
- package/dist/scripts/git/index.d.cts +32 -1
- package/dist/scripts/git/index.d.ts +32 -1
- package/dist/scripts/git/index.js +28 -14
- package/dist/scripts/github/index.d.cts +2 -60
- package/dist/scripts/github/index.d.ts +2 -60
- package/dist/scripts/index.cjs +244 -76
- package/dist/scripts/index.d.cts +4 -4
- package/dist/scripts/index.d.ts +4 -4
- package/dist/scripts/index.js +239 -76
- package/dist/scripts/lakebase/ci-resolve-branch.cli.cjs +2 -2
- package/dist/scripts/lakebase/ci-resolve-branch.cli.js +2 -2
- package/dist/scripts/lakebase/collapse-heads.cli.cjs +2 -2
- package/dist/scripts/lakebase/collapse-heads.cli.js +2 -2
- package/dist/scripts/lakebase/detect-language.cli.cjs +2 -2
- package/dist/scripts/lakebase/detect-language.cli.js +2 -2
- package/dist/scripts/lakebase/doctor.cli.cjs +2 -2
- package/dist/scripts/lakebase/doctor.cli.js +2 -2
- package/dist/scripts/lakebase/get-connection.cli.cjs +2 -2
- package/dist/scripts/lakebase/get-connection.cli.js +2 -2
- package/dist/scripts/lakebase/index.cjs +256 -77
- package/dist/scripts/lakebase/index.d.cts +74 -2
- package/dist/scripts/lakebase/index.d.ts +74 -2
- package/dist/scripts/lakebase/index.js +253 -77
- package/dist/scripts/lakebase/infra-runner.cli.cjs +2 -2
- package/dist/scripts/lakebase/infra-runner.cli.js +2 -2
- package/dist/scripts/lakebase/new-migration.cli.cjs +2 -2
- package/dist/scripts/lakebase/new-migration.cli.js +2 -2
- package/dist/scripts/lakebase/schema-diff.cli.cjs +2 -2
- package/dist/scripts/lakebase/schema-diff.cli.js +2 -2
- package/dist/scripts/lakebase/schema-migrate.cli.cjs +2 -2
- package/dist/scripts/lakebase/schema-migrate.cli.js +2 -2
- package/dist/scripts/lakebase/scm-claim-feature.cli.cjs +2 -2
- package/dist/scripts/lakebase/scm-claim-feature.cli.js +2 -2
- package/dist/scripts/lakebase/scm-doctor.cli.cjs +2 -2
- package/dist/scripts/lakebase/scm-doctor.cli.js +2 -2
- package/dist/scripts/lakebase/scm-merge.cli.cjs +2 -2
- package/dist/scripts/lakebase/scm-merge.cli.js +2 -2
- package/dist/scripts/lakebase/scm-reconcile-tier.cli.cjs +2 -2
- package/dist/scripts/lakebase/scm-reconcile-tier.cli.js +2 -2
- package/dist/scripts/util/index.cjs +2 -2
- package/dist/scripts/util/index.js +2 -2
- package/package.json +1 -1
- package/scripts/git/commit-push.ts +60 -14
- package/scripts/lakebase/create-preflight.ts +213 -1
- package/scripts/lakebase/create-project.ts +98 -30
|
@@ -78982,6 +78982,7 @@ __export(lakebase_exports, {
|
|
|
78982
78982
|
catalogExists: () => catalogExists,
|
|
78983
78983
|
catalogExplorerUrl: () => catalogExplorerUrl,
|
|
78984
78984
|
checkDatabricksAuth: () => checkDatabricksAuth,
|
|
78985
|
+
checkGitHubPreflight: () => checkGitHubPreflight,
|
|
78985
78986
|
checkGitHubWorkflowScope: () => checkGitHubWorkflowScope,
|
|
78986
78987
|
checkoutPaired: () => checkoutPaired,
|
|
78987
78988
|
claimFeatureBranch: () => claimFeatureBranch,
|
|
@@ -78995,6 +78996,7 @@ __export(lakebase_exports, {
|
|
|
78995
78996
|
createPairedBranch: () => createPairedBranch,
|
|
78996
78997
|
createPerfPairedBranch: () => createPerfPairedBranch,
|
|
78997
78998
|
createProject: () => createProject,
|
|
78999
|
+
createRollbackLedger: () => createRollbackLedger,
|
|
78998
79000
|
createTestPairedBranch: () => createTestPairedBranch,
|
|
78999
79001
|
createUatPairedBranch: () => createUatPairedBranch,
|
|
79000
79002
|
cutBackup: () => cutBackup,
|
|
@@ -79164,6 +79166,7 @@ __export(lakebase_exports, {
|
|
|
79164
79166
|
waitForBranchReady: () => waitForBranchReady,
|
|
79165
79167
|
waitForCi: () => waitForCi,
|
|
79166
79168
|
warmAndVerifyKit: () => warmAndVerifyKit,
|
|
79169
|
+
withCreateRollback: () => withCreateRollback,
|
|
79167
79170
|
withLakebaseRollback: () => withLakebaseRollback,
|
|
79168
79171
|
workflowStateFileExists: () => workflowStateFileExists,
|
|
79169
79172
|
writeEnvFile: () => writeEnvFile,
|
|
@@ -81640,8 +81643,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
|
|
|
81640
81643
|
var cached;
|
|
81641
81644
|
function substrateSelfVersion() {
|
|
81642
81645
|
if (cached !== void 0) return cached;
|
|
81643
|
-
if ("0.3.
|
|
81644
|
-
cached = "0.3.
|
|
81646
|
+
if ("0.3.11".length > 0) {
|
|
81647
|
+
cached = "0.3.11";
|
|
81645
81648
|
return cached;
|
|
81646
81649
|
}
|
|
81647
81650
|
cached = "unknown";
|
|
@@ -90221,6 +90224,26 @@ async function createRepo(name, opts = {}) {
|
|
|
90221
90224
|
wrap2(err, `Failed to create repository "${name}"`);
|
|
90222
90225
|
}
|
|
90223
90226
|
}
|
|
90227
|
+
async function deleteRepo(name) {
|
|
90228
|
+
try {
|
|
90229
|
+
const { owner, repo } = parseOwnerRepo(name);
|
|
90230
|
+
const ctx = await newContext();
|
|
90231
|
+
await ctx.octokit.rest.repos.delete({ owner, repo });
|
|
90232
|
+
} catch (err) {
|
|
90233
|
+
wrap2(err, `Failed to delete repository "${name}"`);
|
|
90234
|
+
}
|
|
90235
|
+
}
|
|
90236
|
+
async function repoExists(name) {
|
|
90237
|
+
try {
|
|
90238
|
+
const { owner, repo } = parseOwnerRepo(name);
|
|
90239
|
+
const ctx = await newContext();
|
|
90240
|
+
await ctx.octokit.rest.repos.get({ owner, repo });
|
|
90241
|
+
return true;
|
|
90242
|
+
} catch (err) {
|
|
90243
|
+
if (err instanceof RequestError && err.status === 404) return false;
|
|
90244
|
+
wrap2(err, `Failed to check repository "${name}"`);
|
|
90245
|
+
}
|
|
90246
|
+
}
|
|
90224
90247
|
async function getActionsEnabled(ownerRepo) {
|
|
90225
90248
|
try {
|
|
90226
90249
|
const { owner, repo } = parseOwnerRepo(ownerRepo);
|
|
@@ -90289,6 +90312,70 @@ async function checkGitHubWorkflowScope(probe = () => checkGitHubScopes(["workfl
|
|
|
90289
90312
|
return { ok: true };
|
|
90290
90313
|
}
|
|
90291
90314
|
}
|
|
90315
|
+
async function checkGitHubPreflight(input) {
|
|
90316
|
+
const warnings = [];
|
|
90317
|
+
const hard = input.hardScopes ?? ["repo", "workflow"];
|
|
90318
|
+
const advisory = input.advisoryScopes ?? ["delete_repo"];
|
|
90319
|
+
const currentUserProbe = input.currentUser ?? getCurrentUser;
|
|
90320
|
+
const scopesProbe = input.scopes ?? ((req) => checkGitHubScopes(req));
|
|
90321
|
+
const repoExistsProbe = input.repoExists ?? repoExists;
|
|
90322
|
+
let activeUser;
|
|
90323
|
+
try {
|
|
90324
|
+
activeUser = await currentUserProbe();
|
|
90325
|
+
} catch (err) {
|
|
90326
|
+
return {
|
|
90327
|
+
ok: false,
|
|
90328
|
+
warnings,
|
|
90329
|
+
reason: `GitHub authentication failed: ${err instanceof Error ? err.message : String(err)}. Sign in with \`gh auth login\`, or set GITHUB_TOKEN to a valid token, then re-run.`
|
|
90330
|
+
};
|
|
90331
|
+
}
|
|
90332
|
+
if (activeUser.toLowerCase() !== input.owner.toLowerCase()) {
|
|
90333
|
+
warnings.push(
|
|
90334
|
+
`Signed in to GitHub as "${activeUser}" but creating under "${input.owner}" (an org or another account); ensure "${activeUser}" can create repositories there.`
|
|
90335
|
+
);
|
|
90336
|
+
}
|
|
90337
|
+
try {
|
|
90338
|
+
const { granted, missing } = await scopesProbe([...hard, ...advisory]);
|
|
90339
|
+
if (granted !== null) {
|
|
90340
|
+
const missingHard = missing.filter((s2) => hard.includes(s2));
|
|
90341
|
+
const missingAdvisory = missing.filter((s2) => advisory.includes(s2));
|
|
90342
|
+
if (missingHard.length > 0) {
|
|
90343
|
+
return {
|
|
90344
|
+
ok: false,
|
|
90345
|
+
warnings,
|
|
90346
|
+
activeUser,
|
|
90347
|
+
reason: `GitHub token missing required scope(s): ${missingHard.join(", ")} (grants [${granted.join(", ") || "none"}]). Fix: gh auth refresh -h github.com -s ${[...hard].join(",")}`
|
|
90348
|
+
};
|
|
90349
|
+
}
|
|
90350
|
+
if (missingAdvisory.length > 0) {
|
|
90351
|
+
warnings.push(
|
|
90352
|
+
`GitHub token missing the ${missingAdvisory.join(", ")} scope \u2014 automatic rollback of the repo on a failed create is unavailable (you would delete it by hand). Grant it with: gh auth refresh -h github.com -s delete_repo`
|
|
90353
|
+
);
|
|
90354
|
+
}
|
|
90355
|
+
} else {
|
|
90356
|
+
warnings.push(
|
|
90357
|
+
"GitHub token scopes are not visible (fine-grained PAT or App token); cannot pre-verify repo/workflow access , the create will surface any gap when it pushes."
|
|
90358
|
+
);
|
|
90359
|
+
}
|
|
90360
|
+
} catch {
|
|
90361
|
+
warnings.push("Could not read GitHub token scopes (probe error); skipping the scope pre-check.");
|
|
90362
|
+
}
|
|
90363
|
+
try {
|
|
90364
|
+
if (await repoExistsProbe(`${input.owner}/${input.repoName}`)) {
|
|
90365
|
+
return {
|
|
90366
|
+
ok: false,
|
|
90367
|
+
warnings,
|
|
90368
|
+
activeUser,
|
|
90369
|
+
reason: `GitHub repo "${input.owner}/${input.repoName}" already exists. Pick a different project name, or delete the existing repo first.`
|
|
90370
|
+
};
|
|
90371
|
+
}
|
|
90372
|
+
} catch {
|
|
90373
|
+
warnings.push(
|
|
90374
|
+
`Could not check whether "${input.owner}/${input.repoName}" already exists (probe error); the create will fail clearly if it does.`
|
|
90375
|
+
);
|
|
90376
|
+
}
|
|
90377
|
+
return { ok: true, warnings, activeUser };
|
|
90378
|
+
}
|
|
90292
90379
|
function githubWorkflowScopePrereqMessage(reason) {
|
|
90293
90380
|
return "The GitHub token lacks the `workflow` OAuth scope, required to push the project's `.github/workflows/*` CI files. (Without this check, scaffolding runs all the way to the final push, is rejected, and rolls back.) Grant the scope, then re-run:\n - gh CLI: gh auth refresh -h github.com -s workflow\n - VS Code: re-sign in to GitHub and approve the workflow scope\n - token: set GITHUB_TOKEN to a PAT that includes the `workflow` scope" + (reason ? `
|
|
90294
90381
|
(${reason})` : "");
|
|
@@ -90354,6 +90441,53 @@ async function withLakebaseRollback(opts, fn) {
|
|
|
90354
90441
|
throw wrapped;
|
|
90355
90442
|
}
|
|
90356
90443
|
}
|
|
90444
|
+
function createRollbackLedger() {
|
|
90445
|
+
const steps = [];
|
|
90446
|
+
return {
|
|
90447
|
+
register: (label, undo) => {
|
|
90448
|
+
steps.push({ label, undo });
|
|
90449
|
+
},
|
|
90450
|
+
steps: () => steps
|
|
90451
|
+
};
|
|
90452
|
+
}
|
|
90453
|
+
async function withCreateRollback(ledger, opts, fn) {
|
|
90454
|
+
try {
|
|
90455
|
+
return await fn();
|
|
90456
|
+
} catch (err) {
|
|
90457
|
+
const report = opts.report ?? (() => {
|
|
90458
|
+
});
|
|
90459
|
+
const steps = [...ledger.steps()].reverse();
|
|
90460
|
+
const rolledBack = [];
|
|
90461
|
+
const failed = [];
|
|
90462
|
+
if (steps.length > 0) report(`Create failed; rolling back ${steps.length} created resource(s)...`);
|
|
90463
|
+
for (const s2 of steps) {
|
|
90464
|
+
try {
|
|
90465
|
+
report(` rolling back: ${s2.label}`);
|
|
90466
|
+
await s2.undo();
|
|
90467
|
+
rolledBack.push(s2.label);
|
|
90468
|
+
} catch (e2) {
|
|
90469
|
+
const m2 = e2 instanceof Error ? e2.message : String(e2);
|
|
90470
|
+
if (/not.?found/i.test(m2)) {
|
|
90471
|
+
rolledBack.push(s2.label);
|
|
90472
|
+
continue;
|
|
90473
|
+
}
|
|
90474
|
+
failed.push(`${s2.label} (${m2})`);
|
|
90475
|
+
}
|
|
90476
|
+
}
|
|
90477
|
+
const base = err instanceof Error ? err.message : String(err);
|
|
90478
|
+
const parts = [];
|
|
90479
|
+
if (rolledBack.length) parts.push(`rolled back: ${rolledBack.join(", ")}`);
|
|
90480
|
+
if (failed.length) {
|
|
90481
|
+
parts.push(
|
|
90482
|
+
`COULD NOT roll back: ${failed.join("; ")} , clean these up by hand before retrying the same name`
|
|
90483
|
+
);
|
|
90484
|
+
}
|
|
90485
|
+
const suffix = parts.length ? ` (${parts.join("; ")})` : "";
|
|
90486
|
+
const wrapped = err instanceof Error ? err : new Error(base);
|
|
90487
|
+
wrapped.message = `${base}${suffix}`;
|
|
90488
|
+
throw wrapped;
|
|
90489
|
+
}
|
|
90490
|
+
}
|
|
90357
90491
|
|
|
90358
90492
|
// scripts/lakebase/create-project.ts
|
|
90359
90493
|
init_cjs_shims();
|
|
@@ -90421,27 +90555,34 @@ To finish:
|
|
|
90421
90555
|
this.name = "WorkflowScopeError";
|
|
90422
90556
|
}
|
|
90423
90557
|
};
|
|
90424
|
-
async function
|
|
90425
|
-
await exec2("git add -A", { cwd:
|
|
90426
|
-
await exec2(`git commit -m ${JSON.stringify(
|
|
90427
|
-
cwd:
|
|
90558
|
+
async function commitInitial(projectDir, message) {
|
|
90559
|
+
await exec2("git add -A", { cwd: projectDir });
|
|
90560
|
+
await exec2(`git commit -m ${JSON.stringify(message)}`, {
|
|
90561
|
+
cwd: projectDir,
|
|
90428
90562
|
timeout: 3e4
|
|
90429
90563
|
});
|
|
90430
|
-
|
|
90564
|
+
}
|
|
90565
|
+
async function pushInitial(args) {
|
|
90431
90566
|
const remote = args.remote ?? "origin";
|
|
90432
90567
|
const branch = args.branch ?? "main";
|
|
90433
|
-
|
|
90434
|
-
|
|
90435
|
-
|
|
90436
|
-
|
|
90437
|
-
|
|
90438
|
-
|
|
90439
|
-
|
|
90440
|
-
|
|
90441
|
-
|
|
90568
|
+
const attempts = Math.max(1, args.attempts ?? 1);
|
|
90569
|
+
const sleep2 = args.sleep ?? ((ms) => new Promise((r2) => setTimeout(r2, ms)));
|
|
90570
|
+
const run = args.run ?? ((cmd, cwd) => exec2(cmd, { cwd, timeout: 3e4 }).then(() => void 0));
|
|
90571
|
+
let lastErr;
|
|
90572
|
+
for (let i2 = 1; i2 <= attempts; i2++) {
|
|
90573
|
+
try {
|
|
90574
|
+
await run(`git push -u ${remote} ${branch}`, args.projectDir);
|
|
90575
|
+
return;
|
|
90576
|
+
} catch (err) {
|
|
90577
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
90578
|
+
if (/without `?workflow`? scope|workflow scope/i.test(msg)) {
|
|
90579
|
+
throw new WorkflowScopeError(args.projectDir);
|
|
90580
|
+
}
|
|
90581
|
+
lastErr = err;
|
|
90582
|
+
if (i2 < attempts) await sleep2(args.delayMs ?? 1500);
|
|
90442
90583
|
}
|
|
90443
|
-
throw err;
|
|
90444
90584
|
}
|
|
90585
|
+
throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
|
|
90445
90586
|
}
|
|
90446
90587
|
|
|
90447
90588
|
// scripts/lakebase/scaffold.ts
|
|
@@ -92747,64 +92888,72 @@ async function createProject(input, progress) {
|
|
|
92747
92888
|
throw new Error(databricksAuthPrereqMessage(host, auth7.reason));
|
|
92748
92889
|
}
|
|
92749
92890
|
if (useGithub) {
|
|
92750
|
-
report("Checking GitHub token
|
|
92751
|
-
const
|
|
92752
|
-
|
|
92753
|
-
|
|
92754
|
-
|
|
92755
|
-
|
|
92756
|
-
|
|
92757
|
-
|
|
92758
|
-
|
|
92759
|
-
|
|
92760
|
-
|
|
92761
|
-
}
|
|
92762
|
-
|
|
92763
|
-
|
|
92764
|
-
|
|
92765
|
-
|
|
92766
|
-
|
|
92767
|
-
|
|
92768
|
-
|
|
92769
|
-
|
|
92770
|
-
|
|
92771
|
-
|
|
92772
|
-
probeErr =
|
|
92773
|
-
|
|
92774
|
-
|
|
92775
|
-
|
|
92776
|
-
|
|
92777
|
-
|
|
92778
|
-
|
|
92779
|
-
|
|
92780
|
-
|
|
92781
|
-
|
|
92782
|
-
|
|
92783
|
-
|
|
92891
|
+
report("Checking GitHub account + token requisites...");
|
|
92892
|
+
const gh = await checkGitHubPreflight({ owner: input.githubOwner, repoName: input.projectName });
|
|
92893
|
+
for (const w of gh.warnings) {
|
|
92894
|
+
warnings.push(w);
|
|
92895
|
+
report(`Note: ${w}`);
|
|
92896
|
+
}
|
|
92897
|
+
if (!gh.ok) throw new Error(gh.reason);
|
|
92898
|
+
}
|
|
92899
|
+
const rollback = createRollbackLedger();
|
|
92900
|
+
return await withCreateRollback(
|
|
92901
|
+
rollback,
|
|
92902
|
+
{ report },
|
|
92903
|
+
async () => {
|
|
92904
|
+
if (useGithub) {
|
|
92905
|
+
report("Creating GitHub repository...", fullRepoName);
|
|
92906
|
+
await createRepo(fullRepoName, {
|
|
92907
|
+
private: input.privateRepo !== false,
|
|
92908
|
+
description: `Lakebase project: ${input.projectName}`
|
|
92909
|
+
});
|
|
92910
|
+
rollback.register(`GitHub repo ${fullRepoName}`, () => deleteRepo(fullRepoName));
|
|
92911
|
+
report("Waiting for GitHub repo to be visible...", fullRepoName);
|
|
92912
|
+
const probeDelays = [1e3, 2e3, 3e3, 5e3, 8e3];
|
|
92913
|
+
let probeErr = "";
|
|
92914
|
+
let visible = false;
|
|
92915
|
+
for (const waitMs of probeDelays) {
|
|
92916
|
+
try {
|
|
92917
|
+
await getRepoFullName(fullRepoName);
|
|
92918
|
+
visible = true;
|
|
92919
|
+
break;
|
|
92920
|
+
} catch (err) {
|
|
92921
|
+
probeErr = err instanceof Error ? err.message : String(err);
|
|
92922
|
+
await delay(waitMs);
|
|
92923
|
+
}
|
|
92924
|
+
}
|
|
92925
|
+
if (!visible) {
|
|
92926
|
+
let activeUser = "";
|
|
92927
|
+
try {
|
|
92928
|
+
activeUser = await getCurrentUser();
|
|
92929
|
+
} catch {
|
|
92930
|
+
}
|
|
92931
|
+
const samlHint = /SAML|scope does not match|sso/i.test(probeErr) ? "\n\nThe error mentions SAML \u2013 re-sign in to GitHub and authorize SSO for this org." : "";
|
|
92932
|
+
const userHint = activeUser && activeUser !== input.githubOwner ? `
|
|
92784
92933
|
|
|
92785
92934
|
Note: signed in as "${activeUser}", but the repo was created under "${input.githubOwner}".` : "";
|
|
92786
|
-
|
|
92787
|
-
|
|
92935
|
+
throw new Error(
|
|
92936
|
+
`GitHub repo "${fullRepoName}" was created but isn't visible after ~19s of polling.${samlHint}${userHint}
|
|
92788
92937
|
|
|
92789
92938
|
Last probe error:
|
|
92790
92939
|
${probeErr.split("\n")[0].slice(0, 200)}`
|
|
92791
|
-
|
|
92792
|
-
|
|
92793
|
-
|
|
92794
|
-
|
|
92795
|
-
|
|
92796
|
-
|
|
92797
|
-
|
|
92798
|
-
|
|
92799
|
-
|
|
92800
|
-
|
|
92801
|
-
|
|
92802
|
-
|
|
92803
|
-
|
|
92804
|
-
|
|
92805
|
-
|
|
92806
|
-
|
|
92807
|
-
|
|
92940
|
+
);
|
|
92941
|
+
}
|
|
92942
|
+
report("Cloning repository...", projectDir);
|
|
92943
|
+
await cloneRepo({
|
|
92944
|
+
repoUrl: `https://github.com/${fullRepoName}.git`,
|
|
92945
|
+
parentDir: input.parentDir
|
|
92946
|
+
});
|
|
92947
|
+
rollback.register(`local project dir ${projectDir}`, () => fs20.rmSync(projectDir, { recursive: true, force: true }));
|
|
92948
|
+
} else {
|
|
92949
|
+
report("Creating local project directory...", projectDir);
|
|
92950
|
+
fs20.mkdirSync(projectDir, { recursive: true });
|
|
92951
|
+
await gitInit(projectDir);
|
|
92952
|
+
rollback.register(`local project dir ${projectDir}`, () => fs20.rmSync(projectDir, { recursive: true, force: true }));
|
|
92953
|
+
}
|
|
92954
|
+
report("Creating Lakebase database (provisioning Postgres)...", lakebaseProjectId);
|
|
92955
|
+
await createLakebaseProject({ projectId: lakebaseProjectId, host });
|
|
92956
|
+
rollback.register(`Lakebase project ${lakebaseProjectId}`, () => deleteLakebaseProject({ projectId: lakebaseProjectId, host }));
|
|
92808
92957
|
report("Resolving database endpoint...");
|
|
92809
92958
|
const defaultBranchId = await getDefaultBranchId({
|
|
92810
92959
|
projectId: lakebaseProjectId,
|
|
@@ -92888,6 +93037,10 @@ Last probe error:
|
|
|
92888
93037
|
projectName: input.projectName,
|
|
92889
93038
|
report: (m2) => report(m2)
|
|
92890
93039
|
});
|
|
93040
|
+
rollback.register(
|
|
93041
|
+
`self-hosted runner ${input.projectName}`,
|
|
93042
|
+
() => removeRunner({ fullRepoName, projectName: input.projectName })
|
|
93043
|
+
);
|
|
92891
93044
|
} catch (err) {
|
|
92892
93045
|
const msg = err instanceof Error ? err.message : String(err);
|
|
92893
93046
|
warnings.push(`Runner setup failed: ${msg}`);
|
|
@@ -92956,6 +93109,16 @@ Last probe error:
|
|
|
92956
93109
|
"The Consort toolkit downloads on first use , run `./scripts/lk --refresh`, or just your first `./scripts/lk` command, and it installs then."
|
|
92957
93110
|
);
|
|
92958
93111
|
}
|
|
93112
|
+
if (enableSftdd && useGithub) {
|
|
93113
|
+
report("Warming the Consort toolkit (so the first push doesn't cold-download mid-hook)...");
|
|
93114
|
+
let warm = warmAndVerifyKit(projectDir);
|
|
93115
|
+
if (!warm.ok) warm = warmAndVerifyKit(projectDir);
|
|
93116
|
+
if (!warm.ok) {
|
|
93117
|
+
const m2 = kitWarmWarning(projectDir, warm.reason);
|
|
93118
|
+
warnings.push(m2);
|
|
93119
|
+
report(`Note: ${m2}`);
|
|
93120
|
+
}
|
|
93121
|
+
}
|
|
92959
93122
|
const langLabels = {
|
|
92960
93123
|
java: "Java/Spring Boot",
|
|
92961
93124
|
kotlin: "Kotlin/Spring Boot",
|
|
@@ -92976,12 +93139,25 @@ Last probe error:
|
|
|
92976
93139
|
}
|
|
92977
93140
|
}
|
|
92978
93141
|
report("Creating initial commit...");
|
|
92979
|
-
await
|
|
92980
|
-
|
|
92981
|
-
|
|
92982
|
-
|
|
92983
|
-
|
|
92984
|
-
|
|
93142
|
+
await commitInitial(projectDir, `Initial project scaffold (${langLabel} + Lakebase)`);
|
|
93143
|
+
let pushLanded = !useGithub;
|
|
93144
|
+
if (useGithub) {
|
|
93145
|
+
try {
|
|
93146
|
+
await pushInitial({ projectDir, attempts: 2 });
|
|
93147
|
+
pushLanded = true;
|
|
93148
|
+
} catch (err) {
|
|
93149
|
+
if (err instanceof WorkflowScopeError) throw err;
|
|
93150
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
93151
|
+
const m2 = `Provisioning is complete, but the initial push did not land after a retry: ${msg}. The project on disk is fine , finish it with: cd ${projectDir} && git push -u origin main`;
|
|
93152
|
+
warnings.push(m2);
|
|
93153
|
+
report(`WARNING: ${m2}`);
|
|
93154
|
+
}
|
|
93155
|
+
}
|
|
93156
|
+
if ((tiers === 2 || tiers === 3) && !pushLanded) {
|
|
93157
|
+
const m2 = `INCOMPLETE TIERS: you requested ${tiers} tiers, but the initial push hasn't landed, so the tier branches can't fork off origin yet. After you finish the push (above), cut them with \`./scripts/lk lakebase-cut-tier --name staging --fork-from main\`${tiers === 3 ? " and `--name dev --fork-from staging`" : ""}.`;
|
|
93158
|
+
warnings.push(m2);
|
|
93159
|
+
report(`WARNING: ${m2}`);
|
|
93160
|
+
} else if (tiers === 2 || tiers === 3) {
|
|
92985
93161
|
report(`Cutting staging tier (tiers=${tiers}) via createLongRunningBranch...`);
|
|
92986
93162
|
try {
|
|
92987
93163
|
await createLongRunningBranch({
|
|
@@ -93032,7 +93208,7 @@ Last probe error:
|
|
|
93032
93208
|
warnings
|
|
93033
93209
|
};
|
|
93034
93210
|
}
|
|
93035
|
-
// end
|
|
93211
|
+
// end withCreateRollback closure
|
|
93036
93212
|
);
|
|
93037
93213
|
}
|
|
93038
93214
|
|
|
@@ -97831,6 +98007,7 @@ function isUcMissingError(msg) {
|
|
|
97831
98007
|
catalogExists,
|
|
97832
98008
|
catalogExplorerUrl,
|
|
97833
98009
|
checkDatabricksAuth,
|
|
98010
|
+
checkGitHubPreflight,
|
|
97834
98011
|
checkGitHubWorkflowScope,
|
|
97835
98012
|
checkoutPaired,
|
|
97836
98013
|
claimFeatureBranch,
|
|
@@ -97844,6 +98021,7 @@ function isUcMissingError(msg) {
|
|
|
97844
98021
|
createPairedBranch,
|
|
97845
98022
|
createPerfPairedBranch,
|
|
97846
98023
|
createProject,
|
|
98024
|
+
createRollbackLedger,
|
|
97847
98025
|
createTestPairedBranch,
|
|
97848
98026
|
createUatPairedBranch,
|
|
97849
98027
|
cutBackup,
|
|
@@ -98013,6 +98191,7 @@ function isUcMissingError(msg) {
|
|
|
98013
98191
|
waitForBranchReady,
|
|
98014
98192
|
waitForCi,
|
|
98015
98193
|
warmAndVerifyKit,
|
|
98194
|
+
withCreateRollback,
|
|
98016
98195
|
withLakebaseRollback,
|
|
98017
98196
|
workflowStateFileExists,
|
|
98018
98197
|
writeEnvFile,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { W as WorkflowRunSummary,
|
|
1
|
+
import { W as WorkflowRunSummary, c as GitHubScopeStatus, h as PullRequestInfo, x as mergePairedPullRequest } from '../../pr-D-eayWyJ.cjs';
|
|
2
2
|
import { Pool } from 'pg';
|
|
3
3
|
import { b as CiFreshnessResult } from '../../ci-secrets-CnGrdQV-.cjs';
|
|
4
4
|
|
|
@@ -1647,6 +1647,47 @@ type ScopeProbe = () => Promise<{
|
|
|
1647
1647
|
* (a genuinely bad/absent token surfaces clearly at repo creation, not here).
|
|
1648
1648
|
*/
|
|
1649
1649
|
declare function checkGitHubWorkflowScope(probe?: ScopeProbe): Promise<PreflightResult>;
|
|
1650
|
+
interface GitHubPreflightInput {
|
|
1651
|
+
/** Target repo owner (user or org). */
|
|
1652
|
+
owner: string;
|
|
1653
|
+
/** Bare repo name (the project name). */
|
|
1654
|
+
repoName: string;
|
|
1655
|
+
/** Scopes whose absence BLOCKS the happy path (create + push). Default ["repo","workflow"]. */
|
|
1656
|
+
hardScopes?: readonly string[];
|
|
1657
|
+
/** Scopes whose absence only WARNS (e.g. delete_repo, needed for rollback repo-delete). Default ["delete_repo"]. */
|
|
1658
|
+
advisoryScopes?: readonly string[];
|
|
1659
|
+
/** Injected probes (default to the real GitHub reads). */
|
|
1660
|
+
currentUser?: () => Promise<string>;
|
|
1661
|
+
scopes?: (required: readonly string[]) => Promise<GitHubScopeStatus>;
|
|
1662
|
+
repoExists?: (fullName: string) => Promise<boolean>;
|
|
1663
|
+
}
|
|
1664
|
+
interface GitHubPreflightResult extends PreflightResult {
|
|
1665
|
+
/** Non-blocking notes (org/owner mismatch, missing advisory scope, invisible scopes). */
|
|
1666
|
+
warnings: string[];
|
|
1667
|
+
/** The resolved authenticated login, when B1 succeeded. */
|
|
1668
|
+
activeUser?: string;
|
|
1669
|
+
}
|
|
1670
|
+
/**
|
|
1671
|
+
* One up-front GitHub preflight run BEFORE any repo / Lakebase project is created,
|
|
1672
|
+
* so a missing requisite fails in seconds with a fix instead of mid-create (where
|
|
1673
|
+
* it orphans partially-created artifacts). Supersedes the workflow-only check:
|
|
1674
|
+
*
|
|
1675
|
+
* B1 active account getCurrentUser() must resolve (a valid token) — else a
|
|
1676
|
+
* wrong/absent token otherwise 403s LATE at the push.
|
|
1677
|
+
* B2 scope set checkGitHubScopes([...hard, ...advisory]): a missing HARD
|
|
1678
|
+
* scope (repo/workflow) fails; a missing ADVISORY scope
|
|
1679
|
+
* (delete_repo) warns (rollback repo-delete unavailable);
|
|
1680
|
+
* granted null (fine-grained PAT / App) can't be asserted.
|
|
1681
|
+
* B3 name availability repoExists(owner/name) → fail before anything exists.
|
|
1682
|
+
* B4 owner note login != owner ⇒ creating under an org/other account —
|
|
1683
|
+
* surfaced (createRepo enforces the real org-create right).
|
|
1684
|
+
*
|
|
1685
|
+
* CONSERVATIVE: hard-fails ONLY on the clear blockers (invalid token, missing
|
|
1686
|
+
* happy-path scope, name taken); every other uncertainty is a warning, never a
|
|
1687
|
+
* false block (same ethos as checkGitHubWorkflowScope). All probes injected, so
|
|
1688
|
+
* this is unit-testable with no network.
|
|
1689
|
+
*/
|
|
1690
|
+
declare function checkGitHubPreflight(input: GitHubPreflightInput): Promise<GitHubPreflightResult>;
|
|
1650
1691
|
/** The actionable prereq message for a GitHub token missing the `workflow` scope. */
|
|
1651
1692
|
declare function githubWorkflowScopePrereqMessage(reason?: string): string;
|
|
1652
1693
|
/** The actionable prereq message for a failed auth probe (W5). */
|
|
@@ -1677,6 +1718,37 @@ interface RollbackOptions {
|
|
|
1677
1718
|
* gone. Use ONLY to wrap the steps that run AFTER createLakebaseProject.
|
|
1678
1719
|
*/
|
|
1679
1720
|
declare function withLakebaseRollback<T>(opts: RollbackOptions, fn: () => Promise<T>): Promise<T>;
|
|
1721
|
+
interface RollbackStep {
|
|
1722
|
+
label: string;
|
|
1723
|
+
undo: () => Promise<void> | void;
|
|
1724
|
+
}
|
|
1725
|
+
interface RollbackLedger {
|
|
1726
|
+
/** Record a teardown for a resource the moment it is created. */
|
|
1727
|
+
register(label: string, undo: () => Promise<void> | void): void;
|
|
1728
|
+
/** The steps, in registration order (teardown runs them REVERSED). */
|
|
1729
|
+
steps(): readonly RollbackStep[];
|
|
1730
|
+
}
|
|
1731
|
+
/** A created-resources ledger for the full create flow (A3). */
|
|
1732
|
+
declare function createRollbackLedger(): RollbackLedger;
|
|
1733
|
+
interface CreateRollbackOptions {
|
|
1734
|
+
report?: (step: string, detail?: string) => void;
|
|
1735
|
+
}
|
|
1736
|
+
/**
|
|
1737
|
+
* A3: run `fn`; on a throw, tear down EVERY resource the ledger recorded, in
|
|
1738
|
+
* REVERSE order (last-created first), then rethrow with a summary of what was
|
|
1739
|
+
* and wasn't cleaned up.
|
|
1740
|
+
*
|
|
1741
|
+
* Unlike {@link withLakebaseRollback} (Lakebase project only), this undoes the
|
|
1742
|
+
* GitHub repo, the self-hosted runner, the local dir, AND the Lakebase project
|
|
1743
|
+
* together — so a genuine provisioning fault leaves a clean "name is free" state
|
|
1744
|
+
* instead of orphaning three of the four artifacts (the exact 4-artifact manual
|
|
1745
|
+
* cleanup the cold-download incident caused). A step's own failure is captured +
|
|
1746
|
+
* reported, never thrown, so one stuck teardown can't block the others; a
|
|
1747
|
+
* "not found" teardown counts as already-gone. The caller registers a step the
|
|
1748
|
+
* instant each resource is created, so a failure anywhere inside `fn` rolls back
|
|
1749
|
+
* exactly what existed at that point.
|
|
1750
|
+
*/
|
|
1751
|
+
declare function withCreateRollback<T>(ledger: RollbackLedger, opts: CreateRollbackOptions, fn: () => Promise<T>): Promise<T>;
|
|
1680
1752
|
|
|
1681
1753
|
/**
|
|
1682
1754
|
* Read a single key's value from a .env file (the last assignment wins, matching
|
|
@@ -4238,4 +4310,4 @@ declare function applySchemaMigrations(args: ApplySchemaMigrationsArgs): Promise
|
|
|
4238
4310
|
declare function rollbackSchemaMigration(args: RollbackSchemaMigrationArgs): Promise<RollbackSchemaMigrationResult>;
|
|
4239
4311
|
declare function schemaMigrationStatus(args: SchemaMigrationStatusArgs): Promise<SchemaMigrationStatusResult>;
|
|
4240
4312
|
|
|
4241
|
-
export { type AbandonFeatureArgs, type AbandonFeatureResult, type AddE2eToRunTestsScriptArgs, type AddE2eToRunTestsScriptResult, type AddInfraToPackageJsonArgs, type AddInfraToPackageJsonResult, type AddInfraToRunTestsScriptArgs, type AddInfraToRunTestsScriptResult, type AddPlaywrightToPackageJsonArgs, type AddPlaywrightToPackageJsonResult, type AddPythonE2eDepsArgs, type AddPythonE2eDepsResult, type AdoptLakebaseProjectArgs, type AdoptLakebaseProjectResult, type AdoptStateArgs, type AdoptStateResult, type AppServicePrincipal, type AppliedSchemaMigration, type ApplySchemaMigrationsArgs, type ApplySchemaMigrationsResult, type BranchLookupOpts, type BranchMetadata, CONVENTION_TIER_DEFAULTS, type CatalogExistsArgs, type CheckoutMode, type CheckoutPairedArgs, type CheckoutPairedResult, type ClaimFeatureBranchArgs, type ClaimFeatureBranchResult, type ClaimedOrphan, type ClientFramework, type CommandDriftReport, type CommandFileEntry, type CommandFileStatus, type ConnectionArgs, type ConsortSetupHooks, type CreateBranchArgs, type CreateConventionBranchArgs, type CreateConventionPairedBranchArgs, type CreateLongRunningBranchArgs, type CreateLongRunningBranchResult, type CreatePairedBranchArgs, type CreatePairedBranchResult, type CreateProjectArgs, type CreateProjectResult, type CutBackupArgs, type CutBackupResult, DEFAULT_PROTECTED_TIER_NAMES, DOTNET_EFCORE_DEFAULTS, DOTNET_FLYWAY_DIR, type DatabricksProfile, type DeleteAppEndpointArgs, type DeleteAppEndpointResult, type DeleteBranchArgs, type DeletePairedBranchArgs, type DeletePairedBranchResult, type DeployClaudeCommandsOptions, type DeployClaudeCommandsResult, type DeployEnvExampleArgs, type DeployLanguageProjectArgs, type DeploySpringStarterArgs, type DeployTarget, type DeployTargetsConfig, type DetectCommandDriftArgs, type DetectScaffoldedDriftArgs, type DetectWorkflowDriftArgs, type DoctorArgs$1 as DoctorArgs, type DoctorFinding, type DoctorReport$1 as DoctorReport, type DoctorSeverity, type DotnetMigrationTool, type DsnArgs, type DsnResult, EF_DESIGN_PACKAGE, type EfCoreProject, type EnableE2eForProjectArgs, type EnableE2eForProjectResult, type EnableInfraForProjectArgs, type EnableInfraForProjectResult, type EndpointInfo, type EnsureAppEndpointArgs, type EnsureAppEndpointResult, type EnsureEndpointArgs, type EnsureLakebaseSecretAuthArgs, type EnsureLakebaseSecretAuthResult, type EnsureProfilePinnedArgs, type EnsureProfilePinnedResult, type EnsureSchemaAndVolumeArgs, type EnsureSchemaAndVolumeResult, FIXABLE_FINDING_IDS, type FixFindingArgs, type FixFindingResult, type FixableFindingId, type GateInvariant, type GateStatus, type GenerateAppYamlOptions, type GenerateMavenProjectOptions, type GetAppEndpointArgs, type GetAppEndpointResult, type GetAppServicePrincipalArgs, type GetCiAppEndpointArgs, type GetCiAppEndpointResult, type GetConnectionArgs, type GetCredentialArgs, type GetEndpointArgs, type GetSchemaDiffArgs, type GrantLakebasePermissionArgs, type GrantLakebasePermissionResult, type GrantUcCatalogPermissionArgs, type GrantUcCatalogPermissionResult, type DoctorReport as HealthDoctorReport, type HookVerification, type InfraCheckResult, type InfraSuiteResult, type InitWorkflowStateArgs, type InitializrMetadata, InitializrNetworkError, InitializrParseError, type InstallPlaywrightArgs, type InstallPlaywrightOptions, type InstallPlaywrightResult, LakebaseBranchError, type LakebaseBranchInfo, LakebaseBranchTtlTooLongError, type LakebasePermissionLevel, type LakebaseProjectArgs, LakebaseProjectError, type LakebaseProjectInfo, type LakebaseProjectMetadata, type ListSchemaMigrationsArgs, MAVEN_FLYWAY_DIR, MIGRATION_DEFAULTS, type MergeArgs, type MergePairedArgs, type MergePairedResult, type MergeResult, type MigrationDefaults, type MigrationLanguage, type MigrationLayout, type ModifiedSchemaObject, NODE_E2E_TEMPLATE_FILES, type OrphanCandidate, PLAYWRIGHT_TEMPLATE_FILES, PLAYWRIGHT_TEST_VERSION_RANGE, PYTEST_BDD_VERSION_RANGE, PYTEST_PLAYWRIGHT_VERSION_RANGE, PYTHON_E2E_TEMPLATE_FILES, type PendingSchemaMigration, type PoolArgs, type PreflightResult, type PreparePrArgs, type PreparePrResult, type ProgressCallback, type ProjectLanguage, type PropagateCredentialsArgs, type PropagateCredentialsResult, ProtectedBranchCommitError, type QueryBranchSchemaArgs, type RecoverOrphansArgs, type RecoverOrphansResult, type ReleaseArgs, type ReleaseResult, type RemoveRunnerArgs, type ResolveDatabricksHostArgs, type ResolveMigrationLayoutArgs, type RollbackDeployArgs, type RollbackDeployResult, type RollbackOptions, type RollbackSchemaMigrationArgs, type RollbackSchemaMigrationResult, type RunDoctorDeps, type RunInfraSuiteArgs, type RunPlaywrightInstallArgs, type RunPlaywrightInstallResult, type RunnerInfo, type RunnerReportFn, type RunnerType, SCM_STATES, STATE_FILE_REL, type ScaffoldAllArgs, type ScaffoldOptions, type ScaffoldReportFn, type ScaffoldStaticAllArgs, type ScaffoldStaticAllResult, type ScaffoldedDriftReport, type SchemaColumn, type SchemaDiffResult, SchemaMigrationError, type SchemaMigrationFile, type SchemaMigrationLanguage, type SchemaMigrationStatusArgs, type SchemaMigrationStatusResult, type SchemaMigrationToolName, type SchemaObject, type SchemaQueryRow, ScmAbandonError, ScmAdoptError, ScmClaimError, ScmDoctorFixError, ScmMergeError, ScmPreparePrError, ScmRecoverError, ScmReleaseError, type ScmState, ScmWaitCiError, type ScmWorkflowState, type SetupRunnerArgs, type SftddSetupHooks, SpringInitializrClient, type SpringJvmLanguage, type StaleBranchFinding, type SyncEnvArgs, type SyncEnvResult, type TableSchema, type TierTopology, type TryCreateCatalogArgs, type TryCreateCatalogResult, type UcCatalogPermission, type UpdateEnvConnectionArgs, type UpdateWorkflowsArgs, type UpdateWorkflowsResult, type UploadDirectoryArgs, type UploadDirectoryResult, type ValidateAppOptions, type ValidateAppResult, type ValidationError, type ValidationResult, type WaitCiArgs, type WaitCiResult, type WaitForBranchAuthReadyArgs, type WaitForBranchReadyArgs, type WorkflowDriftReport, type WorkflowFileStatus, type WorkflowFileUpdate, type WorkflowStatus, type WorkflowUpdateOutcome, type WorkflowVerification, type WriteEnvFileArgs, type WritePlaywrightTemplatesArgs, type WritePlaywrightTemplatesResult, _testMakeBrownfieldFixture, abandonFeatureBranch, addE2eToRunTestsScript, addInfraToPackageJson, addInfraToRunTestsScript, addPlaywrightToPackageJson, adoptLakebaseProject, adoptScmState, applySchemaMigrations, assertAdoptionPreflight, assertCleanForFork, assertCommitTargetNotProtected, assertCreatedProjectReady, buildPostgresUrl, buildSchemaQuery, cacheProjectRetention, catalogExists, catalogExplorerUrl, checkDatabricksAuth, checkGitHubWorkflowScope, checkoutPaired, claimFeatureBranch, clearRetentionCache, compileMigrationPattern, connectionApplicationName, createBranch, createFeaturePairedBranch, createLakebaseProject, createLongRunningBranch, createPairedBranch, createPerfPairedBranch, createProject, createTestPairedBranch, createUatPairedBranch, cutBackup, databricksAuthPrereqMessage, defaultRefreshPromoteWorkflows, deleteAppEndpoint, deleteBranch, deleteLakebaseProject, deletePairedBranch, deleteProjectArgs, deployClaudeAgents, deployClaudeCommands, deployClaudeSettings, deployClaudeSkills, deployClientProject, deployDeployTargets, deployEnv, deployEnvExample, deployGitignore, deployLanguageProject, deployScripts, deploySpringStarter, deployVscodeSettings, deployWorkflows, deriveCiAppName, describeGates, detectCommandDrift, detectLanguage, detectLanguageAt, detectScaffoldedDrift, detectWorkflowDrift, dirIsEmpty, enableE2eForProject, enableInfraForProject, endpointPath, ensureAppEndpoint, ensureCachedArchive, ensureEndpoint, ensureLakebaseSecretAuth, ensureProfilePinned, ensurePythonBddDeps, ensurePythonE2eDeps, ensureSchemaAndVolume, extractPullNumber, featureBranchName, findCsprojFiles, findDefaultBranchName, findEfCoreProject, findHistoryRetentionDuration, fixFinding, flywayMigrationsDir, formatJUnit, formatSchemaDiffAsMarkdown, generateAppYaml, getAppEndpoint, getAppServicePrincipal, getBranchByName, getCachedProjectRetention, getCiAppEndpoint, getConnection, getCredential, getDefaultBranch, getDefaultBranchId, getDefaultBranchName, getEndpoint, getProjectInfo, getProjectRetentionDuration, getRunnerInfo, getSchemaDiff, getTargetNames, githubWorkflowScopePrereqMessage, grantLakebasePermission, grantUcCatalogPermission, hasDotnetMarker, inferTierTopology, initWorkflowState, installHooks, installPlaywright, isAllSchemas, isDotnetFlywayProject, isDotnetProject, isForeignFeatureClaim, isGitTracked, isLongRunningTierBranch, isLtsJavaVersion, isPrereleaseBootVersion, isRunning, isTier, isTtlTooLongError, kitWarmWarning, listAppDeployments, listBranches, listSchemaMigrations, mergeFeature, mergePaired, minLakebaseTtl, mintCredential, normalizeHost, normalizeTierName, parseHostFromAuthDescribe, parseLakebaseTtl, parseTargetsYaml, patchWorkflowsForRunnerType, preparePr, projectPath, propagateCredentials, protectedTierNamesFromEnv, pushFailureHint, queryBranchSchema, queryBranchTables, readEnvVar, readTargets, readWorkflowState, reconcilePromoteRunState, reconcileTierToOrigin, recoverOrphans, release, removeRunner, resolveBranchId, resolveBranchPath, resolveCurrentUser, resolveDatabricksHost, resolveEndpointHost, resolveFeatureStartPoint, resolveJavaHome, resolveLatestBootVersion, resolveLatestLtsJavaVersion, resolveMigrationLanguage, resolveMigrationLayout, resolveParentBranch, resolveProfileForHost, resolveProfileForHostSync, resolveProtectedTierNames, rollbackDeploy, rollbackSchemaMigration, runDoctor$1 as runDoctor, runDoctor as runHealthDoctor, runInfraSuite, runPlaywrightInstall, runnerDir, runnerName, sanitizeFeatureSlug, scaffoldAll, scaffoldStaticAll, schemaMigrationStatus, schemaObjectName, selectProfileForHost, setupRunner, stateFilePath, stopRunner, substituteScmUtilsVersion, substrateVersion, syncEnvToCurrentBranch, tierBranchNames, toolForLanguage, tryCreateCatalog, updateEnvConnection, updateWorkflows, uploadDirectory, validateApp, validateCreateInputs, validateWorkflowState, verifyHooks, verifyProject, verifyWorkflows, waitForBranchAuthReady, waitForBranchReady, waitForCi, warmAndVerifyKit, withLakebaseRollback, workflowStateFileExists, writeEnvFile, writePlaywrightTemplates, writeTargets, writeWorkflowState };
|
|
4313
|
+
export { type AbandonFeatureArgs, type AbandonFeatureResult, type AddE2eToRunTestsScriptArgs, type AddE2eToRunTestsScriptResult, type AddInfraToPackageJsonArgs, type AddInfraToPackageJsonResult, type AddInfraToRunTestsScriptArgs, type AddInfraToRunTestsScriptResult, type AddPlaywrightToPackageJsonArgs, type AddPlaywrightToPackageJsonResult, type AddPythonE2eDepsArgs, type AddPythonE2eDepsResult, type AdoptLakebaseProjectArgs, type AdoptLakebaseProjectResult, type AdoptStateArgs, type AdoptStateResult, type AppServicePrincipal, type AppliedSchemaMigration, type ApplySchemaMigrationsArgs, type ApplySchemaMigrationsResult, type BranchLookupOpts, type BranchMetadata, CONVENTION_TIER_DEFAULTS, type CatalogExistsArgs, type CheckoutMode, type CheckoutPairedArgs, type CheckoutPairedResult, type ClaimFeatureBranchArgs, type ClaimFeatureBranchResult, type ClaimedOrphan, type ClientFramework, type CommandDriftReport, type CommandFileEntry, type CommandFileStatus, type ConnectionArgs, type ConsortSetupHooks, type CreateBranchArgs, type CreateConventionBranchArgs, type CreateConventionPairedBranchArgs, type CreateLongRunningBranchArgs, type CreateLongRunningBranchResult, type CreatePairedBranchArgs, type CreatePairedBranchResult, type CreateProjectArgs, type CreateProjectResult, type CreateRollbackOptions, type CutBackupArgs, type CutBackupResult, DEFAULT_PROTECTED_TIER_NAMES, DOTNET_EFCORE_DEFAULTS, DOTNET_FLYWAY_DIR, type DatabricksProfile, type DeleteAppEndpointArgs, type DeleteAppEndpointResult, type DeleteBranchArgs, type DeletePairedBranchArgs, type DeletePairedBranchResult, type DeployClaudeCommandsOptions, type DeployClaudeCommandsResult, type DeployEnvExampleArgs, type DeployLanguageProjectArgs, type DeploySpringStarterArgs, type DeployTarget, type DeployTargetsConfig, type DetectCommandDriftArgs, type DetectScaffoldedDriftArgs, type DetectWorkflowDriftArgs, type DoctorArgs$1 as DoctorArgs, type DoctorFinding, type DoctorReport$1 as DoctorReport, type DoctorSeverity, type DotnetMigrationTool, type DsnArgs, type DsnResult, EF_DESIGN_PACKAGE, type EfCoreProject, type EnableE2eForProjectArgs, type EnableE2eForProjectResult, type EnableInfraForProjectArgs, type EnableInfraForProjectResult, type EndpointInfo, type EnsureAppEndpointArgs, type EnsureAppEndpointResult, type EnsureEndpointArgs, type EnsureLakebaseSecretAuthArgs, type EnsureLakebaseSecretAuthResult, type EnsureProfilePinnedArgs, type EnsureProfilePinnedResult, type EnsureSchemaAndVolumeArgs, type EnsureSchemaAndVolumeResult, FIXABLE_FINDING_IDS, type FixFindingArgs, type FixFindingResult, type FixableFindingId, type GateInvariant, type GateStatus, type GenerateAppYamlOptions, type GenerateMavenProjectOptions, type GetAppEndpointArgs, type GetAppEndpointResult, type GetAppServicePrincipalArgs, type GetCiAppEndpointArgs, type GetCiAppEndpointResult, type GetConnectionArgs, type GetCredentialArgs, type GetEndpointArgs, type GetSchemaDiffArgs, type GitHubPreflightInput, type GitHubPreflightResult, type GrantLakebasePermissionArgs, type GrantLakebasePermissionResult, type GrantUcCatalogPermissionArgs, type GrantUcCatalogPermissionResult, type DoctorReport as HealthDoctorReport, type HookVerification, type InfraCheckResult, type InfraSuiteResult, type InitWorkflowStateArgs, type InitializrMetadata, InitializrNetworkError, InitializrParseError, type InstallPlaywrightArgs, type InstallPlaywrightOptions, type InstallPlaywrightResult, LakebaseBranchError, type LakebaseBranchInfo, LakebaseBranchTtlTooLongError, type LakebasePermissionLevel, type LakebaseProjectArgs, LakebaseProjectError, type LakebaseProjectInfo, type LakebaseProjectMetadata, type ListSchemaMigrationsArgs, MAVEN_FLYWAY_DIR, MIGRATION_DEFAULTS, type MergeArgs, type MergePairedArgs, type MergePairedResult, type MergeResult, type MigrationDefaults, type MigrationLanguage, type MigrationLayout, type ModifiedSchemaObject, NODE_E2E_TEMPLATE_FILES, type OrphanCandidate, PLAYWRIGHT_TEMPLATE_FILES, PLAYWRIGHT_TEST_VERSION_RANGE, PYTEST_BDD_VERSION_RANGE, PYTEST_PLAYWRIGHT_VERSION_RANGE, PYTHON_E2E_TEMPLATE_FILES, type PendingSchemaMigration, type PoolArgs, type PreflightResult, type PreparePrArgs, type PreparePrResult, type ProgressCallback, type ProjectLanguage, type PropagateCredentialsArgs, type PropagateCredentialsResult, ProtectedBranchCommitError, type QueryBranchSchemaArgs, type RecoverOrphansArgs, type RecoverOrphansResult, type ReleaseArgs, type ReleaseResult, type RemoveRunnerArgs, type ResolveDatabricksHostArgs, type ResolveMigrationLayoutArgs, type RollbackDeployArgs, type RollbackDeployResult, type RollbackLedger, type RollbackOptions, type RollbackSchemaMigrationArgs, type RollbackSchemaMigrationResult, type RollbackStep, type RunDoctorDeps, type RunInfraSuiteArgs, type RunPlaywrightInstallArgs, type RunPlaywrightInstallResult, type RunnerInfo, type RunnerReportFn, type RunnerType, SCM_STATES, STATE_FILE_REL, type ScaffoldAllArgs, type ScaffoldOptions, type ScaffoldReportFn, type ScaffoldStaticAllArgs, type ScaffoldStaticAllResult, type ScaffoldedDriftReport, type SchemaColumn, type SchemaDiffResult, SchemaMigrationError, type SchemaMigrationFile, type SchemaMigrationLanguage, type SchemaMigrationStatusArgs, type SchemaMigrationStatusResult, type SchemaMigrationToolName, type SchemaObject, type SchemaQueryRow, ScmAbandonError, ScmAdoptError, ScmClaimError, ScmDoctorFixError, ScmMergeError, ScmPreparePrError, ScmRecoverError, ScmReleaseError, type ScmState, ScmWaitCiError, type ScmWorkflowState, type SetupRunnerArgs, type SftddSetupHooks, SpringInitializrClient, type SpringJvmLanguage, type StaleBranchFinding, type SyncEnvArgs, type SyncEnvResult, type TableSchema, type TierTopology, type TryCreateCatalogArgs, type TryCreateCatalogResult, type UcCatalogPermission, type UpdateEnvConnectionArgs, type UpdateWorkflowsArgs, type UpdateWorkflowsResult, type UploadDirectoryArgs, type UploadDirectoryResult, type ValidateAppOptions, type ValidateAppResult, type ValidationError, type ValidationResult, type WaitCiArgs, type WaitCiResult, type WaitForBranchAuthReadyArgs, type WaitForBranchReadyArgs, type WorkflowDriftReport, type WorkflowFileStatus, type WorkflowFileUpdate, type WorkflowStatus, type WorkflowUpdateOutcome, type WorkflowVerification, type WriteEnvFileArgs, type WritePlaywrightTemplatesArgs, type WritePlaywrightTemplatesResult, _testMakeBrownfieldFixture, abandonFeatureBranch, addE2eToRunTestsScript, addInfraToPackageJson, addInfraToRunTestsScript, addPlaywrightToPackageJson, adoptLakebaseProject, adoptScmState, applySchemaMigrations, assertAdoptionPreflight, assertCleanForFork, assertCommitTargetNotProtected, assertCreatedProjectReady, buildPostgresUrl, buildSchemaQuery, cacheProjectRetention, catalogExists, catalogExplorerUrl, checkDatabricksAuth, checkGitHubPreflight, checkGitHubWorkflowScope, checkoutPaired, claimFeatureBranch, clearRetentionCache, compileMigrationPattern, connectionApplicationName, createBranch, createFeaturePairedBranch, createLakebaseProject, createLongRunningBranch, createPairedBranch, createPerfPairedBranch, createProject, createRollbackLedger, createTestPairedBranch, createUatPairedBranch, cutBackup, databricksAuthPrereqMessage, defaultRefreshPromoteWorkflows, deleteAppEndpoint, deleteBranch, deleteLakebaseProject, deletePairedBranch, deleteProjectArgs, deployClaudeAgents, deployClaudeCommands, deployClaudeSettings, deployClaudeSkills, deployClientProject, deployDeployTargets, deployEnv, deployEnvExample, deployGitignore, deployLanguageProject, deployScripts, deploySpringStarter, deployVscodeSettings, deployWorkflows, deriveCiAppName, describeGates, detectCommandDrift, detectLanguage, detectLanguageAt, detectScaffoldedDrift, detectWorkflowDrift, dirIsEmpty, enableE2eForProject, enableInfraForProject, endpointPath, ensureAppEndpoint, ensureCachedArchive, ensureEndpoint, ensureLakebaseSecretAuth, ensureProfilePinned, ensurePythonBddDeps, ensurePythonE2eDeps, ensureSchemaAndVolume, extractPullNumber, featureBranchName, findCsprojFiles, findDefaultBranchName, findEfCoreProject, findHistoryRetentionDuration, fixFinding, flywayMigrationsDir, formatJUnit, formatSchemaDiffAsMarkdown, generateAppYaml, getAppEndpoint, getAppServicePrincipal, getBranchByName, getCachedProjectRetention, getCiAppEndpoint, getConnection, getCredential, getDefaultBranch, getDefaultBranchId, getDefaultBranchName, getEndpoint, getProjectInfo, getProjectRetentionDuration, getRunnerInfo, getSchemaDiff, getTargetNames, githubWorkflowScopePrereqMessage, grantLakebasePermission, grantUcCatalogPermission, hasDotnetMarker, inferTierTopology, initWorkflowState, installHooks, installPlaywright, isAllSchemas, isDotnetFlywayProject, isDotnetProject, isForeignFeatureClaim, isGitTracked, isLongRunningTierBranch, isLtsJavaVersion, isPrereleaseBootVersion, isRunning, isTier, isTtlTooLongError, kitWarmWarning, listAppDeployments, listBranches, listSchemaMigrations, mergeFeature, mergePaired, minLakebaseTtl, mintCredential, normalizeHost, normalizeTierName, parseHostFromAuthDescribe, parseLakebaseTtl, parseTargetsYaml, patchWorkflowsForRunnerType, preparePr, projectPath, propagateCredentials, protectedTierNamesFromEnv, pushFailureHint, queryBranchSchema, queryBranchTables, readEnvVar, readTargets, readWorkflowState, reconcilePromoteRunState, reconcileTierToOrigin, recoverOrphans, release, removeRunner, resolveBranchId, resolveBranchPath, resolveCurrentUser, resolveDatabricksHost, resolveEndpointHost, resolveFeatureStartPoint, resolveJavaHome, resolveLatestBootVersion, resolveLatestLtsJavaVersion, resolveMigrationLanguage, resolveMigrationLayout, resolveParentBranch, resolveProfileForHost, resolveProfileForHostSync, resolveProtectedTierNames, rollbackDeploy, rollbackSchemaMigration, runDoctor$1 as runDoctor, runDoctor as runHealthDoctor, runInfraSuite, runPlaywrightInstall, runnerDir, runnerName, sanitizeFeatureSlug, scaffoldAll, scaffoldStaticAll, schemaMigrationStatus, schemaObjectName, selectProfileForHost, setupRunner, stateFilePath, stopRunner, substituteScmUtilsVersion, substrateVersion, syncEnvToCurrentBranch, tierBranchNames, toolForLanguage, tryCreateCatalog, updateEnvConnection, updateWorkflows, uploadDirectory, validateApp, validateCreateInputs, validateWorkflowState, verifyHooks, verifyProject, verifyWorkflows, waitForBranchAuthReady, waitForBranchReady, waitForCi, warmAndVerifyKit, withCreateRollback, withLakebaseRollback, workflowStateFileExists, writeEnvFile, writePlaywrightTemplates, writeTargets, writeWorkflowState };
|