@percher/core 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-files-manifest.d.ts +28 -0
- package/dist/ai-files-manifest.d.ts.map +1 -0
- package/dist/ai-files-manifest.js +96 -0
- package/dist/ai-files-manifest.js.map +1 -0
- package/dist/commands/account.d.ts +51 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +88 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/ai-files.d.ts +73 -0
- package/dist/commands/ai-files.d.ts.map +1 -0
- package/dist/commands/ai-files.js +179 -0
- package/dist/commands/ai-files.js.map +1 -0
- package/dist/commands/billing.d.ts +1 -1
- package/dist/commands/billing.d.ts.map +1 -1
- package/dist/commands/billing.js +1 -1
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/continue.d.ts +48 -0
- package/dist/commands/continue.d.ts.map +1 -0
- package/dist/commands/continue.js +121 -0
- package/dist/commands/continue.js.map +1 -0
- package/dist/commands/create.d.ts +1 -1
- 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 +15 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +33 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/data-export.d.ts +21 -0
- package/dist/commands/data-export.d.ts.map +1 -0
- package/dist/commands/data-export.js +36 -0
- package/dist/commands/data-export.js.map +1 -0
- package/dist/commands/data.d.ts +1 -1
- package/dist/commands/data.d.ts.map +1 -1
- package/dist/commands/data.js +1 -1
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/delete.d.ts +1 -1
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/deploys.d.ts +2 -2
- package/dist/commands/deploys.d.ts.map +1 -1
- package/dist/commands/deploys.js +21 -5
- package/dist/commands/deploys.js.map +1 -1
- package/dist/commands/dev.d.ts +1 -9
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +77 -23
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diagnose.d.ts +1 -1
- package/dist/commands/diagnose.d.ts.map +1 -1
- package/dist/commands/diagnose.js +1 -1
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/doctor.d.ts +63 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +792 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/domains.d.ts +1 -1
- package/dist/commands/domains.d.ts.map +1 -1
- package/dist/commands/domains.js +1 -1
- package/dist/commands/domains.js.map +1 -1
- package/dist/commands/env-scan.d.ts +2 -0
- package/dist/commands/env-scan.d.ts.map +1 -0
- package/dist/commands/env-scan.js +92 -0
- package/dist/commands/env-scan.js.map +1 -0
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +1 -1
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/export.d.ts +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/generate.d.ts +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +14 -9
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/github.d.ts +60 -0
- package/dist/commands/github.d.ts.map +1 -0
- package/dist/commands/github.js +112 -0
- package/dist/commands/github.js.map +1 -0
- package/dist/commands/import-project.d.ts +1 -1
- package/dist/commands/import-project.d.ts.map +1 -1
- package/dist/commands/import-project.js +1 -1
- package/dist/commands/import-project.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/insights.d.ts +1 -1
- package/dist/commands/insights.d.ts.map +1 -1
- package/dist/commands/insights.js +1 -1
- package/dist/commands/insights.js.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +1 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/open.d.ts +1 -1
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +1 -1
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/publish-failure.d.ts +31 -0
- package/dist/commands/publish-failure.d.ts.map +1 -0
- package/dist/commands/publish-failure.js +142 -0
- package/dist/commands/publish-failure.js.map +1 -0
- package/dist/commands/publish-node.d.ts +13 -0
- package/dist/commands/publish-node.d.ts.map +1 -0
- package/dist/commands/publish-node.js +38 -0
- package/dist/commands/publish-node.js.map +1 -0
- package/dist/commands/publish.d.ts +87 -3
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +589 -156
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/push.d.ts +45 -8
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +215 -22
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/redeploy.d.ts +28 -0
- package/dist/commands/redeploy.d.ts.map +1 -0
- package/dist/commands/redeploy.js +417 -0
- package/dist/commands/redeploy.js.map +1 -0
- package/dist/commands/rename.d.ts +1 -1
- package/dist/commands/rename.d.ts.map +1 -1
- package/dist/commands/rename.js +1 -1
- package/dist/commands/rename.js.map +1 -1
- package/dist/commands/reproduce.d.ts +64 -0
- package/dist/commands/reproduce.d.ts.map +1 -0
- package/dist/commands/reproduce.js +211 -0
- package/dist/commands/reproduce.js.map +1 -0
- package/dist/commands/reset-superuser.d.ts +14 -3
- package/dist/commands/reset-superuser.d.ts.map +1 -1
- package/dist/commands/reset-superuser.js +11 -2
- package/dist/commands/reset-superuser.js.map +1 -1
- package/dist/commands/restore.d.ts +79 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +164 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/resume.d.ts +1 -1
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/rollback.d.ts +20 -8
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +11 -6
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/unsuspend.d.ts +35 -0
- package/dist/commands/unsuspend.d.ts.map +1 -0
- package/dist/commands/unsuspend.js +27 -0
- package/dist/commands/unsuspend.js.map +1 -0
- package/dist/commands/versions.d.ts +1 -1
- package/dist/commands/versions.d.ts.map +1 -1
- package/dist/commands/versions.js +1 -1
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/wait-deploy.d.ts +92 -0
- package/dist/commands/wait-deploy.d.ts.map +1 -0
- package/dist/commands/wait-deploy.js +225 -0
- package/dist/commands/wait-deploy.js.map +1 -0
- package/dist/env-scan-source.d.ts +39 -0
- package/dist/env-scan-source.d.ts.map +1 -0
- package/dist/env-scan-source.js +332 -0
- package/dist/env-scan-source.js.map +1 -0
- package/dist/error-classifier.d.ts.map +1 -1
- package/dist/error-classifier.js +67 -4
- package/dist/error-classifier.js.map +1 -1
- package/dist/errors.d.ts +8 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/plans.d.ts +11 -0
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +10 -0
- package/dist/plans.js.map +1 -1
- package/dist/poll-deployment.d.ts +47 -0
- package/dist/poll-deployment.d.ts.map +1 -0
- package/dist/poll-deployment.js +57 -0
- package/dist/poll-deployment.js.map +1 -0
- package/dist/recovery.d.ts +356 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +299 -0
- package/dist/recovery.js.map +1 -0
- package/dist/stream-utils.d.ts +21 -0
- package/dist/stream-utils.d.ts.map +1 -0
- package/dist/stream-utils.js +41 -0
- package/dist/stream-utils.js.map +1 -0
- package/dist/templates/ai-files/claude-md.d.ts +7 -0
- package/dist/templates/ai-files/claude-md.d.ts.map +1 -0
- package/dist/templates/ai-files/claude-md.js +78 -0
- package/dist/templates/ai-files/claude-md.js.map +1 -0
- package/dist/templates/ai-files/cursor-percher-mdc.d.ts +7 -0
- package/dist/templates/ai-files/cursor-percher-mdc.d.ts.map +1 -0
- package/dist/templates/ai-files/cursor-percher-mdc.js +111 -0
- package/dist/templates/ai-files/cursor-percher-mdc.js.map +1 -0
- package/dist/templates/ai-files/index.d.ts +8 -0
- package/dist/templates/ai-files/index.d.ts.map +1 -0
- package/dist/templates/ai-files/index.js +4 -0
- package/dist/templates/ai-files/index.js.map +1 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,KAAK,iBAAiB,EAAqC,MAAM,WAAW,CAAC;AAmBtF,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;CACtB;AAQD,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA6CnF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
import { generateName, serialize } from "@percher/toml";
|
|
4
|
-
import { z } from "zod";
|
|
4
|
+
import { z } from "zod/v3";
|
|
5
5
|
import { detectFramework, refineBunRuntime } from "../detect";
|
|
6
6
|
import { PercherCoreError } from "../errors";
|
|
7
7
|
function buildDataConfig(mode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAsB,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/commands/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/commands/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;IAC3E,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqC/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/commands/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/commands/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AA0BH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAY,EAAE,QAAuB,EAAE;IACpE,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,iBAAiB;YACvB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAkD;QAC9D,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACR,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9F,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,uBAAuB,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC;YAC7D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,IAAI,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,mBAAmB,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7F,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,MAAM;QAChB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/commands/login.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAuB1D,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BjF"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/logs.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7E"}
|
package/dist/commands/logs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAY,EAAE,QAAmB,EAAE;IAC5D,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,aAAa;YACnB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/commands/mcp.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,cAAc,gDAAe,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,MAAM,EAAE;QAAE,UAAU,EAAE;YAAE,OAAO,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,EAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAC;IACzE,2EAA2E;IAC3E,gBAAgB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,GAAE,QAAa,GAAG,eAAe,CAyBzE"}
|
package/dist/commands/mcp.js
CHANGED
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAU3C;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,SAAmB,EAAE;IACtD,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC;iBAC7B;aACF;SACF;QACD,gBAAgB,EAAE;YAChB;gBACE,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,+DAA+D;aACtE;YACD;gBACE,MAAM,EAAE,mBAAmB;gBAC3B,IAAI,EAAE,wDAAwD;aAC/D;YACD;gBACE,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,kCAAkC;aACzC;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/commands/open.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAW/E"}
|
package/dist/commands/open.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAY,EAAE,QAAmB,EAAE;IAC5D,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,aAAa;YACnB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { App, Deployment } from "@percher/client";
|
|
2
|
+
import type { Context } from "../context";
|
|
3
|
+
import { type PublishRecovery } from "../recovery";
|
|
4
|
+
import type { PublishError, PublishInput, PublishResult } from "./publish";
|
|
5
|
+
/**
|
|
6
|
+
* Shared deploy-failure shaping used by `publish` (sync path) and
|
|
7
|
+
* `waitForDeploy` (FUTURE11 async path). Returns the
|
|
8
|
+
* `{ error, recovery, summary }` triple — leaving bundle/tarball
|
|
9
|
+
* details to the caller.
|
|
10
|
+
*/
|
|
11
|
+
export declare function classifyDeploymentFailure(opts: {
|
|
12
|
+
ctx: Context;
|
|
13
|
+
app: App;
|
|
14
|
+
deployment: Deployment;
|
|
15
|
+
publishInput?: Record<string, unknown>;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
error: PublishError;
|
|
18
|
+
recovery: PublishRecovery;
|
|
19
|
+
summary: string;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function buildFailureResult(opts: {
|
|
22
|
+
ctx: Context;
|
|
23
|
+
app: App;
|
|
24
|
+
deployment: Deployment;
|
|
25
|
+
tarball: {
|
|
26
|
+
fileCount: number;
|
|
27
|
+
bytes: number;
|
|
28
|
+
};
|
|
29
|
+
input: PublishInput;
|
|
30
|
+
}): Promise<PublishResult>;
|
|
31
|
+
//# sourceMappingURL=publish-failure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-failure.d.ts","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,eAAe,EAAuC,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAwG3E;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/E;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,KAAK,EAAE,YAAY,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoBzB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { classifyError } from "../error-classifier";
|
|
3
|
+
import { recoveryAsk, recoveryFromErrorClass } from "../recovery";
|
|
4
|
+
function tomlPathFor(cwd) {
|
|
5
|
+
return join(cwd, "percher.toml");
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Fetch the build log (with the empty-log retry from the 2026-05-05
|
|
9
|
+
* tavlan incident), classify the deployment.errorMessage / log against
|
|
10
|
+
* the known patterns, and return the populated `PublishError`. Used by
|
|
11
|
+
* both the sync publish path and the FUTURE11 async wait path.
|
|
12
|
+
*/
|
|
13
|
+
async function buildFailureError(ctx, app, deployment) {
|
|
14
|
+
// Try to fetch build log for diagnosis. Pre-build infra failures (worker
|
|
15
|
+
// unreachable, nixpacks couldn't fetch from cache, tarball extraction
|
|
16
|
+
// crashed) leave buildLog empty — we have to fall back to the deployment's
|
|
17
|
+
// top-level errorMessage so the user isn't left staring at "see the log
|
|
18
|
+
// below" with nothing below it.
|
|
19
|
+
//
|
|
20
|
+
// Critical distinction: an EMPTY log means the build never started;
|
|
21
|
+
// a FAILED FETCH means we don't know what's in the log.
|
|
22
|
+
let buildLogTail;
|
|
23
|
+
let buildLogFetchFailed = false;
|
|
24
|
+
let fullLog = "";
|
|
25
|
+
try {
|
|
26
|
+
fullLog = await ctx.client.apps.getBuildLog(app.id, deployment.id);
|
|
27
|
+
// Empty-log retry: appendBuildLog and updateStatus(failed) are
|
|
28
|
+
// separate awaited writes in the API — same connection, same
|
|
29
|
+
// function, but a poller that hits getBuildLog the instant after
|
|
30
|
+
// status='failed' commits can race with the build_log column
|
|
31
|
+
// write. One retry after 1.5s catches the race without slowing the
|
|
32
|
+
// success path (success path never hits this branch).
|
|
33
|
+
if (!fullLog) {
|
|
34
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
35
|
+
fullLog = await ctx.client.apps.getBuildLog(app.id, deployment.id);
|
|
36
|
+
}
|
|
37
|
+
if (fullLog) {
|
|
38
|
+
const lines = fullLog.split("\n");
|
|
39
|
+
buildLogTail = lines.slice(-50).join("\n");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
buildLogFetchFailed = true;
|
|
44
|
+
}
|
|
45
|
+
const errorMessage = deployment.errorMessage ?? "";
|
|
46
|
+
// Classify against the build log first (post-build failures are richer),
|
|
47
|
+
// then against errorMessage as a fallback for the pre-build / infra case.
|
|
48
|
+
const classified = classifyError("Deployment failed", fullLog) ?? classifyError(errorMessage, "");
|
|
49
|
+
// Always preserve the raw upstream string when we have one and there's
|
|
50
|
+
// no build log to anchor to. The classifier replaces it with a friendly
|
|
51
|
+
// template, but the actual error often carries the load-bearing detail
|
|
52
|
+
// (port number, hostname, HTTP status) that support needs to debug.
|
|
53
|
+
const rawErrorMessage = errorMessage && !buildLogTail && !classified?.explanation.includes(errorMessage)
|
|
54
|
+
? errorMessage
|
|
55
|
+
: undefined;
|
|
56
|
+
// FUTURE1 Phase 2.3 — forward structured build problems from the API.
|
|
57
|
+
const problems = deployment.problems && deployment.problems.length > 0 ? deployment.problems : undefined;
|
|
58
|
+
if (classified) {
|
|
59
|
+
return {
|
|
60
|
+
title: classified.title,
|
|
61
|
+
explanation: classified.explanation,
|
|
62
|
+
suggestion: classified.suggestion,
|
|
63
|
+
buildLogTail,
|
|
64
|
+
rawErrorMessage,
|
|
65
|
+
errorClass: classified.errorClass,
|
|
66
|
+
phase: classified.phase,
|
|
67
|
+
cause: classified.cause,
|
|
68
|
+
relevantFiles: classified.relevantFiles,
|
|
69
|
+
missingEnvVars: classified.missingEnvVars,
|
|
70
|
+
problems,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
title: "Deployment failed",
|
|
75
|
+
explanation: errorMessage
|
|
76
|
+
? `The deployment failed: ${errorMessage}`
|
|
77
|
+
: "The deployment failed. See the build log for details.",
|
|
78
|
+
suggestion: buildLogTail
|
|
79
|
+
? "Check the build log below for errors. Run your build command locally to reproduce, fix, and publish again."
|
|
80
|
+
: buildLogFetchFailed
|
|
81
|
+
? `The deploy failed and we could not retrieve the build log (network/API error after retries). The log itself may exist on the server — fetch it directly with: percher logs ${app.name} --build ${deployment.id}`
|
|
82
|
+
: errorMessage
|
|
83
|
+
? `The deploy failed with: ${errorMessage.split("\n")[0]}. The build log column is empty — try \`percher logs ${app.name} --build ${deployment.id}\` to fetch it directly. If it remains empty, run \`percher deploys inspect ${deployment.id}\` for full details.`
|
|
84
|
+
: `No build log was produced — the failure happened before the build started. This usually means a Percher infra issue. Retry once, and if it persists, fetch the deploy details with: percher deploys inspect ${deployment.id}`,
|
|
85
|
+
buildLogTail,
|
|
86
|
+
errorClass: "build_failed",
|
|
87
|
+
phase: "build",
|
|
88
|
+
cause: "unknown",
|
|
89
|
+
relevantFiles: [],
|
|
90
|
+
missingEnvVars: [],
|
|
91
|
+
problems,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Shared deploy-failure shaping used by `publish` (sync path) and
|
|
96
|
+
* `waitForDeploy` (FUTURE11 async path). Returns the
|
|
97
|
+
* `{ error, recovery, summary }` triple — leaving bundle/tarball
|
|
98
|
+
* details to the caller.
|
|
99
|
+
*/
|
|
100
|
+
export async function classifyDeploymentFailure(opts) {
|
|
101
|
+
const { ctx, app, deployment, publishInput } = opts;
|
|
102
|
+
const error = await buildFailureError(ctx, app, deployment);
|
|
103
|
+
const recovery = error.errorClass
|
|
104
|
+
? recoveryFromErrorClass(error.errorClass, {
|
|
105
|
+
missingEnvVars: error.missingEnvVars,
|
|
106
|
+
deployId: deployment.id,
|
|
107
|
+
appName: app.name,
|
|
108
|
+
publishInput,
|
|
109
|
+
problems: error.problems,
|
|
110
|
+
})
|
|
111
|
+
: recoveryAsk({
|
|
112
|
+
prompt: `${app.name} deploy ${deployment.id} failed: ${error.title}. ${error.suggestion}`.trim(),
|
|
113
|
+
reasonCode: "build_failed",
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
error,
|
|
117
|
+
recovery,
|
|
118
|
+
summary: `${error.title} (${app.name}, deploy ${deployment.id}).`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export async function buildFailureResult(opts) {
|
|
122
|
+
const { ctx, app, deployment, tarball, input } = opts;
|
|
123
|
+
const { error, recovery, summary } = await classifyDeploymentFailure({
|
|
124
|
+
ctx,
|
|
125
|
+
app,
|
|
126
|
+
deployment,
|
|
127
|
+
publishInput: input,
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
status: "failed",
|
|
131
|
+
app,
|
|
132
|
+
deployment,
|
|
133
|
+
fileCount: tarball.fileCount,
|
|
134
|
+
bytes: tarball.bytes,
|
|
135
|
+
error,
|
|
136
|
+
recovery,
|
|
137
|
+
summary,
|
|
138
|
+
configPath: tomlPathFor(ctx.cwd),
|
|
139
|
+
bundle: { fileCount: tarball.fileCount, bytes: tarball.bytes },
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=publish-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-failure.js","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve which Node version will be used by the build, in priority order:
|
|
3
|
+
* 1. user `.nvmrc` (literal contents trimmed)
|
|
4
|
+
* 2. user `engines.node` from package.json
|
|
5
|
+
* 3. server-side default ("Node 22 LTS" — kept in sync with
|
|
6
|
+
* packages/api/src/nixpacks/build.ts:DEFAULT_NODE_VERSION)
|
|
7
|
+
* Returns null when this isn't a Node project (no package.json + no .nvmrc).
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveNodeVersion(cwd: string): {
|
|
10
|
+
value: string;
|
|
11
|
+
source: string;
|
|
12
|
+
} | null;
|
|
13
|
+
//# sourceMappingURL=publish-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-node.d.ts","sourceRoot":"","sources":["../../src/commands/publish-node.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsBxF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve which Node version will be used by the build, in priority order:
|
|
5
|
+
* 1. user `.nvmrc` (literal contents trimmed)
|
|
6
|
+
* 2. user `engines.node` from package.json
|
|
7
|
+
* 3. server-side default ("Node 22 LTS" — kept in sync with
|
|
8
|
+
* packages/api/src/nixpacks/build.ts:DEFAULT_NODE_VERSION)
|
|
9
|
+
* Returns null when this isn't a Node project (no package.json + no .nvmrc).
|
|
10
|
+
*/
|
|
11
|
+
export function resolveNodeVersion(cwd) {
|
|
12
|
+
const nvmrc = join(cwd, ".nvmrc");
|
|
13
|
+
if (existsSync(nvmrc)) {
|
|
14
|
+
try {
|
|
15
|
+
const v = readFileSync(nvmrc, "utf8").trim();
|
|
16
|
+
if (v)
|
|
17
|
+
return { value: v, source: ".nvmrc" };
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
/* fall through */
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const pkgPath = join(cwd, "package.json");
|
|
24
|
+
if (!existsSync(pkgPath))
|
|
25
|
+
return null;
|
|
26
|
+
try {
|
|
27
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
28
|
+
const engines = pkg?.engines?.node;
|
|
29
|
+
if (typeof engines === "string" && engines.length > 0) {
|
|
30
|
+
return { value: engines, source: "engines.node" };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
/* fall through */
|
|
35
|
+
}
|
|
36
|
+
return { value: "22 LTS", source: "default" };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=publish-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-node.js","sourceRoot":"","sources":["../../src/commands/publish-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -1,22 +1,29 @@
|
|
|
1
|
-
import { type App, type Deployment } from "@percher/client";
|
|
2
|
-
import { z } from "zod";
|
|
1
|
+
import { type App, type BuildProblem, type Deployment } from "@percher/client";
|
|
2
|
+
import { z } from "zod/v3";
|
|
3
3
|
import type { Context } from "../context";
|
|
4
4
|
import { type DeployPhase, type ErrorClass } from "../error-classifier";
|
|
5
|
+
import { type PublishRecovery, type PublishStatus } from "../recovery";
|
|
5
6
|
export declare const publishInputSchema: z.ZodObject<{
|
|
6
7
|
force: z.ZodOptional<z.ZodBoolean>;
|
|
7
8
|
preview: z.ZodOptional<z.ZodBoolean>;
|
|
8
9
|
message: z.ZodOptional<z.ZodString>;
|
|
9
10
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
noCache: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
+
waitForLive: z.ZodOptional<z.ZodBoolean>;
|
|
10
13
|
}, "strip", z.ZodTypeAny, {
|
|
11
14
|
message?: string | undefined;
|
|
12
15
|
force?: boolean | undefined;
|
|
13
16
|
dryRun?: boolean | undefined;
|
|
14
17
|
preview?: boolean | undefined;
|
|
18
|
+
noCache?: boolean | undefined;
|
|
19
|
+
waitForLive?: boolean | undefined;
|
|
15
20
|
}, {
|
|
16
21
|
message?: string | undefined;
|
|
17
22
|
force?: boolean | undefined;
|
|
18
23
|
dryRun?: boolean | undefined;
|
|
19
24
|
preview?: boolean | undefined;
|
|
25
|
+
noCache?: boolean | undefined;
|
|
26
|
+
waitForLive?: boolean | undefined;
|
|
20
27
|
}>;
|
|
21
28
|
export type PublishInput = z.infer<typeof publishInputSchema>;
|
|
22
29
|
export interface PublishTiming {
|
|
@@ -49,9 +56,36 @@ export interface PublishError {
|
|
|
49
56
|
relevantFiles?: string[];
|
|
50
57
|
/** Env vars that appear to be missing */
|
|
51
58
|
missingEnvVars?: string[];
|
|
59
|
+
/**
|
|
60
|
+
* FUTURE1 Phase 2 — structured build problems extracted from the
|
|
61
|
+
* build log on failure. Empty/absent when no patterns matched. Agents
|
|
62
|
+
* should prefer this over parsing `buildLogTail` when length > 0:
|
|
63
|
+
* each problem carries `code`/`file`/`line`/`column`/`hint` so a
|
|
64
|
+
* patch can be issued directly without log archeology. Source of
|
|
65
|
+
* truth is the API's parser; the CLI/MCP just forward it.
|
|
66
|
+
*/
|
|
67
|
+
problems?: BuildProblem[];
|
|
52
68
|
}
|
|
53
69
|
export interface PublishResult {
|
|
54
|
-
|
|
70
|
+
/**
|
|
71
|
+
* `queued` is the FUTURE11 async path — set when the caller passed
|
|
72
|
+
* `waitForLive: false`. The deploy was accepted and the deployId is
|
|
73
|
+
* returned so the agent can resume with `percher_wait_for_deploy`
|
|
74
|
+
* instead of blocking inside publish for several minutes.
|
|
75
|
+
*
|
|
76
|
+
* `replaced` means this row was superseded. Two API code-paths set
|
|
77
|
+
* it: a newer live deploy succeeded, or reconcile saw the container
|
|
78
|
+
* is gone (CONTAINER_NOT_FOUND). The result resolves which by
|
|
79
|
+
* looking at the latest deploy on the app and routing accordingly:
|
|
80
|
+
* • newer live exists → recovery `nextAction: "none"` and `url`
|
|
81
|
+
* points at the current live URL.
|
|
82
|
+
* • newer deploy still in flight → recovery `nextAction:
|
|
83
|
+
* "wait_deploy"` pointing at the newer deployId.
|
|
84
|
+
* • no newer / latest also failed → recovery `nextAction:
|
|
85
|
+
* "ask_user"`.
|
|
86
|
+
* Never recovers via `retry` for the replaced row itself.
|
|
87
|
+
*/
|
|
88
|
+
status: PublishStatus;
|
|
55
89
|
url?: string;
|
|
56
90
|
/** QR code data URI for the live/preview URL (PNG, for MCP/dashboard use) */
|
|
57
91
|
qrDataUri?: string;
|
|
@@ -69,6 +103,56 @@ export interface PublishResult {
|
|
|
69
103
|
* out instead of returning 403).
|
|
70
104
|
*/
|
|
71
105
|
replacedPreview?: boolean;
|
|
106
|
+
/** True when the app was created during this publish run (first-ever deploy). */
|
|
107
|
+
firstDeploy?: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* FUTURE1 Phase 1.6 — true when the build skipped because the API's
|
|
110
|
+
* image cache matched (Phase 1.4). Computed from the deploy_events
|
|
111
|
+
* timeline (presence of a build:ok row with subStage='cache_hit').
|
|
112
|
+
* Surfaced to agents so they can communicate "no rebuild was needed"
|
|
113
|
+
* to the user, and to dashboards so they can render a "cached" pill.
|
|
114
|
+
* Absent (not just `false`) when we couldn't fetch the timeline —
|
|
115
|
+
* makes "we don't know" distinguishable from "we know it wasn't a
|
|
116
|
+
* cache hit."
|
|
117
|
+
*/
|
|
118
|
+
cacheHit?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Public-prefix vars referenced in source but absent from the env store.
|
|
121
|
+
* Populated on live and failed paths. Absent when the scan didn't run
|
|
122
|
+
* (dry-run, pre-auth failure) or when all refs are covered.
|
|
123
|
+
*/
|
|
124
|
+
missingBuildEnvKeys?: string[];
|
|
125
|
+
/**
|
|
126
|
+
* Machine-readable next-step for AI agents. Always present — `nextAction`
|
|
127
|
+
* is `"none"` on success. Treat `nextAction` values as a stable enum
|
|
128
|
+
* (agents will hardcode `===` comparisons).
|
|
129
|
+
*/
|
|
130
|
+
recovery: PublishRecovery;
|
|
131
|
+
/**
|
|
132
|
+
* One-line human summary safe to echo verbatim. On success: e.g.
|
|
133
|
+
* "kvittakvitto deployed in 47s -> https://kvittakvitto.percher.run".
|
|
134
|
+
* On failure: short error title ("Deploy timed out", "Repository too
|
|
135
|
+
* large"). Always present — agents shouldn't have to format this
|
|
136
|
+
* themselves and humans get a consistent surface.
|
|
137
|
+
*/
|
|
138
|
+
summary: string;
|
|
139
|
+
/**
|
|
140
|
+
* Absolute path of the percher.toml file Percher would use for this
|
|
141
|
+
* project — the expected/intended path. Always set to `<cwd>/percher.toml`
|
|
142
|
+
* regardless of whether the file currently exists or was successfully
|
|
143
|
+
* generated. Agents recovering from `fix_config` can use this verbatim
|
|
144
|
+
* as the write target. Always present.
|
|
145
|
+
*/
|
|
146
|
+
configPath: string;
|
|
147
|
+
/**
|
|
148
|
+
* Bundle stats grouped under one key for forward-compat. Mirrors the
|
|
149
|
+
* top-level `fileCount`/`bytes` (kept for existing consumers); the
|
|
150
|
+
* nested form is the one new agents/dashboards should read.
|
|
151
|
+
*/
|
|
152
|
+
bundle: {
|
|
153
|
+
fileCount: number;
|
|
154
|
+
bytes: number;
|
|
155
|
+
};
|
|
72
156
|
}
|
|
73
157
|
/**
|
|
74
158
|
* All-in-one publish command for AI agents.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,YAAY,EAEjB,KAAK,UAAU,EAIhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAUnB,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAyB7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAoJD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+B5F"}
|