@percher/core 0.4.2 → 0.4.4
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/commands/cache.d.ts +23 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +24 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/capabilities.d.ts +7 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +7 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/claim.d.ts +24 -0
- package/dist/commands/claim.d.ts.map +1 -0
- package/dist/commands/claim.js +47 -0
- package/dist/commands/claim.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +1 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +12 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/doctor.d.ts +126 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +445 -313
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/inspect-link.d.ts +20 -0
- package/dist/commands/inspect-link.d.ts.map +1 -0
- package/dist/commands/inspect-link.js +28 -0
- package/dist/commands/inspect-link.js.map +1 -0
- package/dist/commands/migrate-supabase-scripts.d.ts.map +1 -1
- package/dist/commands/migrate-supabase-scripts.js +10 -7
- package/dist/commands/migrate-supabase-scripts.js.map +1 -1
- package/dist/commands/migrate-supabase-sdk.d.ts.map +1 -1
- package/dist/commands/migrate-supabase-sdk.js +33 -28
- package/dist/commands/migrate-supabase-sdk.js.map +1 -1
- package/dist/commands/migrate-supabase-walker.d.ts.map +1 -1
- package/dist/commands/migrate-supabase-walker.js +2 -3
- package/dist/commands/migrate-supabase-walker.js.map +1 -1
- package/dist/commands/preview-branch.d.ts +31 -0
- package/dist/commands/preview-branch.d.ts.map +1 -0
- package/dist/commands/preview-branch.js +55 -0
- package/dist/commands/preview-branch.js.map +1 -0
- package/dist/commands/publish-api-error.d.ts +15 -0
- package/dist/commands/publish-api-error.d.ts.map +1 -1
- package/dist/commands/publish-api-error.js +155 -6
- package/dist/commands/publish-api-error.js.map +1 -1
- package/dist/commands/publish-failure.d.ts +3 -1
- package/dist/commands/publish-failure.d.ts.map +1 -1
- package/dist/commands/publish-failure.js +11 -7
- package/dist/commands/publish-failure.js.map +1 -1
- package/dist/commands/publish.d.ts +15 -0
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +176 -321
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +4 -4
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/redeploy.js +3 -3
- package/dist/commands/redeploy.js.map +1 -1
- package/dist/commands/rename.d.ts +7 -0
- package/dist/commands/rename.d.ts.map +1 -1
- package/dist/commands/rename.js +32 -1
- package/dist/commands/rename.js.map +1 -1
- package/dist/commands/wait-deploy.d.ts +12 -2
- package/dist/commands/wait-deploy.d.ts.map +1 -1
- package/dist/commands/wait-deploy.js +115 -46
- package/dist/commands/wait-deploy.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/plans.d.ts +14 -1
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +49 -1
- package/dist/plans.js.map +1 -1
- package/dist/poll-deployment.d.ts +3 -3
- package/dist/poll-deployment.d.ts.map +1 -1
- package/dist/poll-deployment.js +5 -4
- package/dist/poll-deployment.js.map +1 -1
- package/dist/publish-retry.d.ts.map +1 -1
- package/dist/publish-retry.js +2 -3
- package/dist/publish-retry.js.map +1 -1
- package/package.json +4 -4
- package/dist/commands/continue.d.ts +0 -48
- package/dist/commands/continue.d.ts.map +0 -1
- package/dist/commands/continue.js +0 -121
- package/dist/commands/continue.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { Context } from "../context";
|
|
3
|
+
export declare const cacheResetInputSchema: z.ZodObject<{
|
|
4
|
+
app: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type CacheResetInput = z.infer<typeof cacheResetInputSchema>;
|
|
7
|
+
/**
|
|
8
|
+
* `percher cache reset` — clear the app's build cache. Bumps the per-app
|
|
9
|
+
* cache-generation token so the next deploy mounts a fresh (empty) BuildKit
|
|
10
|
+
* cache and does a one-time cold dependency install; the old mount ages out via
|
|
11
|
+
* the daemon GC. `publish --no-cache` stays the one-shot escape hatch — this
|
|
12
|
+
* makes the next NORMAL deploy clean too.
|
|
13
|
+
*/
|
|
14
|
+
export declare function cacheReset(ctx: Context, input?: CacheResetInput): Promise<{
|
|
15
|
+
ok: boolean;
|
|
16
|
+
app: {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
};
|
|
20
|
+
cacheGeneration: number;
|
|
21
|
+
message: string;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,qBAAqB;;iBAEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,KAAK,GAAE,eAAoB,GAC1B,OAAO,CAAC;IACT,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CASD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { readPercherTomlAppName } from "../app-name";
|
|
3
|
+
import { PercherCoreError } from "../errors";
|
|
4
|
+
export const cacheResetInputSchema = z.object({
|
|
5
|
+
app: z.string().optional(),
|
|
6
|
+
});
|
|
7
|
+
/**
|
|
8
|
+
* `percher cache reset` — clear the app's build cache. Bumps the per-app
|
|
9
|
+
* cache-generation token so the next deploy mounts a fresh (empty) BuildKit
|
|
10
|
+
* cache and does a one-time cold dependency install; the old mount ages out via
|
|
11
|
+
* the daemon GC. `publish --no-cache` stays the one-shot escape hatch — this
|
|
12
|
+
* makes the next NORMAL deploy clean too.
|
|
13
|
+
*/
|
|
14
|
+
export async function cacheReset(ctx, input = {}) {
|
|
15
|
+
const name = input.app ?? readPercherTomlAppName(ctx.cwd);
|
|
16
|
+
if (!name) {
|
|
17
|
+
throw new PercherCoreError("No app specified and no percher.toml found", {
|
|
18
|
+
code: "env.no-app",
|
|
19
|
+
hint: "Pass an app name or run from a directory with percher.toml.",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return ctx.client.apps.resetCache(name);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAY,EACZ,QAAyB,EAAE;IAO3B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE;YACvE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { Context } from "../context";
|
|
3
|
+
export declare const capabilitiesInputSchema: z.ZodObject<{}, z.core.$strip>;
|
|
4
|
+
export type CapabilitiesInput = z.infer<typeof capabilitiesInputSchema>;
|
|
5
|
+
/** Discovery: platform features + account plan, limits and usage. */
|
|
6
|
+
export declare function capabilities(ctx: Context, _input?: CapabilitiesInput): Promise<import("@percher/client").Capabilities>;
|
|
7
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,uBAAuB,gCAAe,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,qEAAqE;AACrE,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,iBAAsB,mDAE9E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const capabilitiesInputSchema = z.object({});
|
|
3
|
+
/** Discovery: platform features + account plan, limits and usage. */
|
|
4
|
+
export async function capabilities(ctx, _input = {}) {
|
|
5
|
+
return ctx.client.platform.capabilities();
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAGpD,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,SAA4B,EAAE;IAC7E,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { Context } from "../context";
|
|
3
|
+
export declare const claimInputSchema: z.ZodObject<{
|
|
4
|
+
app: z.ZodOptional<z.ZodString>;
|
|
5
|
+
claimToken: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type ClaimInput = z.infer<typeof claimInputSchema>;
|
|
8
|
+
export type ClaimResult = {
|
|
9
|
+
status: "claimed";
|
|
10
|
+
app: string;
|
|
11
|
+
url: string;
|
|
12
|
+
summary: string;
|
|
13
|
+
} | {
|
|
14
|
+
status: "needs_token";
|
|
15
|
+
summary: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Claims an anonymous app into the signed-in account. App + token default
|
|
19
|
+
* to the locally persisted anon-claim state from the original anonymous
|
|
20
|
+
* publish, so a bare call works in the same project. The persisted state
|
|
21
|
+
* is cleared on success.
|
|
22
|
+
*/
|
|
23
|
+
export declare function claim(ctx: Context, input?: ClaimInput): Promise<ClaimResult>;
|
|
24
|
+
//# sourceMappingURL=claim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,gBAAgB;;;iBAS3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,UAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA6BtF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { loadConfig, saveConfig } from "@percher/client";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { readPercherTomlAppName } from "../app-name";
|
|
4
|
+
export const claimInputSchema = z.object({
|
|
5
|
+
app: z
|
|
6
|
+
.string()
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("App name to claim (defaults to the persisted anon state or percher.toml)"),
|
|
9
|
+
claimToken: z
|
|
10
|
+
.string()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("The one-time claim token returned by the anonymous publish (pcl_…)"),
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Claims an anonymous app into the signed-in account. App + token default
|
|
16
|
+
* to the locally persisted anon-claim state from the original anonymous
|
|
17
|
+
* publish, so a bare call works in the same project. The persisted state
|
|
18
|
+
* is cleared on success.
|
|
19
|
+
*/
|
|
20
|
+
export async function claim(ctx, input = {}) {
|
|
21
|
+
const state = loadConfig().anonClaim;
|
|
22
|
+
const app = input.app ?? state?.app ?? readPercherTomlAppName(ctx.cwd) ?? undefined;
|
|
23
|
+
const claimToken = input.claimToken ?? state?.claimToken;
|
|
24
|
+
if (!app) {
|
|
25
|
+
return {
|
|
26
|
+
status: "needs_token",
|
|
27
|
+
summary: "No app to claim. Pass --app (or run from the project that published it) and the claim token.",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (!claimToken) {
|
|
31
|
+
return {
|
|
32
|
+
status: "needs_token",
|
|
33
|
+
summary: "No claim token found. Pass claimToken explicitly — it was returned by the anonymous publish.",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const result = await ctx.client.apps.claim(app, { claimToken });
|
|
37
|
+
// Clear the persisted anon state — the app now belongs to a real account.
|
|
38
|
+
if (state)
|
|
39
|
+
saveConfig({ anonClaim: null });
|
|
40
|
+
return {
|
|
41
|
+
status: "claimed",
|
|
42
|
+
app: result.name,
|
|
43
|
+
url: result.url,
|
|
44
|
+
summary: `Claimed ${result.name} — anonymous restrictions lift on the next deploy.`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0EAA0E,CAAC;IACvF,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oEAAoE,CAAC;CAClF,CAAC,CAAC;AAOH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAY,EAAE,QAAoB,EAAE;IAC9D,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,SAAS,CAAC;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IACpF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,EAAE,UAAU,CAAC;IAEzD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EACL,8FAA8F;SACjG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EACL,8FAA8F;SACjG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,0EAA0E;IAC1E,IAAI,KAAK;QAAE,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,MAAM,CAAC,IAAI;QAChB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,oDAAoD;KACpF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAiB,KAAK,cAAc,EAAoB,MAAM,cAAc,CAAC;AAEpF,eAAO,MAAM,iBAAiB;;;;;iBAO5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAkDpF"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { join, resolve } from "node:path";
|
|
2
|
+
import { APP_NAME_RE } from "@percher/shared";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { PercherCoreError } from "../errors";
|
|
4
5
|
import { listTemplates, scaffoldTemplate } from "../templates";
|
|
5
|
-
const APP_NAME_RE = /^[a-z][a-z0-9-]{2,39}$/;
|
|
6
6
|
export const createInputSchema = z.object({
|
|
7
7
|
name: z
|
|
8
8
|
.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAuB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAuB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,WAAW,EAAE,oEAAoE,CAAC;IAC3F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IACnD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAUH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAY,EAAE,KAAkB;IAC3D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAElC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,gBAAgB,CACxB,qBAAqB,KAAK,CAAC,QAAQ,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1E;YACE,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,mEAAmE;SAC1E,CACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,SAAiB,CAAC;IACtB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,gBAAgB,CAAC,gDAAgD,EAAE;gBAC3E,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,IAAI;YACnB,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE;gBAC9B,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,0CAA0C;aACjD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAclE,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BzF"}
|
|
@@ -10,6 +10,10 @@ const DEFAULT_BASE = "https://percher.app";
|
|
|
10
10
|
// apps/dashboard/app/apps/[name]/page.tsx; we deliberately don't mirror
|
|
11
11
|
// it here so the CLI doesn't drift behind dashboard changes.
|
|
12
12
|
const TAB_SHAPE = /^[a-z][a-z0-9-]{0,31}$/;
|
|
13
|
+
// Tabs that are sections of the per-app /settings page (anchor-linked), not
|
|
14
|
+
// top-level segment routes. `github` is the load-bearing one — `dashboard
|
|
15
|
+
// github` is how the docs point users at the GitHub connect/install card.
|
|
16
|
+
const SETTINGS_ANCHOR_TABS = new Set(["github", "env", "domains", "crash-diagnosis"]);
|
|
13
17
|
export async function dashboard(ctx, input = {}) {
|
|
14
18
|
const name = input.app ?? readPercherTomlAppName(ctx.cwd);
|
|
15
19
|
if (!name) {
|
|
@@ -26,7 +30,14 @@ export async function dashboard(ctx, input = {}) {
|
|
|
26
30
|
});
|
|
27
31
|
}
|
|
28
32
|
const base = ctx.env.PERCHER_DASHBOARD_URL ?? DEFAULT_BASE;
|
|
29
|
-
const
|
|
33
|
+
const appBase = `${base}/apps/${encodeURIComponent(name)}`;
|
|
34
|
+
// Settings sub-sections live under /settings with an anchor, not as a `?tab=`
|
|
35
|
+
// query (the legacy ?tab= redirect doesn't cover them — `?tab=github` lands on
|
|
36
|
+
// the overview). Everything else keeps the back-compat `?tab=` form, which the
|
|
37
|
+
// dashboard redirects to the right segment route.
|
|
38
|
+
const url = SETTINGS_ANCHOR_TABS.has(tab)
|
|
39
|
+
? `${appBase}/settings#${tab}`
|
|
40
|
+
: `${appBase}?tab=${tab}`;
|
|
30
41
|
await ctx.openUrl(url);
|
|
31
42
|
return url;
|
|
32
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAGH,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C,6DAA6D;AAC7D,wEAAwE;AACxE,6DAA6D;AAC7D,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,QAAwB,EAAE;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE;YACvE,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,UAAU,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,GAAG,EAAE;YACjD,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,iEAAiE;SACxE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,IAAI,YAAY,CAAC;IAC3D,MAAM,
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAGH,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C,6DAA6D;AAC7D,wEAAwE;AACxE,6DAA6D;AAC7D,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEtF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,QAAwB,EAAE;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE;YACvE,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,UAAU,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,GAAG,EAAE;YACjD,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,iEAAiE;SACxE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,IAAI,YAAY,CAAC;IAC3D,MAAM,OAAO,GAAG,GAAG,IAAI,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D,8EAA8E;IAC9E,+EAA+E;IAC/E,+EAA+E;IAC/E,kDAAkD;IAClD,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;QACvC,CAAC,CAAC,GAAG,OAAO,aAAa,GAAG,EAAE;QAC9B,CAAC,CAAC,GAAG,OAAO,QAAQ,GAAG,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type { BuildProblem, CrashReport } from "@percher/client";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import type { Context } from "../context";
|
|
4
|
+
import { type ClassifiedError } from "../error-classifier";
|
|
3
5
|
import { type PublishRecovery, type ReasonCode } from "../recovery";
|
|
4
6
|
export declare const doctorInputSchema: z.ZodObject<{
|
|
5
7
|
app: z.ZodOptional<z.ZodString>;
|
|
@@ -72,5 +74,129 @@ export interface DoctorResult {
|
|
|
72
74
|
export declare const STUCK_DEPLOY_THRESHOLD_MS: number;
|
|
73
75
|
export declare function isStuckDeploy(status: string, createdAt: string, now?: number): boolean;
|
|
74
76
|
export declare function doctor(ctx: Context, input?: DoctorInput): Promise<DoctorResult>;
|
|
77
|
+
/**
|
|
78
|
+
* FUTURE12 Phase 2b — pre-resolved `replaced` outcome. We resolve in
|
|
79
|
+
* `doctor()` (async) so `deriveVerdict` stays synchronous; the dispatch
|
|
80
|
+
* just consumes the recovery + url + summary that resolveReplaced
|
|
81
|
+
* already computed.
|
|
82
|
+
*/
|
|
83
|
+
export interface ReplacedResolution {
|
|
84
|
+
recovery: PublishRecovery;
|
|
85
|
+
url?: string;
|
|
86
|
+
summary: string;
|
|
87
|
+
resolvedDeployId?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface VerdictContext {
|
|
90
|
+
appName?: string;
|
|
91
|
+
/** True when the caller passed --app explicitly (we don't depend on cwd toml). */
|
|
92
|
+
appProvided?: boolean;
|
|
93
|
+
/** Latest known app.status from /diagnostics, if we got that far. */
|
|
94
|
+
appStatus?: string;
|
|
95
|
+
/** Latest known lastDeploy.status, if any. */
|
|
96
|
+
lastDeployStatus?: string;
|
|
97
|
+
/** lastDeploy.id — needed to point wait_deploy at the right deploy. */
|
|
98
|
+
lastDeployId?: string;
|
|
99
|
+
/**
|
|
100
|
+
* FUTURE12 Phase 2b — additional structured signals captured from
|
|
101
|
+
* the diagnostics payload so `deriveVerdict` can dispatch
|
|
102
|
+
* runtime/route/replaced cases without re-parsing `checks[]`.
|
|
103
|
+
*/
|
|
104
|
+
containerState?: string;
|
|
105
|
+
containerRunning?: boolean;
|
|
106
|
+
containerHealthy?: boolean;
|
|
107
|
+
publicRouteHealthy?: boolean;
|
|
108
|
+
lastCrashSeverity?: string;
|
|
109
|
+
lastCrashAt?: string;
|
|
110
|
+
/** Pre-resolved `replaced` outcome (recovery + summary + url). */
|
|
111
|
+
replacedResolution?: ReplacedResolution;
|
|
112
|
+
/**
|
|
113
|
+
* FUTURE12 Codex round 5 fix — agent-supplied dispatch hint. When
|
|
114
|
+
* present, the verdict breaks the otherwise-recursive `run_doctor`
|
|
115
|
+
* loop by emitting a concrete fallback (`inspect_build_log` for
|
|
116
|
+
* `mode: "deploy"` + build_failed; `ask_user` with crash details
|
|
117
|
+
* for `mode: "runtime"` + runtime_crashed). Phase 2c replaces
|
|
118
|
+
* those fallbacks with mode-specific deep analysis using the
|
|
119
|
+
* `buildLogClassification` and `crashReport` fields below.
|
|
120
|
+
*/
|
|
121
|
+
inputMode?: "auto" | "deploy" | "runtime" | "config" | "env" | "account";
|
|
122
|
+
/**
|
|
123
|
+
* FUTURE12 Phase 2c — pre-fetched build-log classification for
|
|
124
|
+
* `mode: "deploy"` on a failed deploy. doctor() runs `classifyError`
|
|
125
|
+
* against the deploy's `errorMessage` + `buildLog` before calling
|
|
126
|
+
* `deriveVerdict` so the dispatch can route to a specific recovery
|
|
127
|
+
* (`set_env_vars` / `fix_problems`) instead of always
|
|
128
|
+
* `inspect_build_log`. Null when classification didn't yield a
|
|
129
|
+
* known pattern; undefined when the fetch wasn't attempted.
|
|
130
|
+
*/
|
|
131
|
+
buildLogClassification?: ClassifiedError | null;
|
|
132
|
+
/** Deployment.problems — structured BuildProblems extracted by the
|
|
133
|
+
* API parser. Promoted to `recoveryFixProblems` when present. */
|
|
134
|
+
buildProblems?: BuildProblem[];
|
|
135
|
+
/**
|
|
136
|
+
* FUTURE12 Phase 2c — pre-fetched crash report for `mode:
|
|
137
|
+
* "runtime"`. Surfaced in the `ask_user` prompt when the analysis
|
|
138
|
+
* status is "completed" so the agent can echo the AI-generated
|
|
139
|
+
* explanation + suggestion instead of asking the user to dig
|
|
140
|
+
* through the dashboard.
|
|
141
|
+
*/
|
|
142
|
+
crashReport?: CrashReport | null;
|
|
143
|
+
}
|
|
144
|
+
/** Shape every verdict rule returns — consumed by `summarize`. */
|
|
145
|
+
export interface DoctorVerdict {
|
|
146
|
+
status: DoctorStatus;
|
|
147
|
+
diagnosis?: DoctorDiagnosis;
|
|
148
|
+
recovery: PublishRecovery;
|
|
149
|
+
summary: string;
|
|
150
|
+
}
|
|
151
|
+
/** Inputs shared by every verdict rule, derived once per run. */
|
|
152
|
+
export interface VerdictRuleContext {
|
|
153
|
+
checks: DoctorCheck[];
|
|
154
|
+
vctx: VerdictContext;
|
|
155
|
+
findCheck(name: string): DoctorCheck | undefined;
|
|
156
|
+
/** `checks` minus rows excluded from verdict derivation (see builder). */
|
|
157
|
+
verdictChecks: DoctorCheck[];
|
|
158
|
+
/** Container stopped/exited (but present), or failing its health probe. */
|
|
159
|
+
containerDown: boolean;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* One row of the verdict rule table. `when` decides whether the rule
|
|
163
|
+
* applies; `verdict` builds the outcome and is only called after
|
|
164
|
+
* `when` returned true for the same context.
|
|
165
|
+
*/
|
|
166
|
+
export interface VerdictRule {
|
|
167
|
+
/** Stable identifier — tests pin rule order by id. Never reuse one. */
|
|
168
|
+
id: string;
|
|
169
|
+
when(ctx: VerdictRuleContext): boolean;
|
|
170
|
+
verdict(ctx: VerdictRuleContext): DoctorVerdict;
|
|
171
|
+
}
|
|
172
|
+
export declare function buildVerdictRuleContext(checks: DoctorCheck[], vctx: VerdictContext): VerdictRuleContext;
|
|
173
|
+
/**
|
|
174
|
+
* Verdict rule table — evaluated top-to-bottom, FIRST MATCH WINS.
|
|
175
|
+
* Array order is load-bearing: earlier rules shadow later ones, and
|
|
176
|
+
* several rules are only correct because a more specific rule sits
|
|
177
|
+
* above them. Each rule carries its ordering rationale as a comment;
|
|
178
|
+
* insert new rules at a justified position, never just append.
|
|
179
|
+
*
|
|
180
|
+
* FUTURE12 Phase 2a — pattern-match the check list against the
|
|
181
|
+
* blocking cases doctor handles today. Anything we don't recognise
|
|
182
|
+
* yet falls through to a safe `needs_action` / `ask_user` so an
|
|
183
|
+
* agent doesn't think it can auto-resolve from a generic failure.
|
|
184
|
+
* Phase 2b adds the deploy/build/runtime/replaced-specific paths.
|
|
185
|
+
*
|
|
186
|
+
* Two Codex P2 fixes baked into Phase 2a (review of fc267a3):
|
|
187
|
+
*
|
|
188
|
+
* 1. An invalid cwd `percher.toml` MUST NOT block the verdict when
|
|
189
|
+
* the caller passed `--app` — that target was resolved
|
|
190
|
+
* independently of cwd toml. Pre-fix, `doctor --app foo` against
|
|
191
|
+
* a healthy app would still come back blocked/config_invalid if
|
|
192
|
+
* the local toml happened to be broken.
|
|
193
|
+
* 2. Transitional states (`lastDeploy.status` queued/building/
|
|
194
|
+
* deploying, or `app.status` provisioning) MUST surface as
|
|
195
|
+
* `in_progress` + `wait_deploy`, not the warn-collapsed `ok`.
|
|
196
|
+
* Pre-fix, those states looked fully resolved to MCP agents and
|
|
197
|
+
* the new `in_progress` doctor status was effectively
|
|
198
|
+
* unreachable.
|
|
199
|
+
*/
|
|
200
|
+
export declare const VERDICT_RULES: ReadonlyArray<VerdictRule>;
|
|
75
201
|
export {};
|
|
76
202
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|