@databricks-solutions/lakebase-scm-utils 0.3.4 → 0.3.6
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/scripts/github/index.cjs +14 -0
- package/dist/scripts/github/index.d.cts +19 -1
- package/dist/scripts/github/index.d.ts +19 -1
- package/dist/scripts/github/index.js +13 -0
- package/dist/scripts/index.cjs +94 -6
- package/dist/scripts/index.d.cts +2 -2
- package/dist/scripts/index.d.ts +2 -2
- package/dist/scripts/index.js +91 -6
- 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 +15664 -7598
- package/dist/scripts/lakebase/doctor.cli.js +8243 -106
- 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 +187 -99
- package/dist/scripts/lakebase/index.d.cts +22 -1
- package/dist/scripts/lakebase/index.d.ts +22 -1
- package/dist/scripts/lakebase/index.js +185 -99
- 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/github/repo.ts +37 -1
- package/scripts/lakebase/create-preflight.ts +45 -0
- package/scripts/lakebase/create-project.ts +15 -0
- package/scripts/lakebase/doctor.ts +50 -0
- package/scripts/lakebase/enable-e2e.ts +34 -4
- package/templates/project/common/.github/workflows/pr.yml +14 -5
|
@@ -1466,6 +1466,7 @@ __export(github_exports, {
|
|
|
1466
1466
|
GitHubRepoError: () => GitHubRepoError,
|
|
1467
1467
|
GitHubRunnerError: () => GitHubRunnerError,
|
|
1468
1468
|
GitHubSecretsError: () => GitHubSecretsError,
|
|
1469
|
+
checkGitHubScopes: () => checkGitHubScopes,
|
|
1469
1470
|
createPullRequest: () => createPullRequest,
|
|
1470
1471
|
createRegistrationToken: () => createRegistrationToken,
|
|
1471
1472
|
createRepo: () => createRepo,
|
|
@@ -8136,6 +8137,18 @@ async function getCurrentUser() {
|
|
|
8136
8137
|
wrap(err, "GitHub authentication failed");
|
|
8137
8138
|
}
|
|
8138
8139
|
}
|
|
8140
|
+
async function checkGitHubScopes(required = GITHUB_SCOPES) {
|
|
8141
|
+
try {
|
|
8142
|
+
const ctx = await newContext();
|
|
8143
|
+
const res = await ctx.octokit.rest.users.getAuthenticated();
|
|
8144
|
+
const header = res.headers["x-oauth-scopes"];
|
|
8145
|
+
if (header === void 0 || header === null) return { granted: null, missing: [] };
|
|
8146
|
+
const granted = String(header).split(",").map((s) => s.trim()).filter(Boolean);
|
|
8147
|
+
return { granted, missing: required.filter((s) => !granted.includes(s)) };
|
|
8148
|
+
} catch (err) {
|
|
8149
|
+
wrap(err, "GitHub scope check failed");
|
|
8150
|
+
}
|
|
8151
|
+
}
|
|
8139
8152
|
async function createRepo(name, opts = {}) {
|
|
8140
8153
|
try {
|
|
8141
8154
|
const ctx = await newContext();
|
|
@@ -9065,6 +9078,7 @@ async function mergePairedPullRequest(args) {
|
|
|
9065
9078
|
GitHubRepoError,
|
|
9066
9079
|
GitHubRunnerError,
|
|
9067
9080
|
GitHubSecretsError,
|
|
9081
|
+
checkGitHubScopes,
|
|
9068
9082
|
createPullRequest,
|
|
9069
9083
|
createRegistrationToken,
|
|
9070
9084
|
createRepo,
|
|
@@ -55,6 +55,24 @@ declare class GitHubRepoError extends Error {
|
|
|
55
55
|
}
|
|
56
56
|
/** Returns the GitHub login of the currently authenticated user. */
|
|
57
57
|
declare function getCurrentUser(): Promise<string>;
|
|
58
|
+
interface GitHubScopeStatus {
|
|
59
|
+
/** Granted OAuth scopes, or null when the token exposes NONE — a fine-grained
|
|
60
|
+
* PAT or GitHub App token carries no OAuth scope header; its permissions
|
|
61
|
+
* aren't a scope set, so callers MUST treat null as "unknown", never a miss. */
|
|
62
|
+
granted: string[] | null;
|
|
63
|
+
/** Required scopes absent from `granted` (empty when `granted` is null). */
|
|
64
|
+
missing: string[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Read the authenticated token's granted OAuth scopes from the GitHub API
|
|
68
|
+
* `x-oauth-scopes` response header and diff them against `required`. A classic
|
|
69
|
+
* OAuth/PAT token returns a (possibly empty) comma-separated header; a
|
|
70
|
+
* fine-grained PAT / GitHub App token omits it entirely → `granted: null`.
|
|
71
|
+
* Reading your own user needs no special scope, so this succeeds for any VALID
|
|
72
|
+
* token regardless of scopes (and throws, like the other ops, on a bad token /
|
|
73
|
+
* network error — callers decide whether that is blocking).
|
|
74
|
+
*/
|
|
75
|
+
declare function checkGitHubScopes(required?: readonly string[]): Promise<GitHubScopeStatus>;
|
|
58
76
|
interface CreateRepoOptions {
|
|
59
77
|
/** Make the repo private. Default: true. */
|
|
60
78
|
private?: boolean;
|
|
@@ -127,4 +145,4 @@ declare function setRepoSecrets(ownerRepo: string, secrets: Record<string, strin
|
|
|
127
145
|
/** List configured secret names (returns empty array on any error). */
|
|
128
146
|
declare function listSecretNames(ownerRepo: string): Promise<string[]>;
|
|
129
147
|
|
|
130
|
-
export { type CreateRepoOptions, GITHUB_SCOPES, type GitHubAuthDiagnosis, type GitHubAuthSource, GitHubRepoError, GitHubRunnerError, GitHubSecretsError, type RepoRunner, type VsCodeSessionOptions, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession };
|
|
148
|
+
export { type CreateRepoOptions, GITHUB_SCOPES, type GitHubAuthDiagnosis, type GitHubAuthSource, GitHubRepoError, GitHubRunnerError, type GitHubScopeStatus, GitHubSecretsError, type RepoRunner, type VsCodeSessionOptions, checkGitHubScopes, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession };
|
|
@@ -55,6 +55,24 @@ declare class GitHubRepoError extends Error {
|
|
|
55
55
|
}
|
|
56
56
|
/** Returns the GitHub login of the currently authenticated user. */
|
|
57
57
|
declare function getCurrentUser(): Promise<string>;
|
|
58
|
+
interface GitHubScopeStatus {
|
|
59
|
+
/** Granted OAuth scopes, or null when the token exposes NONE — a fine-grained
|
|
60
|
+
* PAT or GitHub App token carries no OAuth scope header; its permissions
|
|
61
|
+
* aren't a scope set, so callers MUST treat null as "unknown", never a miss. */
|
|
62
|
+
granted: string[] | null;
|
|
63
|
+
/** Required scopes absent from `granted` (empty when `granted` is null). */
|
|
64
|
+
missing: string[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Read the authenticated token's granted OAuth scopes from the GitHub API
|
|
68
|
+
* `x-oauth-scopes` response header and diff them against `required`. A classic
|
|
69
|
+
* OAuth/PAT token returns a (possibly empty) comma-separated header; a
|
|
70
|
+
* fine-grained PAT / GitHub App token omits it entirely → `granted: null`.
|
|
71
|
+
* Reading your own user needs no special scope, so this succeeds for any VALID
|
|
72
|
+
* token regardless of scopes (and throws, like the other ops, on a bad token /
|
|
73
|
+
* network error — callers decide whether that is blocking).
|
|
74
|
+
*/
|
|
75
|
+
declare function checkGitHubScopes(required?: readonly string[]): Promise<GitHubScopeStatus>;
|
|
58
76
|
interface CreateRepoOptions {
|
|
59
77
|
/** Make the repo private. Default: true. */
|
|
60
78
|
private?: boolean;
|
|
@@ -127,4 +145,4 @@ declare function setRepoSecrets(ownerRepo: string, secrets: Record<string, strin
|
|
|
127
145
|
/** List configured secret names (returns empty array on any error). */
|
|
128
146
|
declare function listSecretNames(ownerRepo: string): Promise<string[]>;
|
|
129
147
|
|
|
130
|
-
export { type CreateRepoOptions, GITHUB_SCOPES, type GitHubAuthDiagnosis, type GitHubAuthSource, GitHubRepoError, GitHubRunnerError, GitHubSecretsError, type RepoRunner, type VsCodeSessionOptions, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession };
|
|
148
|
+
export { type CreateRepoOptions, GITHUB_SCOPES, type GitHubAuthDiagnosis, type GitHubAuthSource, GitHubRepoError, GitHubRunnerError, type GitHubScopeStatus, GitHubSecretsError, type RepoRunner, type VsCodeSessionOptions, checkGitHubScopes, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession };
|
|
@@ -8095,6 +8095,18 @@ async function getCurrentUser() {
|
|
|
8095
8095
|
wrap(err, "GitHub authentication failed");
|
|
8096
8096
|
}
|
|
8097
8097
|
}
|
|
8098
|
+
async function checkGitHubScopes(required = GITHUB_SCOPES) {
|
|
8099
|
+
try {
|
|
8100
|
+
const ctx = await newContext();
|
|
8101
|
+
const res = await ctx.octokit.rest.users.getAuthenticated();
|
|
8102
|
+
const header = res.headers["x-oauth-scopes"];
|
|
8103
|
+
if (header === void 0 || header === null) return { granted: null, missing: [] };
|
|
8104
|
+
const granted = String(header).split(",").map((s) => s.trim()).filter(Boolean);
|
|
8105
|
+
return { granted, missing: required.filter((s) => !granted.includes(s)) };
|
|
8106
|
+
} catch (err) {
|
|
8107
|
+
wrap(err, "GitHub scope check failed");
|
|
8108
|
+
}
|
|
8109
|
+
}
|
|
8098
8110
|
async function createRepo(name, opts = {}) {
|
|
8099
8111
|
try {
|
|
8100
8112
|
const ctx = await newContext();
|
|
@@ -9023,6 +9035,7 @@ export {
|
|
|
9023
9035
|
GitHubRepoError,
|
|
9024
9036
|
GitHubRunnerError,
|
|
9025
9037
|
GitHubSecretsError,
|
|
9038
|
+
checkGitHubScopes,
|
|
9026
9039
|
createPullRequest,
|
|
9027
9040
|
createRegistrationToken,
|
|
9028
9041
|
createRepo,
|
package/dist/scripts/index.cjs
CHANGED
|
@@ -78995,6 +78995,8 @@ __export(scripts_exports, {
|
|
|
78995
78995
|
catalogExists: () => catalogExists,
|
|
78996
78996
|
catalogExplorerUrl: () => catalogExplorerUrl,
|
|
78997
78997
|
checkDatabricksAuth: () => checkDatabricksAuth,
|
|
78998
|
+
checkGitHubScopes: () => checkGitHubScopes,
|
|
78999
|
+
checkGitHubWorkflowScope: () => checkGitHubWorkflowScope,
|
|
78998
79000
|
checkoutBranch: () => checkoutBranch,
|
|
78999
79001
|
checkoutDetached: () => checkoutDetached,
|
|
79000
79002
|
checkoutPaired: () => checkoutPaired,
|
|
@@ -79139,6 +79141,7 @@ __export(scripts_exports, {
|
|
|
79139
79141
|
getTargetNames: () => getTargetNames,
|
|
79140
79142
|
gitBranchExists: () => gitBranchExists,
|
|
79141
79143
|
gitInit: () => gitInit,
|
|
79144
|
+
githubWorkflowScopePrereqMessage: () => githubWorkflowScopePrereqMessage,
|
|
79142
79145
|
grantLakebasePermission: () => grantLakebasePermission,
|
|
79143
79146
|
grantUcCatalogPermission: () => grantUcCatalogPermission,
|
|
79144
79147
|
hasDotnetMarker: () => hasDotnetMarker,
|
|
@@ -85947,6 +85950,18 @@ async function getCurrentUser() {
|
|
|
85947
85950
|
wrap(err, "GitHub authentication failed");
|
|
85948
85951
|
}
|
|
85949
85952
|
}
|
|
85953
|
+
async function checkGitHubScopes(required = GITHUB_SCOPES) {
|
|
85954
|
+
try {
|
|
85955
|
+
const ctx = await newContext();
|
|
85956
|
+
const res = await ctx.octokit.rest.users.getAuthenticated();
|
|
85957
|
+
const header = res.headers["x-oauth-scopes"];
|
|
85958
|
+
if (header === void 0 || header === null) return { granted: null, missing: [] };
|
|
85959
|
+
const granted = String(header).split(",").map((s2) => s2.trim()).filter(Boolean);
|
|
85960
|
+
return { granted, missing: required.filter((s2) => !granted.includes(s2)) };
|
|
85961
|
+
} catch (err) {
|
|
85962
|
+
wrap(err, "GitHub scope check failed");
|
|
85963
|
+
}
|
|
85964
|
+
}
|
|
85950
85965
|
async function createRepo(name, opts = {}) {
|
|
85951
85966
|
try {
|
|
85952
85967
|
const ctx = await newContext();
|
|
@@ -88943,8 +88958,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
|
|
|
88943
88958
|
var cached;
|
|
88944
88959
|
function substrateSelfVersion() {
|
|
88945
88960
|
if (cached !== void 0) return cached;
|
|
88946
|
-
if ("0.3.
|
|
88947
|
-
cached = "0.3.
|
|
88961
|
+
if ("0.3.6".length > 0) {
|
|
88962
|
+
cached = "0.3.6";
|
|
88948
88963
|
return cached;
|
|
88949
88964
|
}
|
|
88950
88965
|
cached = "unknown";
|
|
@@ -90637,6 +90652,22 @@ async function checkDatabricksAuth(host, run = (args) => runDatabricks(args, { h
|
|
|
90637
90652
|
return { ok: false, reason: lastLines(e2.stderr, 2) || e2.message || "databricks auth token failed" };
|
|
90638
90653
|
}
|
|
90639
90654
|
}
|
|
90655
|
+
async function checkGitHubWorkflowScope(probe = () => checkGitHubScopes(["workflow"])) {
|
|
90656
|
+
try {
|
|
90657
|
+
const { granted, missing } = await probe();
|
|
90658
|
+
if (granted === null) return { ok: true };
|
|
90659
|
+
if (missing.includes("workflow")) {
|
|
90660
|
+
return { ok: false, reason: `token grants [${granted.join(", ") || "none"}] but not \`workflow\`` };
|
|
90661
|
+
}
|
|
90662
|
+
return { ok: true };
|
|
90663
|
+
} catch {
|
|
90664
|
+
return { ok: true };
|
|
90665
|
+
}
|
|
90666
|
+
}
|
|
90667
|
+
function githubWorkflowScopePrereqMessage(reason) {
|
|
90668
|
+
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 ? `
|
|
90669
|
+
(${reason})` : "");
|
|
90670
|
+
}
|
|
90640
90671
|
function databricksAuthPrereqMessage(host, reason) {
|
|
90641
90672
|
const hostFlag = host ? ` --host ${host.replace(/\/+$/, "")}` : "";
|
|
90642
90673
|
return `Databricks authentication is required before creating a project. Run: databricks auth login${hostFlag}` + (reason ? `
|
|
@@ -91813,6 +91844,9 @@ function ensurePythonBddDeps(args) {
|
|
|
91813
91844
|
}
|
|
91814
91845
|
var RUN_TESTS_E2E_MARKER = "# run Playwright E2E suite when configured";
|
|
91815
91846
|
var CLIENT_E2E_MARKER = "# run client Playwright E2E suite when configured";
|
|
91847
|
+
var escapeRe = (s2) => s2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
91848
|
+
var RUN_TESTS_E2E_MARKER_LINE = new RegExp(`^${escapeRe(RUN_TESTS_E2E_MARKER)}$`, "m");
|
|
91849
|
+
var CLIENT_E2E_MARKER_LINE = new RegExp(`^${escapeRe(CLIENT_E2E_MARKER)}$`, "m");
|
|
91816
91850
|
function runTestsE2eBlock() {
|
|
91817
91851
|
return [
|
|
91818
91852
|
"",
|
|
@@ -91904,14 +91938,22 @@ function addE2eToRunTestsScript(args) {
|
|
|
91904
91938
|
return { patched: false, inserted: false };
|
|
91905
91939
|
}
|
|
91906
91940
|
const original = fs15.readFileSync(scriptPath, "utf8");
|
|
91907
|
-
const
|
|
91908
|
-
const
|
|
91941
|
+
const baseMarker = RUN_TESTS_E2E_MARKER_LINE.exec(original);
|
|
91942
|
+
const hasBase = baseMarker !== null;
|
|
91943
|
+
const hasClient = CLIENT_E2E_MARKER_LINE.test(original);
|
|
91909
91944
|
if (hasBase && hasClient) {
|
|
91910
91945
|
return { patched: true, inserted: false };
|
|
91911
91946
|
}
|
|
91912
|
-
const cut = hasBase ? original.slice(0,
|
|
91947
|
+
const cut = hasBase ? original.slice(0, baseMarker.index) : original;
|
|
91913
91948
|
const base = cut.replace(/\n+$/, "\n");
|
|
91914
|
-
|
|
91949
|
+
const assembled = base + runTestsE2eBlock();
|
|
91950
|
+
const BODY_SENTINEL = 'REPO_ROOT="$(cd';
|
|
91951
|
+
if (original.includes(BODY_SENTINEL) && !assembled.includes(BODY_SENTINEL)) {
|
|
91952
|
+
throw new Error(
|
|
91953
|
+
`addE2eToRunTestsScript: refusing to write ${scriptPath} \u2014 the E2E assembly would drop the primary-suite body (REPO_ROOT/pytest/vitest). This is the marker-match clobber; the marker must anchor to the appended block's own line, not a prose mention.`
|
|
91954
|
+
);
|
|
91955
|
+
}
|
|
91956
|
+
fs15.writeFileSync(scriptPath, assembled, "utf8");
|
|
91915
91957
|
return { patched: true, inserted: true };
|
|
91916
91958
|
}
|
|
91917
91959
|
function enableE2eForProject(args) {
|
|
@@ -92956,6 +92998,13 @@ async function createProject(input, progress) {
|
|
|
92956
92998
|
if (!auth7.ok) {
|
|
92957
92999
|
throw new Error(databricksAuthPrereqMessage(host, auth7.reason));
|
|
92958
93000
|
}
|
|
93001
|
+
if (useGithub) {
|
|
93002
|
+
report("Checking GitHub token scopes...");
|
|
93003
|
+
const scope = await checkGitHubWorkflowScope();
|
|
93004
|
+
if (!scope.ok) {
|
|
93005
|
+
throw new Error(githubWorkflowScopePrereqMessage(scope.reason));
|
|
93006
|
+
}
|
|
93007
|
+
}
|
|
92959
93008
|
if (useGithub) {
|
|
92960
93009
|
report("Creating GitHub repository...", fullRepoName);
|
|
92961
93010
|
await createRepo(fullRepoName, {
|
|
@@ -97694,6 +97743,40 @@ async function checkGitRemote(projectDir) {
|
|
|
97694
97743
|
};
|
|
97695
97744
|
}
|
|
97696
97745
|
}
|
|
97746
|
+
async function checkGitHubTokenScope(probe = () => checkGitHubScopes(["workflow"])) {
|
|
97747
|
+
try {
|
|
97748
|
+
const { granted, missing } = await probe();
|
|
97749
|
+
if (granted === null) {
|
|
97750
|
+
return {
|
|
97751
|
+
name: "github-token-scope",
|
|
97752
|
+
status: "skip",
|
|
97753
|
+
message: "GitHub token scopes not visible (fine-grained PAT / App token) - `workflow` scope unverified"
|
|
97754
|
+
};
|
|
97755
|
+
}
|
|
97756
|
+
if (missing.includes("workflow")) {
|
|
97757
|
+
return {
|
|
97758
|
+
name: "github-token-scope",
|
|
97759
|
+
status: "fail",
|
|
97760
|
+
message: "GitHub token lacks the `workflow` scope - pushes touching .github/workflows/* will be rejected",
|
|
97761
|
+
detail: { granted },
|
|
97762
|
+
hint: "Grant it with `gh auth refresh -h github.com -s workflow`, re-sign in to GitHub in VS Code and approve the workflow scope, or set GITHUB_TOKEN to a PAT that includes `workflow`."
|
|
97763
|
+
};
|
|
97764
|
+
}
|
|
97765
|
+
return {
|
|
97766
|
+
name: "github-token-scope",
|
|
97767
|
+
status: "ok",
|
|
97768
|
+
message: "GitHub token has the `workflow` scope",
|
|
97769
|
+
detail: { granted }
|
|
97770
|
+
};
|
|
97771
|
+
} catch (err) {
|
|
97772
|
+
return {
|
|
97773
|
+
name: "github-token-scope",
|
|
97774
|
+
status: "skip",
|
|
97775
|
+
message: "GitHub token scope check skipped (no token resolved, or GitHub unreachable)",
|
|
97776
|
+
detail: { error: err.message }
|
|
97777
|
+
};
|
|
97778
|
+
}
|
|
97779
|
+
}
|
|
97697
97780
|
function checkLanguage(projectDir) {
|
|
97698
97781
|
try {
|
|
97699
97782
|
const lang = detectLanguage(projectDir);
|
|
@@ -97803,6 +97886,7 @@ async function runDoctor2(args = {}) {
|
|
|
97803
97886
|
host
|
|
97804
97887
|
);
|
|
97805
97888
|
const gitRemote = await checkGitRemote(projectDir);
|
|
97889
|
+
const githubTokenScope = await checkGitHubTokenScope();
|
|
97806
97890
|
const language = checkLanguage(projectDir);
|
|
97807
97891
|
const hooks = checkHooks(projectDir);
|
|
97808
97892
|
const workflowDrift = checkWorkflowDrift(projectDir);
|
|
@@ -97824,6 +97908,7 @@ async function runDoctor2(args = {}) {
|
|
|
97824
97908
|
configProfile,
|
|
97825
97909
|
lakebaseProject,
|
|
97826
97910
|
gitRemote,
|
|
97911
|
+
githubTokenScope,
|
|
97827
97912
|
language,
|
|
97828
97913
|
hooks,
|
|
97829
97914
|
workflowDrift
|
|
@@ -98571,6 +98656,8 @@ function isCliEntry(importMetaUrl2) {
|
|
|
98571
98656
|
catalogExists,
|
|
98572
98657
|
catalogExplorerUrl,
|
|
98573
98658
|
checkDatabricksAuth,
|
|
98659
|
+
checkGitHubScopes,
|
|
98660
|
+
checkGitHubWorkflowScope,
|
|
98574
98661
|
checkoutBranch,
|
|
98575
98662
|
checkoutDetached,
|
|
98576
98663
|
checkoutPaired,
|
|
@@ -98715,6 +98802,7 @@ function isCliEntry(importMetaUrl2) {
|
|
|
98715
98802
|
getTargetNames,
|
|
98716
98803
|
gitBranchExists,
|
|
98717
98804
|
gitInit,
|
|
98805
|
+
githubWorkflowScopePrereqMessage,
|
|
98718
98806
|
grantLakebasePermission,
|
|
98719
98807
|
grantUcCatalogPermission,
|
|
98720
98808
|
hasDotnetMarker,
|
package/dist/scripts/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { CreateRepoOptions, GITHUB_SCOPES, GitHubAuthDiagnosis, GitHubAuthSource, GitHubRepoError, GitHubRunnerError, GitHubSecretsError, RepoRunner, VsCodeSessionOptions, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession } from './github/index.cjs';
|
|
1
|
+
export { CreateRepoOptions, GITHUB_SCOPES, GitHubAuthDiagnosis, GitHubAuthSource, GitHubRepoError, GitHubRunnerError, GitHubScopeStatus, GitHubSecretsError, RepoRunner, VsCodeSessionOptions, checkGitHubScopes, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession } from './github/index.cjs';
|
|
2
2
|
export { C as CreatePullRequestArgs, F as FastForwardBranchArgs, G as GitHubPullRequestError, M as MergePairedPullRequestArgs, a as MergePairedPullRequestResult, b as MergePullRequestArgs, c as MergePullRequestResult, P as PullRequestCheck, d as PullRequestFile, e as PullRequestInfo, f as PullRequestReview, W as WorkflowRunSummary, g as createPullRequest, h as fastForwardBranch, i as getPullRequest, j as getPullRequestComments, k as getPullRequestFiles, l as getPullRequestReviews, m as listIssueComments, n as listWorkflowRuns, o as mergePairedPullRequest, p as mergePullRequest } from '../pr-e-E4aP4j.cjs';
|
|
3
|
-
export { AbandonFeatureArgs, AbandonFeatureResult, AddE2eToRunTestsScriptArgs, AddE2eToRunTestsScriptResult, AddInfraToPackageJsonArgs, AddInfraToPackageJsonResult, AddInfraToRunTestsScriptArgs, AddInfraToRunTestsScriptResult, AddPlaywrightToPackageJsonArgs, AddPlaywrightToPackageJsonResult, AddPythonE2eDepsArgs, AddPythonE2eDepsResult, AdoptLakebaseProjectArgs, AdoptLakebaseProjectResult, AdoptStateArgs, AdoptStateResult, AppServicePrincipal, AppliedSchemaMigration, ApplySchemaMigrationsArgs, ApplySchemaMigrationsResult, BranchLookupOpts, BranchMetadata, CONVENTION_TIER_DEFAULTS, CatalogExistsArgs, CheckoutMode, CheckoutPairedArgs, CheckoutPairedResult, ClaimFeatureBranchArgs, ClaimFeatureBranchResult, ClaimedOrphan, ClientFramework, CommandDriftReport, CommandFileEntry, CommandFileStatus, ConnectionArgs, ConsortSetupHooks, CreateBranchArgs, CreateConventionBranchArgs, CreateConventionPairedBranchArgs, CreateLongRunningBranchArgs, CreateLongRunningBranchResult, CreatePairedBranchArgs, CreatePairedBranchResult, CreateProjectArgs, CreateProjectResult, CutBackupArgs, CutBackupResult, DEFAULT_PROTECTED_TIER_NAMES, DOTNET_EFCORE_DEFAULTS, DOTNET_FLYWAY_DIR, DatabricksProfile, DeleteAppEndpointArgs, DeleteAppEndpointResult, DeleteBranchArgs, DeletePairedBranchArgs, DeletePairedBranchResult, DeployClaudeCommandsOptions, DeployClaudeCommandsResult, DeployEnvExampleArgs, DeployLanguageProjectArgs, DeploySpringStarterArgs, DeployTarget, DeployTargetsConfig, DetectCommandDriftArgs, DetectScaffoldedDriftArgs, DetectWorkflowDriftArgs, DoctorArgs, DoctorFinding, DoctorReport, DoctorSeverity, DotnetMigrationTool, DsnArgs, DsnResult, EF_DESIGN_PACKAGE, EfCoreProject, EnableE2eForProjectArgs, EnableE2eForProjectResult, EnableInfraForProjectArgs, EnableInfraForProjectResult, EndpointInfo, EnsureAppEndpointArgs, EnsureAppEndpointResult, EnsureEndpointArgs, EnsureLakebaseSecretAuthArgs, EnsureLakebaseSecretAuthResult, EnsureProfilePinnedArgs, EnsureProfilePinnedResult, EnsureSchemaAndVolumeArgs, EnsureSchemaAndVolumeResult, FIXABLE_FINDING_IDS, FixFindingArgs, FixFindingResult, FixableFindingId, GateInvariant, GateStatus, GenerateAppYamlOptions, GenerateMavenProjectOptions, GetAppEndpointArgs, GetAppEndpointResult, GetAppServicePrincipalArgs, GetCiAppEndpointArgs, GetCiAppEndpointResult, GetConnectionArgs, GetCredentialArgs, GetEndpointArgs, GetSchemaDiffArgs, GrantLakebasePermissionArgs, GrantLakebasePermissionResult, GrantUcCatalogPermissionArgs, GrantUcCatalogPermissionResult, HealthDoctorReport, HookVerification, InfraCheckResult, InfraSuiteResult, InitWorkflowStateArgs, InitializrMetadata, InitializrNetworkError, InitializrParseError, InstallPlaywrightArgs, InstallPlaywrightOptions, InstallPlaywrightResult, LakebaseBranchError, LakebaseBranchInfo, LakebaseBranchTtlTooLongError, LakebasePermissionLevel, LakebaseProjectArgs, LakebaseProjectError, LakebaseProjectInfo, LakebaseProjectMetadata, ListSchemaMigrationsArgs, MAVEN_FLYWAY_DIR, MIGRATION_DEFAULTS, MergeArgs, MergePairedArgs, MergePairedResult, MergeResult, MigrationDefaults, MigrationLanguage, MigrationLayout, ModifiedSchemaObject, NODE_E2E_TEMPLATE_FILES, OrphanCandidate, PLAYWRIGHT_TEMPLATE_FILES, PLAYWRIGHT_TEST_VERSION_RANGE, PYTEST_BDD_VERSION_RANGE, PYTEST_PLAYWRIGHT_VERSION_RANGE, PYTHON_E2E_TEMPLATE_FILES, PendingSchemaMigration, PoolArgs, PreflightResult, PreparePrArgs, PreparePrResult, ProgressCallback, ProjectLanguage, PropagateCredentialsArgs, PropagateCredentialsResult, ProtectedBranchCommitError, QueryBranchSchemaArgs, RecoverOrphansArgs, RecoverOrphansResult, ReleaseArgs, ReleaseResult, RemoveRunnerArgs, ResolveDatabricksHostArgs, ResolveMigrationLayoutArgs, RollbackDeployArgs, RollbackDeployResult, RollbackOptions, RollbackSchemaMigrationArgs, RollbackSchemaMigrationResult, RunDoctorDeps, RunInfraSuiteArgs, RunPlaywrightInstallArgs, RunPlaywrightInstallResult, RunnerInfo, RunnerReportFn, RunnerType, SCM_STATES, STATE_FILE_REL, ScaffoldAllArgs, ScaffoldOptions, ScaffoldReportFn, ScaffoldStaticAllArgs, ScaffoldStaticAllResult, ScaffoldedDriftReport, SchemaColumn, SchemaDiffResult, SchemaMigrationError, SchemaMigrationFile, SchemaMigrationLanguage, SchemaMigrationStatusArgs, SchemaMigrationStatusResult, SchemaMigrationToolName, SchemaObject, SchemaQueryRow, ScmAbandonError, ScmAdoptError, ScmClaimError, ScmDoctorFixError, ScmMergeError, ScmPreparePrError, ScmRecoverError, ScmState, ScmWaitCiError, ScmWorkflowState, SetupRunnerArgs, SftddSetupHooks, SpringInitializrClient, SpringJvmLanguage, StaleBranchFinding, SyncEnvArgs, SyncEnvResult, TableSchema, TierTopology, TryCreateCatalogArgs, TryCreateCatalogResult, UcCatalogPermission, UpdateEnvConnectionArgs, UpdateWorkflowsArgs, UpdateWorkflowsResult, UploadDirectoryArgs, UploadDirectoryResult, ValidateAppOptions, ValidateAppResult, ValidationError, ValidationResult, WaitCiArgs, WaitCiResult, WaitForBranchAuthReadyArgs, WaitForBranchReadyArgs, WorkflowDriftReport, WorkflowFileStatus, WorkflowFileUpdate, WorkflowStatus, WorkflowUpdateOutcome, WorkflowVerification, WriteEnvFileArgs, WritePlaywrightTemplatesArgs, WritePlaywrightTemplatesResult, _testMakeBrownfieldFixture, abandonFeatureBranch, addE2eToRunTestsScript, addInfraToPackageJson, addInfraToRunTestsScript, addPlaywrightToPackageJson, adoptLakebaseProject, adoptScmState, applySchemaMigrations, assertAdoptionPreflight, assertCleanForFork, assertCommitTargetNotProtected, assertCreatedProjectReady, buildPostgresUrl, buildSchemaQuery, cacheProjectRetention, catalogExists, catalogExplorerUrl, checkDatabricksAuth, 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, 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, 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 } from './lakebase/index.cjs';
|
|
3
|
+
export { AbandonFeatureArgs, AbandonFeatureResult, AddE2eToRunTestsScriptArgs, AddE2eToRunTestsScriptResult, AddInfraToPackageJsonArgs, AddInfraToPackageJsonResult, AddInfraToRunTestsScriptArgs, AddInfraToRunTestsScriptResult, AddPlaywrightToPackageJsonArgs, AddPlaywrightToPackageJsonResult, AddPythonE2eDepsArgs, AddPythonE2eDepsResult, AdoptLakebaseProjectArgs, AdoptLakebaseProjectResult, AdoptStateArgs, AdoptStateResult, AppServicePrincipal, AppliedSchemaMigration, ApplySchemaMigrationsArgs, ApplySchemaMigrationsResult, BranchLookupOpts, BranchMetadata, CONVENTION_TIER_DEFAULTS, CatalogExistsArgs, CheckoutMode, CheckoutPairedArgs, CheckoutPairedResult, ClaimFeatureBranchArgs, ClaimFeatureBranchResult, ClaimedOrphan, ClientFramework, CommandDriftReport, CommandFileEntry, CommandFileStatus, ConnectionArgs, ConsortSetupHooks, CreateBranchArgs, CreateConventionBranchArgs, CreateConventionPairedBranchArgs, CreateLongRunningBranchArgs, CreateLongRunningBranchResult, CreatePairedBranchArgs, CreatePairedBranchResult, CreateProjectArgs, CreateProjectResult, CutBackupArgs, CutBackupResult, DEFAULT_PROTECTED_TIER_NAMES, DOTNET_EFCORE_DEFAULTS, DOTNET_FLYWAY_DIR, DatabricksProfile, DeleteAppEndpointArgs, DeleteAppEndpointResult, DeleteBranchArgs, DeletePairedBranchArgs, DeletePairedBranchResult, DeployClaudeCommandsOptions, DeployClaudeCommandsResult, DeployEnvExampleArgs, DeployLanguageProjectArgs, DeploySpringStarterArgs, DeployTarget, DeployTargetsConfig, DetectCommandDriftArgs, DetectScaffoldedDriftArgs, DetectWorkflowDriftArgs, DoctorArgs, DoctorFinding, DoctorReport, DoctorSeverity, DotnetMigrationTool, DsnArgs, DsnResult, EF_DESIGN_PACKAGE, EfCoreProject, EnableE2eForProjectArgs, EnableE2eForProjectResult, EnableInfraForProjectArgs, EnableInfraForProjectResult, EndpointInfo, EnsureAppEndpointArgs, EnsureAppEndpointResult, EnsureEndpointArgs, EnsureLakebaseSecretAuthArgs, EnsureLakebaseSecretAuthResult, EnsureProfilePinnedArgs, EnsureProfilePinnedResult, EnsureSchemaAndVolumeArgs, EnsureSchemaAndVolumeResult, FIXABLE_FINDING_IDS, FixFindingArgs, FixFindingResult, FixableFindingId, GateInvariant, GateStatus, GenerateAppYamlOptions, GenerateMavenProjectOptions, GetAppEndpointArgs, GetAppEndpointResult, GetAppServicePrincipalArgs, GetCiAppEndpointArgs, GetCiAppEndpointResult, GetConnectionArgs, GetCredentialArgs, GetEndpointArgs, GetSchemaDiffArgs, GrantLakebasePermissionArgs, GrantLakebasePermissionResult, GrantUcCatalogPermissionArgs, GrantUcCatalogPermissionResult, HealthDoctorReport, HookVerification, InfraCheckResult, InfraSuiteResult, InitWorkflowStateArgs, InitializrMetadata, InitializrNetworkError, InitializrParseError, InstallPlaywrightArgs, InstallPlaywrightOptions, InstallPlaywrightResult, LakebaseBranchError, LakebaseBranchInfo, LakebaseBranchTtlTooLongError, LakebasePermissionLevel, LakebaseProjectArgs, LakebaseProjectError, LakebaseProjectInfo, LakebaseProjectMetadata, ListSchemaMigrationsArgs, MAVEN_FLYWAY_DIR, MIGRATION_DEFAULTS, MergeArgs, MergePairedArgs, MergePairedResult, MergeResult, MigrationDefaults, MigrationLanguage, MigrationLayout, ModifiedSchemaObject, NODE_E2E_TEMPLATE_FILES, OrphanCandidate, PLAYWRIGHT_TEMPLATE_FILES, PLAYWRIGHT_TEST_VERSION_RANGE, PYTEST_BDD_VERSION_RANGE, PYTEST_PLAYWRIGHT_VERSION_RANGE, PYTHON_E2E_TEMPLATE_FILES, PendingSchemaMigration, PoolArgs, PreflightResult, PreparePrArgs, PreparePrResult, ProgressCallback, ProjectLanguage, PropagateCredentialsArgs, PropagateCredentialsResult, ProtectedBranchCommitError, QueryBranchSchemaArgs, RecoverOrphansArgs, RecoverOrphansResult, ReleaseArgs, ReleaseResult, RemoveRunnerArgs, ResolveDatabricksHostArgs, ResolveMigrationLayoutArgs, RollbackDeployArgs, RollbackDeployResult, RollbackOptions, RollbackSchemaMigrationArgs, RollbackSchemaMigrationResult, RunDoctorDeps, RunInfraSuiteArgs, RunPlaywrightInstallArgs, RunPlaywrightInstallResult, RunnerInfo, RunnerReportFn, RunnerType, SCM_STATES, STATE_FILE_REL, ScaffoldAllArgs, ScaffoldOptions, ScaffoldReportFn, ScaffoldStaticAllArgs, ScaffoldStaticAllResult, ScaffoldedDriftReport, SchemaColumn, SchemaDiffResult, SchemaMigrationError, SchemaMigrationFile, SchemaMigrationLanguage, SchemaMigrationStatusArgs, SchemaMigrationStatusResult, SchemaMigrationToolName, SchemaObject, SchemaQueryRow, ScmAbandonError, ScmAdoptError, ScmClaimError, ScmDoctorFixError, ScmMergeError, ScmPreparePrError, ScmRecoverError, ScmState, ScmWaitCiError, ScmWorkflowState, SetupRunnerArgs, SftddSetupHooks, SpringInitializrClient, SpringJvmLanguage, StaleBranchFinding, SyncEnvArgs, SyncEnvResult, TableSchema, TierTopology, TryCreateCatalogArgs, TryCreateCatalogResult, UcCatalogPermission, UpdateEnvConnectionArgs, UpdateWorkflowsArgs, UpdateWorkflowsResult, UploadDirectoryArgs, UploadDirectoryResult, ValidateAppOptions, ValidateAppResult, ValidationError, ValidationResult, WaitCiArgs, WaitCiResult, WaitForBranchAuthReadyArgs, WaitForBranchReadyArgs, WorkflowDriftReport, WorkflowFileStatus, WorkflowFileUpdate, WorkflowStatus, WorkflowUpdateOutcome, WorkflowVerification, WriteEnvFileArgs, WritePlaywrightTemplatesArgs, 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, 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 } from './lakebase/index.cjs';
|
|
4
4
|
export { AddRemoteArgs, AheadBehind, AmendArgs, BranchesAtCommitArgs, CheckoutBranchArgs, CloneRepoArgs, CommitAllArgs, CommitAndPushArgs, CommitArgs, CommitFilesArgs, CreateTagArgs, CreateWorktreeArgs, CwdOnlyArgs, DeleteLocalBranchArgs, DeleteRemoteBranchArgs, DeleteRemoteTagArgs, DeleteTagArgs, DiffFilesArgs, DiscardAllChangesArgs, FetchArgs, FileChangeShort, GetFileAtRefArgs, GetMergeBaseArgs, GitBranchInfo, HasRemoteBranchArgs, IsDirtyArgs, ListLocalBranchesArgs, ListMigrationsOnBranchArgs, ListRemoteBranchesArgs, LogRawArgs, MergeBranchArgs, MergeCommit, NearestParent, OutgoingIncomingArgs, ProtectedBranchError, PublishBranchArgs, PullFromArgs, PushCurrentBranchForPrArgs, PushToArgs, RebaseBranchArgs, RecentMergesArgs, RemoveRemoteArgs, RemoveWorktreeArgs, RenameBranchArgs, ResolveNearestParentArgs, ShaArgs, StashIndexArgs, StashWithMessageArgs, UndoLastCommitArgs, WorkflowScopeError, abortRebase, addRemote, checkoutBranch, checkoutDetached, cherryPick, cloneRepo, commit, commitAll, commitAllIfChanged, commitAllSignedOff, commitAmend, commitAndPush, commitSignedOff, createTag, createWorktree, deleteLocalBranch, deleteRemoteBranch, deleteRemoteTag, deleteTag, discardAllChanges, fetch, getAheadBehind, getBranchesAtCommit, getCommitFiles, getCurrentBranch, getDiffFiles, getFileAtRef, getGitHubUrl, getIncomingCommits, getLogRaw, getLogShortstat, getMergeBase, getNearestParentName, getOutgoingCommits, getOwnerRepo, getRecentMerges, getRepoRoot, gitBranchExists, gitInit, hasRemoteBranch, hasUpstream, isDirty, isRebasing, listLocalBranches, listMigrationsOnBranch, listRemoteBranches, listRemotes, listTags, listWorktrees, mergeBranch, publishBranch, pull, pullFrom, pullRebase, push, pushCurrentBranchForPr, pushTo, rebaseBranch, removeRemote, removeWorktree, renameBranch, resolveDefaultBranch, resolveNearestParent, revert, stash, stashApply, stashDrop, stashDropAll, stashIncludeUntracked, stashList, stashPop, stashStaged, sync, undoLastCommit } from './git/index.cjs';
|
|
5
5
|
export { CopyDirSubstitutedArgs, LAKEBASE_BRANCH_NAME_MAX, OwnerRepo, PROXY_ENV_KEYS, PollProbeDone, PollProbePending, PollProbeResult, PollUntilArgs, PollUntilDoneResult, PollUntilResult, PollUntilTimeoutResult, copyDirSubstituted, delay, extractZipToDir, formatOwnerRepo, isCliEntry, parseOwnerRepo, patchPomForLakebase, pollUntil, pollUntilDefined, proxyEnvSubset, sanitizeArtifactId, sanitizeBranchName, withProxyEnv } from './util/index.cjs';
|
|
6
6
|
export { C as CwdOnly, E as ExecOptions, e as exec, s as shq } from '../exec-CwxSWhlz.cjs';
|
package/dist/scripts/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { CreateRepoOptions, GITHUB_SCOPES, GitHubAuthDiagnosis, GitHubAuthSource, GitHubRepoError, GitHubRunnerError, GitHubSecretsError, RepoRunner, VsCodeSessionOptions, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession } from './github/index.js';
|
|
1
|
+
export { CreateRepoOptions, GITHUB_SCOPES, GitHubAuthDiagnosis, GitHubAuthSource, GitHubRepoError, GitHubRunnerError, GitHubScopeStatus, GitHubSecretsError, RepoRunner, VsCodeSessionOptions, checkGitHubScopes, createRegistrationToken, createRepo, deleteRepo, deleteRunner, diagnoseGitHubAuth, getActionsEnabled, getCurrentUser, getRepoFullName, getRunnerIdByName, getRunnerStatus, listRepoRunners, listSecretNames, repoExists, resolveGitHubToken, setRepoSecret, setRepoSecrets, tryGhAuthToken, tryVsCodeSession } from './github/index.js';
|
|
2
2
|
export { C as CreatePullRequestArgs, F as FastForwardBranchArgs, G as GitHubPullRequestError, M as MergePairedPullRequestArgs, a as MergePairedPullRequestResult, b as MergePullRequestArgs, c as MergePullRequestResult, P as PullRequestCheck, d as PullRequestFile, e as PullRequestInfo, f as PullRequestReview, W as WorkflowRunSummary, g as createPullRequest, h as fastForwardBranch, i as getPullRequest, j as getPullRequestComments, k as getPullRequestFiles, l as getPullRequestReviews, m as listIssueComments, n as listWorkflowRuns, o as mergePairedPullRequest, p as mergePullRequest } from '../pr-e-E4aP4j.js';
|
|
3
|
-
export { AbandonFeatureArgs, AbandonFeatureResult, AddE2eToRunTestsScriptArgs, AddE2eToRunTestsScriptResult, AddInfraToPackageJsonArgs, AddInfraToPackageJsonResult, AddInfraToRunTestsScriptArgs, AddInfraToRunTestsScriptResult, AddPlaywrightToPackageJsonArgs, AddPlaywrightToPackageJsonResult, AddPythonE2eDepsArgs, AddPythonE2eDepsResult, AdoptLakebaseProjectArgs, AdoptLakebaseProjectResult, AdoptStateArgs, AdoptStateResult, AppServicePrincipal, AppliedSchemaMigration, ApplySchemaMigrationsArgs, ApplySchemaMigrationsResult, BranchLookupOpts, BranchMetadata, CONVENTION_TIER_DEFAULTS, CatalogExistsArgs, CheckoutMode, CheckoutPairedArgs, CheckoutPairedResult, ClaimFeatureBranchArgs, ClaimFeatureBranchResult, ClaimedOrphan, ClientFramework, CommandDriftReport, CommandFileEntry, CommandFileStatus, ConnectionArgs, ConsortSetupHooks, CreateBranchArgs, CreateConventionBranchArgs, CreateConventionPairedBranchArgs, CreateLongRunningBranchArgs, CreateLongRunningBranchResult, CreatePairedBranchArgs, CreatePairedBranchResult, CreateProjectArgs, CreateProjectResult, CutBackupArgs, CutBackupResult, DEFAULT_PROTECTED_TIER_NAMES, DOTNET_EFCORE_DEFAULTS, DOTNET_FLYWAY_DIR, DatabricksProfile, DeleteAppEndpointArgs, DeleteAppEndpointResult, DeleteBranchArgs, DeletePairedBranchArgs, DeletePairedBranchResult, DeployClaudeCommandsOptions, DeployClaudeCommandsResult, DeployEnvExampleArgs, DeployLanguageProjectArgs, DeploySpringStarterArgs, DeployTarget, DeployTargetsConfig, DetectCommandDriftArgs, DetectScaffoldedDriftArgs, DetectWorkflowDriftArgs, DoctorArgs, DoctorFinding, DoctorReport, DoctorSeverity, DotnetMigrationTool, DsnArgs, DsnResult, EF_DESIGN_PACKAGE, EfCoreProject, EnableE2eForProjectArgs, EnableE2eForProjectResult, EnableInfraForProjectArgs, EnableInfraForProjectResult, EndpointInfo, EnsureAppEndpointArgs, EnsureAppEndpointResult, EnsureEndpointArgs, EnsureLakebaseSecretAuthArgs, EnsureLakebaseSecretAuthResult, EnsureProfilePinnedArgs, EnsureProfilePinnedResult, EnsureSchemaAndVolumeArgs, EnsureSchemaAndVolumeResult, FIXABLE_FINDING_IDS, FixFindingArgs, FixFindingResult, FixableFindingId, GateInvariant, GateStatus, GenerateAppYamlOptions, GenerateMavenProjectOptions, GetAppEndpointArgs, GetAppEndpointResult, GetAppServicePrincipalArgs, GetCiAppEndpointArgs, GetCiAppEndpointResult, GetConnectionArgs, GetCredentialArgs, GetEndpointArgs, GetSchemaDiffArgs, GrantLakebasePermissionArgs, GrantLakebasePermissionResult, GrantUcCatalogPermissionArgs, GrantUcCatalogPermissionResult, HealthDoctorReport, HookVerification, InfraCheckResult, InfraSuiteResult, InitWorkflowStateArgs, InitializrMetadata, InitializrNetworkError, InitializrParseError, InstallPlaywrightArgs, InstallPlaywrightOptions, InstallPlaywrightResult, LakebaseBranchError, LakebaseBranchInfo, LakebaseBranchTtlTooLongError, LakebasePermissionLevel, LakebaseProjectArgs, LakebaseProjectError, LakebaseProjectInfo, LakebaseProjectMetadata, ListSchemaMigrationsArgs, MAVEN_FLYWAY_DIR, MIGRATION_DEFAULTS, MergeArgs, MergePairedArgs, MergePairedResult, MergeResult, MigrationDefaults, MigrationLanguage, MigrationLayout, ModifiedSchemaObject, NODE_E2E_TEMPLATE_FILES, OrphanCandidate, PLAYWRIGHT_TEMPLATE_FILES, PLAYWRIGHT_TEST_VERSION_RANGE, PYTEST_BDD_VERSION_RANGE, PYTEST_PLAYWRIGHT_VERSION_RANGE, PYTHON_E2E_TEMPLATE_FILES, PendingSchemaMigration, PoolArgs, PreflightResult, PreparePrArgs, PreparePrResult, ProgressCallback, ProjectLanguage, PropagateCredentialsArgs, PropagateCredentialsResult, ProtectedBranchCommitError, QueryBranchSchemaArgs, RecoverOrphansArgs, RecoverOrphansResult, ReleaseArgs, ReleaseResult, RemoveRunnerArgs, ResolveDatabricksHostArgs, ResolveMigrationLayoutArgs, RollbackDeployArgs, RollbackDeployResult, RollbackOptions, RollbackSchemaMigrationArgs, RollbackSchemaMigrationResult, RunDoctorDeps, RunInfraSuiteArgs, RunPlaywrightInstallArgs, RunPlaywrightInstallResult, RunnerInfo, RunnerReportFn, RunnerType, SCM_STATES, STATE_FILE_REL, ScaffoldAllArgs, ScaffoldOptions, ScaffoldReportFn, ScaffoldStaticAllArgs, ScaffoldStaticAllResult, ScaffoldedDriftReport, SchemaColumn, SchemaDiffResult, SchemaMigrationError, SchemaMigrationFile, SchemaMigrationLanguage, SchemaMigrationStatusArgs, SchemaMigrationStatusResult, SchemaMigrationToolName, SchemaObject, SchemaQueryRow, ScmAbandonError, ScmAdoptError, ScmClaimError, ScmDoctorFixError, ScmMergeError, ScmPreparePrError, ScmRecoverError, ScmState, ScmWaitCiError, ScmWorkflowState, SetupRunnerArgs, SftddSetupHooks, SpringInitializrClient, SpringJvmLanguage, StaleBranchFinding, SyncEnvArgs, SyncEnvResult, TableSchema, TierTopology, TryCreateCatalogArgs, TryCreateCatalogResult, UcCatalogPermission, UpdateEnvConnectionArgs, UpdateWorkflowsArgs, UpdateWorkflowsResult, UploadDirectoryArgs, UploadDirectoryResult, ValidateAppOptions, ValidateAppResult, ValidationError, ValidationResult, WaitCiArgs, WaitCiResult, WaitForBranchAuthReadyArgs, WaitForBranchReadyArgs, WorkflowDriftReport, WorkflowFileStatus, WorkflowFileUpdate, WorkflowStatus, WorkflowUpdateOutcome, WorkflowVerification, WriteEnvFileArgs, WritePlaywrightTemplatesArgs, WritePlaywrightTemplatesResult, _testMakeBrownfieldFixture, abandonFeatureBranch, addE2eToRunTestsScript, addInfraToPackageJson, addInfraToRunTestsScript, addPlaywrightToPackageJson, adoptLakebaseProject, adoptScmState, applySchemaMigrations, assertAdoptionPreflight, assertCleanForFork, assertCommitTargetNotProtected, assertCreatedProjectReady, buildPostgresUrl, buildSchemaQuery, cacheProjectRetention, catalogExists, catalogExplorerUrl, checkDatabricksAuth, 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, 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, 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 } from './lakebase/index.js';
|
|
3
|
+
export { AbandonFeatureArgs, AbandonFeatureResult, AddE2eToRunTestsScriptArgs, AddE2eToRunTestsScriptResult, AddInfraToPackageJsonArgs, AddInfraToPackageJsonResult, AddInfraToRunTestsScriptArgs, AddInfraToRunTestsScriptResult, AddPlaywrightToPackageJsonArgs, AddPlaywrightToPackageJsonResult, AddPythonE2eDepsArgs, AddPythonE2eDepsResult, AdoptLakebaseProjectArgs, AdoptLakebaseProjectResult, AdoptStateArgs, AdoptStateResult, AppServicePrincipal, AppliedSchemaMigration, ApplySchemaMigrationsArgs, ApplySchemaMigrationsResult, BranchLookupOpts, BranchMetadata, CONVENTION_TIER_DEFAULTS, CatalogExistsArgs, CheckoutMode, CheckoutPairedArgs, CheckoutPairedResult, ClaimFeatureBranchArgs, ClaimFeatureBranchResult, ClaimedOrphan, ClientFramework, CommandDriftReport, CommandFileEntry, CommandFileStatus, ConnectionArgs, ConsortSetupHooks, CreateBranchArgs, CreateConventionBranchArgs, CreateConventionPairedBranchArgs, CreateLongRunningBranchArgs, CreateLongRunningBranchResult, CreatePairedBranchArgs, CreatePairedBranchResult, CreateProjectArgs, CreateProjectResult, CutBackupArgs, CutBackupResult, DEFAULT_PROTECTED_TIER_NAMES, DOTNET_EFCORE_DEFAULTS, DOTNET_FLYWAY_DIR, DatabricksProfile, DeleteAppEndpointArgs, DeleteAppEndpointResult, DeleteBranchArgs, DeletePairedBranchArgs, DeletePairedBranchResult, DeployClaudeCommandsOptions, DeployClaudeCommandsResult, DeployEnvExampleArgs, DeployLanguageProjectArgs, DeploySpringStarterArgs, DeployTarget, DeployTargetsConfig, DetectCommandDriftArgs, DetectScaffoldedDriftArgs, DetectWorkflowDriftArgs, DoctorArgs, DoctorFinding, DoctorReport, DoctorSeverity, DotnetMigrationTool, DsnArgs, DsnResult, EF_DESIGN_PACKAGE, EfCoreProject, EnableE2eForProjectArgs, EnableE2eForProjectResult, EnableInfraForProjectArgs, EnableInfraForProjectResult, EndpointInfo, EnsureAppEndpointArgs, EnsureAppEndpointResult, EnsureEndpointArgs, EnsureLakebaseSecretAuthArgs, EnsureLakebaseSecretAuthResult, EnsureProfilePinnedArgs, EnsureProfilePinnedResult, EnsureSchemaAndVolumeArgs, EnsureSchemaAndVolumeResult, FIXABLE_FINDING_IDS, FixFindingArgs, FixFindingResult, FixableFindingId, GateInvariant, GateStatus, GenerateAppYamlOptions, GenerateMavenProjectOptions, GetAppEndpointArgs, GetAppEndpointResult, GetAppServicePrincipalArgs, GetCiAppEndpointArgs, GetCiAppEndpointResult, GetConnectionArgs, GetCredentialArgs, GetEndpointArgs, GetSchemaDiffArgs, GrantLakebasePermissionArgs, GrantLakebasePermissionResult, GrantUcCatalogPermissionArgs, GrantUcCatalogPermissionResult, HealthDoctorReport, HookVerification, InfraCheckResult, InfraSuiteResult, InitWorkflowStateArgs, InitializrMetadata, InitializrNetworkError, InitializrParseError, InstallPlaywrightArgs, InstallPlaywrightOptions, InstallPlaywrightResult, LakebaseBranchError, LakebaseBranchInfo, LakebaseBranchTtlTooLongError, LakebasePermissionLevel, LakebaseProjectArgs, LakebaseProjectError, LakebaseProjectInfo, LakebaseProjectMetadata, ListSchemaMigrationsArgs, MAVEN_FLYWAY_DIR, MIGRATION_DEFAULTS, MergeArgs, MergePairedArgs, MergePairedResult, MergeResult, MigrationDefaults, MigrationLanguage, MigrationLayout, ModifiedSchemaObject, NODE_E2E_TEMPLATE_FILES, OrphanCandidate, PLAYWRIGHT_TEMPLATE_FILES, PLAYWRIGHT_TEST_VERSION_RANGE, PYTEST_BDD_VERSION_RANGE, PYTEST_PLAYWRIGHT_VERSION_RANGE, PYTHON_E2E_TEMPLATE_FILES, PendingSchemaMigration, PoolArgs, PreflightResult, PreparePrArgs, PreparePrResult, ProgressCallback, ProjectLanguage, PropagateCredentialsArgs, PropagateCredentialsResult, ProtectedBranchCommitError, QueryBranchSchemaArgs, RecoverOrphansArgs, RecoverOrphansResult, ReleaseArgs, ReleaseResult, RemoveRunnerArgs, ResolveDatabricksHostArgs, ResolveMigrationLayoutArgs, RollbackDeployArgs, RollbackDeployResult, RollbackOptions, RollbackSchemaMigrationArgs, RollbackSchemaMigrationResult, RunDoctorDeps, RunInfraSuiteArgs, RunPlaywrightInstallArgs, RunPlaywrightInstallResult, RunnerInfo, RunnerReportFn, RunnerType, SCM_STATES, STATE_FILE_REL, ScaffoldAllArgs, ScaffoldOptions, ScaffoldReportFn, ScaffoldStaticAllArgs, ScaffoldStaticAllResult, ScaffoldedDriftReport, SchemaColumn, SchemaDiffResult, SchemaMigrationError, SchemaMigrationFile, SchemaMigrationLanguage, SchemaMigrationStatusArgs, SchemaMigrationStatusResult, SchemaMigrationToolName, SchemaObject, SchemaQueryRow, ScmAbandonError, ScmAdoptError, ScmClaimError, ScmDoctorFixError, ScmMergeError, ScmPreparePrError, ScmRecoverError, ScmState, ScmWaitCiError, ScmWorkflowState, SetupRunnerArgs, SftddSetupHooks, SpringInitializrClient, SpringJvmLanguage, StaleBranchFinding, SyncEnvArgs, SyncEnvResult, TableSchema, TierTopology, TryCreateCatalogArgs, TryCreateCatalogResult, UcCatalogPermission, UpdateEnvConnectionArgs, UpdateWorkflowsArgs, UpdateWorkflowsResult, UploadDirectoryArgs, UploadDirectoryResult, ValidateAppOptions, ValidateAppResult, ValidationError, ValidationResult, WaitCiArgs, WaitCiResult, WaitForBranchAuthReadyArgs, WaitForBranchReadyArgs, WorkflowDriftReport, WorkflowFileStatus, WorkflowFileUpdate, WorkflowStatus, WorkflowUpdateOutcome, WorkflowVerification, WriteEnvFileArgs, WritePlaywrightTemplatesArgs, 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, 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 } from './lakebase/index.js';
|
|
4
4
|
export { AddRemoteArgs, AheadBehind, AmendArgs, BranchesAtCommitArgs, CheckoutBranchArgs, CloneRepoArgs, CommitAllArgs, CommitAndPushArgs, CommitArgs, CommitFilesArgs, CreateTagArgs, CreateWorktreeArgs, CwdOnlyArgs, DeleteLocalBranchArgs, DeleteRemoteBranchArgs, DeleteRemoteTagArgs, DeleteTagArgs, DiffFilesArgs, DiscardAllChangesArgs, FetchArgs, FileChangeShort, GetFileAtRefArgs, GetMergeBaseArgs, GitBranchInfo, HasRemoteBranchArgs, IsDirtyArgs, ListLocalBranchesArgs, ListMigrationsOnBranchArgs, ListRemoteBranchesArgs, LogRawArgs, MergeBranchArgs, MergeCommit, NearestParent, OutgoingIncomingArgs, ProtectedBranchError, PublishBranchArgs, PullFromArgs, PushCurrentBranchForPrArgs, PushToArgs, RebaseBranchArgs, RecentMergesArgs, RemoveRemoteArgs, RemoveWorktreeArgs, RenameBranchArgs, ResolveNearestParentArgs, ShaArgs, StashIndexArgs, StashWithMessageArgs, UndoLastCommitArgs, WorkflowScopeError, abortRebase, addRemote, checkoutBranch, checkoutDetached, cherryPick, cloneRepo, commit, commitAll, commitAllIfChanged, commitAllSignedOff, commitAmend, commitAndPush, commitSignedOff, createTag, createWorktree, deleteLocalBranch, deleteRemoteBranch, deleteRemoteTag, deleteTag, discardAllChanges, fetch, getAheadBehind, getBranchesAtCommit, getCommitFiles, getCurrentBranch, getDiffFiles, getFileAtRef, getGitHubUrl, getIncomingCommits, getLogRaw, getLogShortstat, getMergeBase, getNearestParentName, getOutgoingCommits, getOwnerRepo, getRecentMerges, getRepoRoot, gitBranchExists, gitInit, hasRemoteBranch, hasUpstream, isDirty, isRebasing, listLocalBranches, listMigrationsOnBranch, listRemoteBranches, listRemotes, listTags, listWorktrees, mergeBranch, publishBranch, pull, pullFrom, pullRebase, push, pushCurrentBranchForPr, pushTo, rebaseBranch, removeRemote, removeWorktree, renameBranch, resolveDefaultBranch, resolveNearestParent, revert, stash, stashApply, stashDrop, stashDropAll, stashIncludeUntracked, stashList, stashPop, stashStaged, sync, undoLastCommit } from './git/index.js';
|
|
5
5
|
export { CopyDirSubstitutedArgs, LAKEBASE_BRANCH_NAME_MAX, OwnerRepo, PROXY_ENV_KEYS, PollProbeDone, PollProbePending, PollProbeResult, PollUntilArgs, PollUntilDoneResult, PollUntilResult, PollUntilTimeoutResult, copyDirSubstituted, delay, extractZipToDir, formatOwnerRepo, isCliEntry, parseOwnerRepo, patchPomForLakebase, pollUntil, pollUntilDefined, proxyEnvSubset, sanitizeArtifactId, sanitizeBranchName, withProxyEnv } from './util/index.js';
|
|
6
6
|
export { C as CwdOnly, E as ExecOptions, e as exec, s as shq } from '../exec-CwxSWhlz.js';
|
package/dist/scripts/index.js
CHANGED
|
@@ -8098,6 +8098,18 @@ async function getCurrentUser() {
|
|
|
8098
8098
|
wrap(err, "GitHub authentication failed");
|
|
8099
8099
|
}
|
|
8100
8100
|
}
|
|
8101
|
+
async function checkGitHubScopes(required = GITHUB_SCOPES) {
|
|
8102
|
+
try {
|
|
8103
|
+
const ctx = await newContext();
|
|
8104
|
+
const res = await ctx.octokit.rest.users.getAuthenticated();
|
|
8105
|
+
const header = res.headers["x-oauth-scopes"];
|
|
8106
|
+
if (header === void 0 || header === null) return { granted: null, missing: [] };
|
|
8107
|
+
const granted = String(header).split(",").map((s) => s.trim()).filter(Boolean);
|
|
8108
|
+
return { granted, missing: required.filter((s) => !granted.includes(s)) };
|
|
8109
|
+
} catch (err) {
|
|
8110
|
+
wrap(err, "GitHub scope check failed");
|
|
8111
|
+
}
|
|
8112
|
+
}
|
|
8101
8113
|
async function createRepo(name, opts = {}) {
|
|
8102
8114
|
try {
|
|
8103
8115
|
const ctx = await newContext();
|
|
@@ -9725,8 +9737,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
|
|
|
9725
9737
|
var cached;
|
|
9726
9738
|
function substrateSelfVersion() {
|
|
9727
9739
|
if (cached !== void 0) return cached;
|
|
9728
|
-
if ("0.3.
|
|
9729
|
-
cached = "0.3.
|
|
9740
|
+
if ("0.3.6".length > 0) {
|
|
9741
|
+
cached = "0.3.6";
|
|
9730
9742
|
return cached;
|
|
9731
9743
|
}
|
|
9732
9744
|
cached = "unknown";
|
|
@@ -11419,6 +11431,22 @@ async function checkDatabricksAuth(host, run = (args) => runDatabricks(args, { h
|
|
|
11419
11431
|
return { ok: false, reason: lastLines(e.stderr, 2) || e.message || "databricks auth token failed" };
|
|
11420
11432
|
}
|
|
11421
11433
|
}
|
|
11434
|
+
async function checkGitHubWorkflowScope(probe = () => checkGitHubScopes(["workflow"])) {
|
|
11435
|
+
try {
|
|
11436
|
+
const { granted, missing } = await probe();
|
|
11437
|
+
if (granted === null) return { ok: true };
|
|
11438
|
+
if (missing.includes("workflow")) {
|
|
11439
|
+
return { ok: false, reason: `token grants [${granted.join(", ") || "none"}] but not \`workflow\`` };
|
|
11440
|
+
}
|
|
11441
|
+
return { ok: true };
|
|
11442
|
+
} catch {
|
|
11443
|
+
return { ok: true };
|
|
11444
|
+
}
|
|
11445
|
+
}
|
|
11446
|
+
function githubWorkflowScopePrereqMessage(reason) {
|
|
11447
|
+
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 ? `
|
|
11448
|
+
(${reason})` : "");
|
|
11449
|
+
}
|
|
11422
11450
|
function databricksAuthPrereqMessage(host, reason) {
|
|
11423
11451
|
const hostFlag = host ? ` --host ${host.replace(/\/+$/, "")}` : "";
|
|
11424
11452
|
return `Databricks authentication is required before creating a project. Run: databricks auth login${hostFlag}` + (reason ? `
|
|
@@ -12595,6 +12623,9 @@ function ensurePythonBddDeps(args) {
|
|
|
12595
12623
|
}
|
|
12596
12624
|
var RUN_TESTS_E2E_MARKER = "# run Playwright E2E suite when configured";
|
|
12597
12625
|
var CLIENT_E2E_MARKER = "# run client Playwright E2E suite when configured";
|
|
12626
|
+
var escapeRe = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
12627
|
+
var RUN_TESTS_E2E_MARKER_LINE = new RegExp(`^${escapeRe(RUN_TESTS_E2E_MARKER)}$`, "m");
|
|
12628
|
+
var CLIENT_E2E_MARKER_LINE = new RegExp(`^${escapeRe(CLIENT_E2E_MARKER)}$`, "m");
|
|
12598
12629
|
function runTestsE2eBlock() {
|
|
12599
12630
|
return [
|
|
12600
12631
|
"",
|
|
@@ -12686,14 +12717,22 @@ function addE2eToRunTestsScript(args) {
|
|
|
12686
12717
|
return { patched: false, inserted: false };
|
|
12687
12718
|
}
|
|
12688
12719
|
const original = fs14.readFileSync(scriptPath, "utf8");
|
|
12689
|
-
const
|
|
12690
|
-
const
|
|
12720
|
+
const baseMarker = RUN_TESTS_E2E_MARKER_LINE.exec(original);
|
|
12721
|
+
const hasBase = baseMarker !== null;
|
|
12722
|
+
const hasClient = CLIENT_E2E_MARKER_LINE.test(original);
|
|
12691
12723
|
if (hasBase && hasClient) {
|
|
12692
12724
|
return { patched: true, inserted: false };
|
|
12693
12725
|
}
|
|
12694
|
-
const cut = hasBase ? original.slice(0,
|
|
12726
|
+
const cut = hasBase ? original.slice(0, baseMarker.index) : original;
|
|
12695
12727
|
const base = cut.replace(/\n+$/, "\n");
|
|
12696
|
-
|
|
12728
|
+
const assembled = base + runTestsE2eBlock();
|
|
12729
|
+
const BODY_SENTINEL = 'REPO_ROOT="$(cd';
|
|
12730
|
+
if (original.includes(BODY_SENTINEL) && !assembled.includes(BODY_SENTINEL)) {
|
|
12731
|
+
throw new Error(
|
|
12732
|
+
`addE2eToRunTestsScript: refusing to write ${scriptPath} \u2014 the E2E assembly would drop the primary-suite body (REPO_ROOT/pytest/vitest). This is the marker-match clobber; the marker must anchor to the appended block's own line, not a prose mention.`
|
|
12733
|
+
);
|
|
12734
|
+
}
|
|
12735
|
+
fs14.writeFileSync(scriptPath, assembled, "utf8");
|
|
12697
12736
|
return { patched: true, inserted: true };
|
|
12698
12737
|
}
|
|
12699
12738
|
function enableE2eForProject(args) {
|
|
@@ -13738,6 +13777,13 @@ async function createProject(input, progress) {
|
|
|
13738
13777
|
if (!auth7.ok) {
|
|
13739
13778
|
throw new Error(databricksAuthPrereqMessage(host, auth7.reason));
|
|
13740
13779
|
}
|
|
13780
|
+
if (useGithub) {
|
|
13781
|
+
report("Checking GitHub token scopes...");
|
|
13782
|
+
const scope = await checkGitHubWorkflowScope();
|
|
13783
|
+
if (!scope.ok) {
|
|
13784
|
+
throw new Error(githubWorkflowScopePrereqMessage(scope.reason));
|
|
13785
|
+
}
|
|
13786
|
+
}
|
|
13741
13787
|
if (useGithub) {
|
|
13742
13788
|
report("Creating GitHub repository...", fullRepoName);
|
|
13743
13789
|
await createRepo(fullRepoName, {
|
|
@@ -18476,6 +18522,40 @@ async function checkGitRemote(projectDir) {
|
|
|
18476
18522
|
};
|
|
18477
18523
|
}
|
|
18478
18524
|
}
|
|
18525
|
+
async function checkGitHubTokenScope(probe = () => checkGitHubScopes(["workflow"])) {
|
|
18526
|
+
try {
|
|
18527
|
+
const { granted, missing } = await probe();
|
|
18528
|
+
if (granted === null) {
|
|
18529
|
+
return {
|
|
18530
|
+
name: "github-token-scope",
|
|
18531
|
+
status: "skip",
|
|
18532
|
+
message: "GitHub token scopes not visible (fine-grained PAT / App token) - `workflow` scope unverified"
|
|
18533
|
+
};
|
|
18534
|
+
}
|
|
18535
|
+
if (missing.includes("workflow")) {
|
|
18536
|
+
return {
|
|
18537
|
+
name: "github-token-scope",
|
|
18538
|
+
status: "fail",
|
|
18539
|
+
message: "GitHub token lacks the `workflow` scope - pushes touching .github/workflows/* will be rejected",
|
|
18540
|
+
detail: { granted },
|
|
18541
|
+
hint: "Grant it with `gh auth refresh -h github.com -s workflow`, re-sign in to GitHub in VS Code and approve the workflow scope, or set GITHUB_TOKEN to a PAT that includes `workflow`."
|
|
18542
|
+
};
|
|
18543
|
+
}
|
|
18544
|
+
return {
|
|
18545
|
+
name: "github-token-scope",
|
|
18546
|
+
status: "ok",
|
|
18547
|
+
message: "GitHub token has the `workflow` scope",
|
|
18548
|
+
detail: { granted }
|
|
18549
|
+
};
|
|
18550
|
+
} catch (err) {
|
|
18551
|
+
return {
|
|
18552
|
+
name: "github-token-scope",
|
|
18553
|
+
status: "skip",
|
|
18554
|
+
message: "GitHub token scope check skipped (no token resolved, or GitHub unreachable)",
|
|
18555
|
+
detail: { error: err.message }
|
|
18556
|
+
};
|
|
18557
|
+
}
|
|
18558
|
+
}
|
|
18479
18559
|
function checkLanguage(projectDir) {
|
|
18480
18560
|
try {
|
|
18481
18561
|
const lang = detectLanguage(projectDir);
|
|
@@ -18585,6 +18665,7 @@ async function runDoctor2(args = {}) {
|
|
|
18585
18665
|
host
|
|
18586
18666
|
);
|
|
18587
18667
|
const gitRemote = await checkGitRemote(projectDir);
|
|
18668
|
+
const githubTokenScope = await checkGitHubTokenScope();
|
|
18588
18669
|
const language = checkLanguage(projectDir);
|
|
18589
18670
|
const hooks = checkHooks(projectDir);
|
|
18590
18671
|
const workflowDrift = checkWorkflowDrift(projectDir);
|
|
@@ -18606,6 +18687,7 @@ async function runDoctor2(args = {}) {
|
|
|
18606
18687
|
configProfile,
|
|
18607
18688
|
lakebaseProject,
|
|
18608
18689
|
gitRemote,
|
|
18690
|
+
githubTokenScope,
|
|
18609
18691
|
language,
|
|
18610
18692
|
hooks,
|
|
18611
18693
|
workflowDrift
|
|
@@ -19352,6 +19434,8 @@ export {
|
|
|
19352
19434
|
catalogExists,
|
|
19353
19435
|
catalogExplorerUrl,
|
|
19354
19436
|
checkDatabricksAuth,
|
|
19437
|
+
checkGitHubScopes,
|
|
19438
|
+
checkGitHubWorkflowScope,
|
|
19355
19439
|
checkoutBranch,
|
|
19356
19440
|
checkoutDetached,
|
|
19357
19441
|
checkoutPaired,
|
|
@@ -19496,6 +19580,7 @@ export {
|
|
|
19496
19580
|
getTargetNames,
|
|
19497
19581
|
gitBranchExists,
|
|
19498
19582
|
gitInit,
|
|
19583
|
+
githubWorkflowScopePrereqMessage,
|
|
19499
19584
|
grantLakebasePermission,
|
|
19500
19585
|
grantUcCatalogPermission,
|
|
19501
19586
|
hasDotnetMarker,
|
|
@@ -79629,8 +79629,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
|
|
|
79629
79629
|
var cached;
|
|
79630
79630
|
function substrateSelfVersion() {
|
|
79631
79631
|
if (cached !== void 0) return cached;
|
|
79632
|
-
if ("0.3.
|
|
79633
|
-
cached = "0.3.
|
|
79632
|
+
if ("0.3.6".length > 0) {
|
|
79633
|
+
cached = "0.3.6";
|
|
79634
79634
|
return cached;
|
|
79635
79635
|
}
|
|
79636
79636
|
cached = "unknown";
|
|
@@ -721,8 +721,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
|
|
|
721
721
|
var cached;
|
|
722
722
|
function substrateSelfVersion() {
|
|
723
723
|
if (cached !== void 0) return cached;
|
|
724
|
-
if ("0.3.
|
|
725
|
-
cached = "0.3.
|
|
724
|
+
if ("0.3.6".length > 0) {
|
|
725
|
+
cached = "0.3.6";
|
|
726
726
|
return cached;
|
|
727
727
|
}
|
|
728
728
|
cached = "unknown";
|
|
@@ -79290,8 +79290,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
|
|
|
79290
79290
|
var cached;
|
|
79291
79291
|
function substrateSelfVersion() {
|
|
79292
79292
|
if (cached !== void 0) return cached;
|
|
79293
|
-
if ("0.3.
|
|
79294
|
-
cached = "0.3.
|
|
79293
|
+
if ("0.3.6".length > 0) {
|
|
79294
|
+
cached = "0.3.6";
|
|
79295
79295
|
return cached;
|
|
79296
79296
|
}
|
|
79297
79297
|
cached = "unknown";
|