@percher/core 0.3.0 → 0.4.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.
Files changed (70) hide show
  1. package/dist/commands/data.d.ts +2 -2
  2. package/dist/commands/dev.d.ts.map +1 -1
  3. package/dist/commands/dev.js +2 -1
  4. package/dist/commands/dev.js.map +1 -1
  5. package/dist/commands/doctor.d.ts +12 -2
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +30 -0
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/publish-failure.d.ts.map +1 -1
  10. package/dist/commands/publish-failure.js +11 -3
  11. package/dist/commands/publish-failure.js.map +1 -1
  12. package/dist/commands/publish-node.d.ts +5 -2
  13. package/dist/commands/publish-node.d.ts.map +1 -1
  14. package/dist/commands/publish-node.js +7 -3
  15. package/dist/commands/publish-node.js.map +1 -1
  16. package/dist/commands/publish.d.ts +18 -0
  17. package/dist/commands/publish.d.ts.map +1 -1
  18. package/dist/commands/publish.js +292 -137
  19. package/dist/commands/publish.js.map +1 -1
  20. package/dist/commands/push.d.ts.map +1 -1
  21. package/dist/commands/push.js +23 -5
  22. package/dist/commands/push.js.map +1 -1
  23. package/dist/commands/redeploy.d.ts.map +1 -1
  24. package/dist/commands/redeploy.js +18 -14
  25. package/dist/commands/redeploy.js.map +1 -1
  26. package/dist/commands/rollback.d.ts +2 -1
  27. package/dist/commands/rollback.d.ts.map +1 -1
  28. package/dist/commands/rollback.js +2 -1
  29. package/dist/commands/rollback.js.map +1 -1
  30. package/dist/commands/status.d.ts +33 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/status.js +48 -0
  33. package/dist/commands/status.js.map +1 -0
  34. package/dist/commands/wait-deploy.d.ts.map +1 -1
  35. package/dist/commands/wait-deploy.js +4 -3
  36. package/dist/commands/wait-deploy.js.map +1 -1
  37. package/dist/error-classifier.js +1 -1
  38. package/dist/error-classifier.js.map +1 -1
  39. package/dist/event-renderer.d.ts +17 -0
  40. package/dist/event-renderer.d.ts.map +1 -0
  41. package/dist/event-renderer.js +130 -0
  42. package/dist/event-renderer.js.map +1 -0
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/plans.d.ts +9 -0
  48. package/dist/plans.d.ts.map +1 -1
  49. package/dist/plans.js +5 -0
  50. package/dist/plans.js.map +1 -1
  51. package/dist/poll-deployment.d.ts +13 -1
  52. package/dist/poll-deployment.d.ts.map +1 -1
  53. package/dist/poll-deployment.js +37 -1
  54. package/dist/poll-deployment.js.map +1 -1
  55. package/dist/publish-retry.d.ts +29 -0
  56. package/dist/publish-retry.d.ts.map +1 -0
  57. package/dist/publish-retry.js +224 -0
  58. package/dist/publish-retry.js.map +1 -0
  59. package/dist/recovery.d.ts.map +1 -1
  60. package/dist/recovery.js +2 -1
  61. package/dist/recovery.js.map +1 -1
  62. package/dist/structured-error-codes.d.ts +30 -0
  63. package/dist/structured-error-codes.d.ts.map +1 -0
  64. package/dist/structured-error-codes.js +86 -0
  65. package/dist/structured-error-codes.js.map +1 -0
  66. package/dist/tarball.d.ts +11 -0
  67. package/dist/tarball.d.ts.map +1 -1
  68. package/dist/tarball.js +30 -9
  69. package/dist/tarball.js.map +1 -1
  70. package/package.json +2 -1
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Publish-retry classifier and runner (Phase 7.2).
3
+ *
4
+ * The 2026-05-07 incident batch surfaced a class of agent-perceived
5
+ * failure where the platform's `WORKER_UNAVAILABLE` (transient — the
6
+ * worker was restarting) bubbled through the CLI as a hard error.
7
+ * Humans/agents recovered by typing `percher publish` again. The CLI
8
+ * should do that itself.
9
+ *
10
+ * Rules table (mirrored in `docs/plans/IMPLEMENTING_publish-resilience-and-clarity-plan.md`):
11
+ *
12
+ * WORKER_UNAVAILABLE retry 3× — 5s / 15s / 45s
13
+ * WORKER_UNAVAILABLE_PERSISTENT no retry — surface as platform incident
14
+ * DEPLOY_RATE_LIMITED retry 2× — honour retryAfterSec from response
15
+ * network error / TCP reset retry 3× — 2s / 8s / 24s
16
+ * HTTP 5xx retry 2× — 5s / 20s
17
+ * HTTP 4xx (incl. 429 quota, 422 config) no retry
18
+ * BUILD_FAILED / BUILD_TIMEOUT / DEPLOY_STALLED no retry — these are
19
+ * observed during the *poll* phase, not the upload, but listed here
20
+ * defensively so any future code path that encounters them while
21
+ * retrying still classifies them correctly.
22
+ *
23
+ * Every retry reuses the same `Idempotency-Key` header so the API treats
24
+ * a re-attempt as "are you still working on this one?" rather than
25
+ * minting a new deploy row. The caller is responsible for generating the
26
+ * key (via `crypto.randomUUID()`) and threading it into the request.
27
+ */
28
+ import { PercherApiError } from "@percher/client";
29
+ const NON_RETRYABLE_CODES = new Set([
30
+ "WORKER_UNAVAILABLE_PERSISTENT",
31
+ "BUILD_FAILED",
32
+ "BUILD_TIMEOUT",
33
+ "DEPLOY_STALLED",
34
+ "REQUIRED_ENV_MISSING",
35
+ "ENV_KEY_UNDECLARED",
36
+ "DAILY_QUOTA_EXCEEDED",
37
+ "RETRY_LIMIT_REACHED",
38
+ "ACCOUNT_SUSPENDED",
39
+ "APP_SUSPENDED",
40
+ "EMAIL_NOT_VERIFIED",
41
+ "PREVIEW_LIMIT_REACHED",
42
+ "VALIDATION_ERROR",
43
+ // Phase 8.1 — past hardCap the queue is so deep that retry-after
44
+ // would lie about wait time. Treat as a platform incident: surface
45
+ // immediately so the user sees the status-page link instead of
46
+ // a CLI that loops every minute claiming "should be back in 5s".
47
+ "PLATFORM_DOWN",
48
+ ]);
49
+ const WORKER_UNAVAILABLE_BACKOFF_MS = [5_000, 15_000, 45_000];
50
+ const NETWORK_BACKOFF_MS = [2_000, 8_000, 24_000];
51
+ const HTTP_5XX_BACKOFF_MS = [5_000, 20_000];
52
+ export function classifyDeployRetry(err, attempt) {
53
+ // attempt is 1-indexed — `attempt = 1` means "first failure, decide
54
+ // delay before attempt 2"; the schedule arrays are 0-indexed.
55
+ const idx = attempt - 1;
56
+ if (err instanceof PercherApiError) {
57
+ if (err.code === "WORKER_UNAVAILABLE_PERSISTENT") {
58
+ return {
59
+ retryable: false,
60
+ delayMs: 0,
61
+ reason: "platform circuit breaker open — surfacing as incident",
62
+ category: "persistent",
63
+ };
64
+ }
65
+ if (err.code === "WORKER_UNAVAILABLE") {
66
+ const delay = WORKER_UNAVAILABLE_BACKOFF_MS[idx];
67
+ if (delay === undefined) {
68
+ return {
69
+ retryable: false,
70
+ delayMs: 0,
71
+ reason: "worker unavailable after 3 attempts",
72
+ category: "worker_unavailable",
73
+ };
74
+ }
75
+ return {
76
+ retryable: true,
77
+ delayMs: delay,
78
+ reason: "worker was restarting",
79
+ category: "worker_unavailable",
80
+ };
81
+ }
82
+ if (err.code === "DEPLOY_RATE_LIMITED") {
83
+ if (idx >= 2) {
84
+ return {
85
+ retryable: false,
86
+ delayMs: 0,
87
+ reason: "rate-limited after 2 attempts",
88
+ category: "rate_limited",
89
+ };
90
+ }
91
+ const retryAfterSec = typeof err.extra?.retryAfterSec === "number" ? err.extra.retryAfterSec : 5;
92
+ return {
93
+ retryable: true,
94
+ delayMs: Math.min(60_000, Math.max(1_000, retryAfterSec * 1000)),
95
+ reason: "per-app rate limit",
96
+ category: "rate_limited",
97
+ };
98
+ }
99
+ if (err.code === "USER_CONCURRENT_LIMIT") {
100
+ // Phase 8.2 — the user has the most parallel deploys their plan
101
+ // allows. Retrying after the suggested window often clears one
102
+ // of the in-flight builds. Single retry is enough; past that the
103
+ // user almost certainly needs to take action (upgrade or stop
104
+ // looping), so surface the error.
105
+ if (idx >= 1) {
106
+ return {
107
+ retryable: false,
108
+ delayMs: 0,
109
+ reason: "concurrent-deploy cap still saturated after one wait",
110
+ category: "rate_limited",
111
+ };
112
+ }
113
+ const retryAfterSec = typeof err.extra?.retryAfterSec === "number" ? err.extra.retryAfterSec : 60;
114
+ return {
115
+ retryable: true,
116
+ delayMs: Math.min(2 * 60_000, Math.max(5_000, retryAfterSec * 1000)),
117
+ reason: "per-user concurrent-deploy cap",
118
+ category: "rate_limited",
119
+ };
120
+ }
121
+ if (err.code === "PLATFORM_OVERLOADED") {
122
+ // Phase 8.1 — global backpressure. The API supplies a
123
+ // Retry-After header computed from the realistic drain estimate;
124
+ // honor it (capped at 5 min so a misbehaving server can't hold
125
+ // the CLI hostage). Up to 3 retries — past that the queue isn't
126
+ // draining for this caller and surfacing the incident is fairer.
127
+ if (idx >= 3) {
128
+ return {
129
+ retryable: false,
130
+ delayMs: 0,
131
+ reason: "platform overloaded after 3 attempts",
132
+ category: "rate_limited",
133
+ };
134
+ }
135
+ const retryAfterSec = typeof err.extra?.retryAfterSec === "number" ? err.extra.retryAfterSec : 30;
136
+ return {
137
+ retryable: true,
138
+ delayMs: Math.min(5 * 60_000, Math.max(5_000, retryAfterSec * 1000)),
139
+ reason: "platform overloaded — queue-depth backpressure",
140
+ category: "rate_limited",
141
+ };
142
+ }
143
+ if (NON_RETRYABLE_CODES.has(err.code)) {
144
+ return {
145
+ retryable: false,
146
+ delayMs: 0,
147
+ reason: `non-retryable: ${err.code}`,
148
+ category: "non_retryable",
149
+ };
150
+ }
151
+ if (err.status >= 500 && err.status < 600) {
152
+ const delay = HTTP_5XX_BACKOFF_MS[idx];
153
+ if (delay === undefined) {
154
+ return {
155
+ retryable: false,
156
+ delayMs: 0,
157
+ reason: `HTTP ${err.status} after 2 attempts`,
158
+ category: "http_5xx",
159
+ };
160
+ }
161
+ return {
162
+ retryable: true,
163
+ delayMs: delay,
164
+ reason: `HTTP ${err.status}`,
165
+ category: "http_5xx",
166
+ };
167
+ }
168
+ return {
169
+ retryable: false,
170
+ delayMs: 0,
171
+ reason: `HTTP ${err.status} ${err.code}`,
172
+ category: "non_retryable",
173
+ };
174
+ }
175
+ if (err instanceof Error &&
176
+ /network error|fetch failed|ECONNRESET|ENOTFOUND|ETIMEDOUT/i.test(err.message)) {
177
+ const delay = NETWORK_BACKOFF_MS[idx];
178
+ if (delay === undefined) {
179
+ return {
180
+ retryable: false,
181
+ delayMs: 0,
182
+ reason: "network error after 3 attempts",
183
+ category: "network",
184
+ };
185
+ }
186
+ return {
187
+ retryable: true,
188
+ delayMs: delay,
189
+ reason: "network blip",
190
+ category: "network",
191
+ };
192
+ }
193
+ return {
194
+ retryable: false,
195
+ delayMs: 0,
196
+ reason: "unknown error",
197
+ category: "non_retryable",
198
+ };
199
+ }
200
+ const defaultSleep = (ms) => new Promise((r) => setTimeout(r, ms));
201
+ export async function runDeployWithRetry(opts) {
202
+ const max = opts.maxAttempts ?? 4;
203
+ const sleep = opts.sleep ?? defaultSleep;
204
+ let attempt = 0;
205
+ let lastErr;
206
+ while (attempt < max) {
207
+ attempt += 1;
208
+ try {
209
+ const result = await opts.call(attempt);
210
+ return { result, attempts: attempt };
211
+ }
212
+ catch (err) {
213
+ lastErr = err;
214
+ const decision = classifyDeployRetry(err, attempt);
215
+ if (!decision.retryable || attempt >= max) {
216
+ throw err;
217
+ }
218
+ opts.onRetry?.({ attempt, decision, err });
219
+ await sleep(decision.delayMs);
220
+ }
221
+ }
222
+ throw lastErr;
223
+ }
224
+ //# sourceMappingURL=publish-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-retry.js","sourceRoot":"","sources":["../src/publish-retry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
package/dist/recovery.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { TIMEOUTS } from "@percher/shared/timeouts";
1
2
  // ── Builders ─────────────────────────────────────────────────────────
2
3
  //
3
4
  // All recovery construction goes through these. Each builder enforces
@@ -32,7 +33,7 @@ export function recoveryWait(opts) {
32
33
  args: {
33
34
  app: opts.app,
34
35
  deployId: opts.deployId,
35
- timeoutSeconds: opts.timeoutSeconds ?? 30,
36
+ timeoutSeconds: opts.timeoutSeconds ?? TIMEOUTS.mcpWaitDeployDefault / 1000,
36
37
  },
37
38
  reasonCode: opts.reasonCode,
38
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ClassifiedError } from "./error-classifier";
2
+ /**
3
+ * Phase 4 of the publish-resilience plan — CLI-side mapping from
4
+ * the canonical `DeployErrorCode` strings (defined server-side in
5
+ * `@percher/api/src/worker/error-codes.ts`) to the
6
+ * `ClassifiedError` shape the CLI's publish-failure renderer
7
+ * already consumes.
8
+ *
9
+ * Why this lives in @percher/core instead of @percher/client: the
10
+ * client surfaces the raw `errorCode` string on `Deployment` and
11
+ * stays unopinionated; the core package owns the rendering of
12
+ * publish failures and is the right place to decide "given this
13
+ * canonical code, what title/explanation/suggestion does the user
14
+ * see". The CLI's `publish-failure.ts` calls into this module
15
+ * BEFORE the regex-based `classifyError` so the structured code
16
+ * always wins when present.
17
+ *
18
+ * Set parity: the strings here MUST match the ones in the API's
19
+ * `DEPLOY_ERROR_CODES` const. Adding a new code requires updating
20
+ * both files. Forward-compat: an unknown code returns null, the
21
+ * CLI falls back to the regex classifier, no breakage.
22
+ */
23
+ export type DeployErrorCode = "WORKER_UNAVAILABLE" | "WORKER_UNAVAILABLE_PERSISTENT" | "BUILD_TIMEOUT" | "BUILD_FAILED" | "WORKER_ERROR" | "DEPLOY_STALLED";
24
+ /**
25
+ * Map a canonical Phase 4 error code to a {@link ClassifiedError}.
26
+ * Returns null for NULL / unknown codes so the caller can fall back
27
+ * to the regex-based `classifyError`.
28
+ */
29
+ export declare function classifyByErrorCode(code: string | null | undefined, rawMessage: string): ClassifiedError | null;
30
+ //# sourceMappingURL=structured-error-codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-error-codes.d.ts","sourceRoot":"","sources":["../src/structured-error-codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,oBAAoB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,+BAA+B,GAC/B,eAAe,GACf,cAAc,GACd,cAAc,GACd,gBAAgB,CAAC;AAoFrB;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,GACjB,eAAe,GAAG,IAAI,CAcxB"}
@@ -0,0 +1,86 @@
1
+ const MAPPINGS = {
2
+ WORKER_UNAVAILABLE: {
3
+ errorClass: "infra_unavailable",
4
+ phase: "infra",
5
+ cause: "worker_fetch_failed",
6
+ title: "Build worker is unreachable",
7
+ explanation: (raw) => raw
8
+ ? `The Percher build worker did not respond in time: ${trimMessage(raw)}. This is a platform-side issue, not your code.`
9
+ : "The Percher build worker did not respond in time. This is a platform-side issue, not your code.",
10
+ suggestion: "Wait 30 seconds and run `percher publish` again. If retry #2 also fails, pause 5 minutes before the next attempt — back-to-back retries during a partial outage just waste your time. After 3 spaced-out retries, check status.percher.app or contact support. Your build never started.",
11
+ },
12
+ WORKER_UNAVAILABLE_PERSISTENT: {
13
+ errorClass: "infra_unavailable",
14
+ phase: "infra",
15
+ cause: "worker_circuit_breaker_open",
16
+ title: "Build worker is in a crash loop",
17
+ explanation: () => "The Percher build worker has failed repeatedly in the last minute and the platform's circuit breaker has flipped open. Retrying immediately would just queue more failures.",
18
+ suggestion: "Wait 2-3 minutes for the platform to recover, then retry. If it persists past 5 minutes check status.percher.app or contact support — this is a platform incident, not your code.",
19
+ },
20
+ BUILD_TIMEOUT: {
21
+ errorClass: "build_failed",
22
+ phase: "build",
23
+ cause: "build_timeout",
24
+ title: "Build timed out",
25
+ explanation: () => "The build ran longer than the 10-minute platform limit and was aborted.",
26
+ suggestion: "Common causes: a slow `postinstall` hook, very large dependency tree, or a Dockerfile that pulls a huge base image. Try `bun install` locally and check what's slow. If it's legitimately a heavy build, contact support to discuss raising the limit for your account.",
27
+ },
28
+ BUILD_FAILED: {
29
+ errorClass: "build_failed",
30
+ phase: "build",
31
+ cause: "build_nonzero_exit",
32
+ title: "Build failed",
33
+ explanation: (raw) => raw
34
+ ? `The build process returned a non-zero exit code: ${trimMessage(raw)}. Read the build log below for the exact error.`
35
+ : "The build process returned a non-zero exit code. Read the build log below for the exact error.",
36
+ suggestion: "Run your build locally to reproduce: `bun install && bun run build`. The error in the build log usually points to a missing dependency, a TypeScript/syntax error, or a misconfigured framework setting.",
37
+ },
38
+ WORKER_ERROR: {
39
+ errorClass: "infra_unavailable",
40
+ phase: "infra",
41
+ cause: "worker_internal_error",
42
+ title: "Platform error inside the build worker",
43
+ explanation: (raw) => raw
44
+ ? `The build worker hit an internal error: ${trimMessage(raw)}. This is a Percher bug, not your code.`
45
+ : "The build worker hit an internal error. This is a Percher bug, not your code.",
46
+ suggestion: "Retry once — transient platform errors usually clear within a minute. If it repeats, please report it: include the deploy ID and we'll investigate. Your account is not at fault.",
47
+ },
48
+ DEPLOY_STALLED: {
49
+ errorClass: "infra_unavailable",
50
+ phase: "infra",
51
+ cause: "deploy_stalled",
52
+ title: "Deploy stalled",
53
+ explanation: () => "The platform abandoned this deploy — likely because the API or build worker restarted mid-build. Your code is fine; the build never finished.",
54
+ suggestion: "Run `percher publish` again. The new deploy will start fresh. If you see this repeatedly across multiple publishes, check status.percher.app — it implies a recurring platform issue.",
55
+ },
56
+ };
57
+ /**
58
+ * Map a canonical Phase 4 error code to a {@link ClassifiedError}.
59
+ * Returns null for NULL / unknown codes so the caller can fall back
60
+ * to the regex-based `classifyError`.
61
+ */
62
+ export function classifyByErrorCode(code, rawMessage) {
63
+ if (!code)
64
+ return null;
65
+ const mapping = MAPPINGS[code];
66
+ if (!mapping)
67
+ return null;
68
+ return {
69
+ title: mapping.title,
70
+ explanation: mapping.explanation(rawMessage),
71
+ suggestion: mapping.suggestion,
72
+ errorClass: mapping.errorClass,
73
+ phase: mapping.phase,
74
+ cause: mapping.cause,
75
+ relevantFiles: [],
76
+ missingEnvVars: [],
77
+ };
78
+ }
79
+ function trimMessage(raw) {
80
+ // Keep the first line + truncate. The CLI already shows the
81
+ // full build-log tail below; this is just enough context to
82
+ // explain WHY the platform-side classifier picked this code.
83
+ const firstLine = raw.split("\n")[0] ?? "";
84
+ return firstLine.length > 200 ? `${firstLine.slice(0, 200)}…` : firstLine;
85
+ }
86
+ //# sourceMappingURL=structured-error-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-error-codes.js","sourceRoot":"","sources":["../src/structured-error-codes.ts"],"names":[],"mappings":"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"}
package/dist/tarball.d.ts CHANGED
@@ -12,6 +12,17 @@ export interface TarballResult {
12
12
  path: string;
13
13
  size: number;
14
14
  }>;
15
+ /**
16
+ * Phase 7.8 follow-up — deterministic content-hash of the bundle.
17
+ * Used by the CLI's cache-probe call so identical sources hash to
18
+ * the same value across runs. Distinct from the gzipped-bytes hash
19
+ * the API computes on upload (which carries embedded mtimes from
20
+ * tar/gzip headers and therefore *cannot* be deterministic). The
21
+ * CLI sends this value as the `X-Tarball-Hash` header on the
22
+ * upload; the API stores it on `deployments.tarball_hash` so a
23
+ * subsequent probe matches.
24
+ */
25
+ contentHash: string;
15
26
  }
16
27
  export declare function createTarball(options: TarballOptions): Promise<TarballResult>;
17
28
  //# sourceMappingURL=tarball.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tarball.d.ts","sourceRoot":"","sources":["../src/tarball.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAiCD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA2CnF"}
1
+ {"version":3,"file":"tarball.d.ts","sourceRoot":"","sources":["../src/tarball.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD;;;;;;;;;OASG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAiCD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEnF"}
package/dist/tarball.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createHash } from "node:crypto";
1
2
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
2
3
  import { join, relative, sep } from "node:path";
3
4
  import { Readable } from "node:stream";
@@ -45,18 +46,34 @@ export async function createTarball(options) {
45
46
  }
46
47
  if (options.extraIgnore)
47
48
  ig.add(options.extraIgnore);
48
- const files = [];
49
+ // Sorted entries — required for the deterministic content-hash
50
+ // below. Without this, readdirSync's platform-dependent order
51
+ // produces a different hash on every run even for unchanged
52
+ // sources, and cache-probe never matches. Codex P2, 2026-05-08.
53
+ const fileBuffers = [];
49
54
  for (const rel of walk(options.cwd, options.cwd, ig)) {
50
- const stats = statSync(join(options.cwd, rel));
51
- files.push({ path: rel, size: stats.size });
55
+ const data = readFileSync(join(options.cwd, rel));
56
+ fileBuffers.push({ path: rel, size: data.length, data });
52
57
  }
53
- const totalBytes = files.reduce((sum, f) => sum + f.size, 0);
58
+ fileBuffers.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
59
+ const totalBytes = fileBuffers.reduce((sum, f) => sum + f.size, 0);
60
+ // Deterministic content-hash: SHA-256 over a canonical encoding of
61
+ // every file's path + bytes, in sorted order. The encoding uses
62
+ // length-prefixed sections so a path containing a delimiter can't
63
+ // collide with a longer/shorter path of the same prefix.
64
+ const contentHasher = createHash("sha256");
65
+ for (const f of fileBuffers) {
66
+ contentHasher.update(`PATH:${f.path.length}:${f.path}\n`);
67
+ contentHasher.update(`SIZE:${f.size}\n`);
68
+ contentHasher.update(f.data);
69
+ contentHasher.update("\n");
70
+ }
71
+ const contentHash = contentHasher.digest("hex");
54
72
  const pack = tarPack();
55
73
  (async () => {
56
- for (const file of files) {
57
- const data = readFileSync(join(options.cwd, file.path));
74
+ for (const file of fileBuffers) {
58
75
  await new Promise((resolve, reject) => {
59
- pack.entry({ name: file.path, size: data.length }, data, (err) => err ? reject(err) : resolve());
76
+ pack.entry({ name: file.path, size: file.data.length }, file.data, (err) => err ? reject(err) : resolve());
60
77
  });
61
78
  }
62
79
  pack.finalize();
@@ -64,12 +81,16 @@ export async function createTarball(options) {
64
81
  const gzip = createGzip();
65
82
  const nodeStream = pack.pipe(gzip);
66
83
  const webStream = Readable.toWeb(nodeStream);
67
- const topFiles = [...files].sort((a, b) => b.size - a.size).slice(0, 5);
84
+ const topFiles = [...fileBuffers]
85
+ .sort((a, b) => b.size - a.size)
86
+ .slice(0, 5)
87
+ .map((f) => ({ path: f.path, size: f.size }));
68
88
  return {
69
89
  stream: webStream,
70
90
  bytes: totalBytes,
71
- fileCount: files.length,
91
+ fileCount: fileBuffers.length,
72
92
  topFiles,
93
+ contentHash,
73
94
  };
74
95
  }
75
96
  //# sourceMappingURL=tarball.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tarball.js","sourceRoot":"","sources":["../src/tarball.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tarball.js","sourceRoot":"","sources":["../src/tarball.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@percher/core",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Core logic and CLI commands for the Percher hosting platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,6 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@percher/client": "^0.2.7",
33
+ "@percher/shared": "^0.1.0",
33
34
  "@percher/toml": "^0.1.3",
34
35
  "ignore": "^7.0.5",
35
36
  "tar-stream": "^3.1.7",