@percher/core 0.4.0 → 0.4.2
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/account.d.ts +24 -14
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +17 -4
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/admin-reconcile-routes.d.ts +18 -0
- package/dist/commands/admin-reconcile-routes.d.ts.map +1 -0
- package/dist/commands/admin-reconcile-routes.js +22 -0
- package/dist/commands/admin-reconcile-routes.js.map +1 -0
- package/dist/commands/ai-files.d.ts +5 -17
- package/dist/commands/ai-files.d.ts.map +1 -1
- package/dist/commands/ai-files.js +3 -4
- package/dist/commands/ai-files.js.map +1 -1
- package/dist/commands/alerts.d.ts +70 -0
- package/dist/commands/alerts.d.ts.map +1 -0
- package/dist/commands/alerts.js +82 -0
- package/dist/commands/alerts.js.map +1 -0
- package/dist/commands/app-resources.d.ts +30 -0
- package/dist/commands/app-resources.d.ts.map +1 -0
- package/dist/commands/app-resources.js +34 -0
- package/dist/commands/app-resources.js.map +1 -0
- package/dist/commands/app-topology.d.ts +18 -0
- package/dist/commands/app-topology.d.ts.map +1 -0
- package/dist/commands/app-topology.js +25 -0
- package/dist/commands/app-topology.js.map +1 -0
- package/dist/commands/billing.d.ts +8 -8
- 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 +1 -1
- package/dist/commands/create.d.ts +2 -12
- 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 +2 -8
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/data-export.d.ts +2 -8
- package/dist/commands/data-export.d.ts.map +1 -1
- package/dist/commands/data-export.js +1 -1
- package/dist/commands/data-export.js.map +1 -1
- package/dist/commands/data.d.ts +2 -8
- 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 +2 -8
- 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 +4 -28
- package/dist/commands/deploys.d.ts.map +1 -1
- package/dist/commands/deploys.js +1 -1
- package/dist/commands/deploys.js.map +1 -1
- package/dist/commands/dev.d.ts +2 -6
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diagnose.d.ts +2 -22
- 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 +10 -35
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +12 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/domains.d.ts +5 -27
- 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.js +1 -1
- package/dist/commands/env-scan.js.map +1 -1
- package/dist/commands/env.d.ts +4 -20
- 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 +6 -15
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/forgejo.d.ts +45 -0
- package/dist/commands/forgejo.d.ts.map +1 -0
- package/dist/commands/forgejo.js +125 -0
- package/dist/commands/forgejo.js.map +1 -0
- package/dist/commands/generate.d.ts +2 -6
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +1 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/github.d.ts +4 -15
- package/dist/commands/github.d.ts.map +1 -1
- package/dist/commands/github.js +17 -1
- package/dist/commands/github.js.map +1 -1
- package/dist/commands/import-project.d.ts +13 -9
- package/dist/commands/import-project.d.ts.map +1 -1
- package/dist/commands/import-project.js +73 -22
- package/dist/commands/import-project.js.map +1 -1
- package/dist/commands/init.d.ts +26 -11
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +103 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/insights.d.ts +2 -6
- 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 +2 -8
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +22 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +25 -10
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +65 -5
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -2
- 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/migrate-supabase-map.d.ts +171 -0
- package/dist/commands/migrate-supabase-map.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-map.js +452 -0
- package/dist/commands/migrate-supabase-map.js.map +1 -0
- package/dist/commands/migrate-supabase-schema.d.ts +67 -0
- package/dist/commands/migrate-supabase-schema.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-schema.js +321 -0
- package/dist/commands/migrate-supabase-schema.js.map +1 -0
- package/dist/commands/migrate-supabase-scripts.d.ts +64 -0
- package/dist/commands/migrate-supabase-scripts.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-scripts.js +564 -0
- package/dist/commands/migrate-supabase-scripts.js.map +1 -0
- package/dist/commands/migrate-supabase-sdk.d.ts +133 -0
- package/dist/commands/migrate-supabase-sdk.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-sdk.js +1119 -0
- package/dist/commands/migrate-supabase-sdk.js.map +1 -0
- package/dist/commands/migrate-supabase-walker.d.ts +93 -0
- package/dist/commands/migrate-supabase-walker.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-walker.js +413 -0
- package/dist/commands/migrate-supabase-walker.js.map +1 -0
- package/dist/commands/migrate-supabase.d.ts +81 -0
- package/dist/commands/migrate-supabase.d.ts.map +1 -0
- package/dist/commands/migrate-supabase.js +579 -0
- package/dist/commands/migrate-supabase.js.map +1 -0
- package/dist/commands/open.d.ts +2 -6
- 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-api-error.d.ts +46 -0
- package/dist/commands/publish-api-error.d.ts.map +1 -0
- package/dist/commands/publish-api-error.js +358 -0
- package/dist/commands/publish-api-error.js.map +1 -0
- package/dist/commands/publish-failure.d.ts.map +1 -1
- package/dist/commands/publish-failure.js +11 -2
- package/dist/commands/publish-failure.js.map +1 -1
- package/dist/commands/publish.d.ts +40 -17
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +115 -8
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/push.d.ts +2 -12
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +2 -2
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/redeploy.d.ts +2 -8
- package/dist/commands/redeploy.d.ts.map +1 -1
- package/dist/commands/redeploy.js +2 -2
- package/dist/commands/redeploy.js.map +1 -1
- package/dist/commands/rename.d.ts +2 -8
- 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 +2 -8
- package/dist/commands/reproduce.d.ts.map +1 -1
- package/dist/commands/reproduce.js +1 -1
- package/dist/commands/reproduce.js.map +1 -1
- package/dist/commands/reset-superuser.d.ts +2 -16
- package/dist/commands/reset-superuser.d.ts.map +1 -1
- package/dist/commands/reset-superuser.js +1 -1
- package/dist/commands/reset-superuser.js.map +1 -1
- package/dist/commands/restore.d.ts +7 -22
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +1 -1
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/resume.d.ts +2 -6
- 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 +2 -8
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +1 -1
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/sharing.d.ts +48 -0
- package/dist/commands/sharing.d.ts.map +1 -0
- package/dist/commands/sharing.js +85 -0
- package/dist/commands/sharing.js.map +1 -0
- package/dist/commands/status.d.ts +2 -6
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/transfers.d.ts +34 -0
- package/dist/commands/transfers.d.ts.map +1 -0
- package/dist/commands/transfers.js +62 -0
- package/dist/commands/transfers.js.map +1 -0
- package/dist/commands/unsuspend.d.ts +2 -6
- package/dist/commands/unsuspend.d.ts.map +1 -1
- package/dist/commands/unsuspend.js +1 -1
- package/dist/commands/unsuspend.js.map +1 -1
- package/dist/commands/versions.d.ts +2 -6
- 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 +2 -12
- package/dist/commands/wait-deploy.d.ts.map +1 -1
- package/dist/commands/wait-deploy.js +1 -1
- package/dist/commands/wait-deploy.js.map +1 -1
- package/dist/context.d.ts +15 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/detect.d.ts +11 -0
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +31 -8
- package/dist/detect.js.map +1 -1
- package/dist/env-scan-source.d.ts +8 -1
- package/dist/env-scan-source.d.ts.map +1 -1
- package/dist/env-scan-source.js +100 -24
- package/dist/env-scan-source.js.map +1 -1
- package/dist/error-classifier.d.ts +18 -1
- package/dist/error-classifier.d.ts.map +1 -1
- package/dist/error-classifier.js +171 -9
- package/dist/error-classifier.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 +64 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -42
- package/dist/index.js.map +1 -1
- package/dist/plans.d.ts +86 -8
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +113 -24
- package/dist/plans.js.map +1 -1
- package/dist/recovery.d.ts +73 -3
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +36 -0
- package/dist/recovery.js.map +1 -1
- package/dist/static-docker.d.ts +77 -0
- package/dist/static-docker.d.ts.map +1 -0
- package/dist/static-docker.js +105 -0
- package/dist/static-docker.js.map +1 -0
- package/dist/tarball.js +1 -1
- package/dist/tarball.js.map +1 -1
- package/dist/templates/ai-files/cursor-percher-mdc.d.ts.map +1 -1
- package/dist/templates/ai-files/cursor-percher-mdc.js +12 -9
- package/dist/templates/ai-files/cursor-percher-mdc.js.map +1 -1
- package/dist/templates.js +11 -11
- package/dist/templates.js.map +1 -1
- package/dist/watcher.js +1 -1
- package/dist/watcher.js.map +1 -1
- package/package.json +6 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/plans.d.ts
CHANGED
|
@@ -1,9 +1,38 @@
|
|
|
1
1
|
export type PlanId = "free" | "starter" | "maker" | "pro";
|
|
2
|
+
/**
|
|
3
|
+
* Disk-pool symmetry (Phase 1) — the disk footprint (MB) charged for
|
|
4
|
+
* a PocketBase app that has no measured volume sample yet. A new PB
|
|
5
|
+
* volume starts near-empty; this is the accounting placeholder until
|
|
6
|
+
* the PB-volume sampler records a real size. Same value across all
|
|
7
|
+
* tiers — it's a property of an empty PB volume, not of the plan.
|
|
8
|
+
* Pool accounting then tracks the measured size; the tier
|
|
9
|
+
* `diskPoolMb` is the real ceiling. See `PlanLimits.storageMb`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const PB_INITIAL_FOOTPRINT_MB = 256;
|
|
2
12
|
export interface PlanLimits {
|
|
13
|
+
/**
|
|
14
|
+
* Hard cap on app count per account, enforced at creation. Acts as
|
|
15
|
+
* anti-abuse backstop; pool dimensions are the real resource
|
|
16
|
+
* constraint. Enforcement lives in `packages/api/src/routes/apps.ts`
|
|
17
|
+
* (responds 403 `APP_LIMIT_REACHED` when the cap is hit).
|
|
18
|
+
*/
|
|
3
19
|
apps: number;
|
|
4
20
|
deploysPerMonth: number | "unlimited";
|
|
5
21
|
deploysPerHour: number;
|
|
22
|
+
/**
|
|
23
|
+
* Per-app default RAM allocation when the user doesn't specify
|
|
24
|
+
* `[resources].memory` in percher.toml. Pool-style enforcement
|
|
25
|
+
* (FUTURE20 Fas 3) replaces the old "this is a hard ceiling"
|
|
26
|
+
* semantics: a user can deploy an app of any size as long as
|
|
27
|
+
* Σ(allocated across their apps) ≤ `ramPoolMb`. Format mirrors
|
|
28
|
+
* the historical "256mb" / "1gb" strings parsed by `parseMemory`.
|
|
29
|
+
*/
|
|
6
30
|
memory: string;
|
|
31
|
+
/**
|
|
32
|
+
* Per-app default vCPU allocation when the user doesn't specify
|
|
33
|
+
* `[resources].cpu`. Same pool semantics as `memory` — sum across
|
|
34
|
+
* user's apps must fit `vcpuPool`.
|
|
35
|
+
*/
|
|
7
36
|
cpu: number;
|
|
8
37
|
pids: number;
|
|
9
38
|
activePreviewsPerApp: number;
|
|
@@ -20,16 +49,48 @@ export interface PlanLimits {
|
|
|
20
49
|
buildLogRetentionDays: number;
|
|
21
50
|
/** Max user-defined cron jobs (Phase 5.3) */
|
|
22
51
|
cronJobs: number;
|
|
23
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Initial disk footprint in MB charged for a `data.mode =
|
|
54
|
+
* "pocketbase"` app that has no measured volume sample yet (a
|
|
55
|
+
* freshly-created, still-empty PB volume).
|
|
56
|
+
*
|
|
57
|
+
* Disk-pool symmetry (Phase 1, 2026-05-24): this is NO LONGER the
|
|
58
|
+
* whole-pool worst-case reservation it used to be. Pool accounting
|
|
59
|
+
* now sums the MEASURED PB volume size (`app_pb_volume_samples`,
|
|
60
|
+
* fed by the PB-volume sampler) per app against `diskPoolMb`; this
|
|
61
|
+
* footprint is only the placeholder used until the first sample
|
|
62
|
+
* lands. Per-app disk is elastic — a volume grows freely with its
|
|
63
|
+
* data up to the remaining pool. The tier pool (`diskPoolMb`) is
|
|
64
|
+
* the only real ceiling. NOT a UI-surfaced per-app cap.
|
|
65
|
+
*/
|
|
24
66
|
storageMb: number;
|
|
25
67
|
/** Max parallel container instances per app (Phase 6.1) */
|
|
26
68
|
instances: number;
|
|
27
|
-
/** SLA uptime target (Phase 8.3). null = no SLA for this tier. */
|
|
28
|
-
slaUptime: string | null;
|
|
29
|
-
/** Support response target (Phase 8.3). null = community support only. */
|
|
30
|
-
supportResponseTime: string | null;
|
|
31
69
|
/** Per-app KV store size cap in MB (Phase 5.4) */
|
|
32
70
|
kvStorageMb: number;
|
|
71
|
+
/**
|
|
72
|
+
* FUTURE20 Fas 3 — total RAM in MB the user can commit across
|
|
73
|
+
* ALL their apps × instances. Hard cap enforced at deploy +
|
|
74
|
+
* autoscale time. `apps × memory × instances` is the worst-case
|
|
75
|
+
* if the user fills every slot at the per-app default; the pool
|
|
76
|
+
* is the actually-sellable total per tier.
|
|
77
|
+
*/
|
|
78
|
+
ramPoolMb: number;
|
|
79
|
+
/**
|
|
80
|
+
* FUTURE20 Fas 3 — total vCPU the user can commit across all
|
|
81
|
+
* their apps × instances. Hard cap; same dimension as `cpu` per
|
|
82
|
+
* app but enforced as a sum. Box-level oversubscription is OK
|
|
83
|
+
* (kernel time-shares; we monitor cgroup throttling); per-account
|
|
84
|
+
* pool is the contract with the user.
|
|
85
|
+
*/
|
|
86
|
+
vcpuPool: number;
|
|
87
|
+
/**
|
|
88
|
+
* FUTURE20 Fas 3 — total disk in MB the user can commit across
|
|
89
|
+
* all their app data + PB sidecar volumes. Tracked at deploy
|
|
90
|
+
* time; soft-warned today (PB volumes don't have docker quotas
|
|
91
|
+
* wired yet), hard-enforced when a new app would exceed it.
|
|
92
|
+
*/
|
|
93
|
+
diskPoolMb: number;
|
|
33
94
|
/**
|
|
34
95
|
* Uptime probe interval in seconds. 0 disables external uptime
|
|
35
96
|
* monitoring entirely (Free tier). Non-zero values become the
|
|
@@ -63,6 +124,17 @@ export interface PlanInfo {
|
|
|
63
124
|
priceEur: number;
|
|
64
125
|
limits: PlanLimits;
|
|
65
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Pool sizes are derived from `docs/operations/capacity-model.md`'s
|
|
129
|
+
* "Konkreta startpooler" table. They are the *sellable* totals per
|
|
130
|
+
* tier — the user can fill them with any mix of apps × sizes as
|
|
131
|
+
* long as the sum fits. Per-app `memory` / `cpu` are now defaults
|
|
132
|
+
* (used when `[resources]` is omitted in percher.toml), not hard
|
|
133
|
+
* ceilings.
|
|
134
|
+
*
|
|
135
|
+
* `apps` is a hard cap (anti-abuse backstop) enforced at app-create;
|
|
136
|
+
* pool dimensions are the load-bearing constraint.
|
|
137
|
+
*/
|
|
66
138
|
export declare const PLAN_CATALOG: Record<PlanId, PlanInfo>;
|
|
67
139
|
export declare const PLAN_IDS: PlanId[];
|
|
68
140
|
/** Look up plan limits, defaulting to free for unknown plan ids */
|
|
@@ -77,9 +149,15 @@ export declare function getPlanInfo(plan: string): PlanInfo;
|
|
|
77
149
|
* plus `Number.POSITIVE_INFINITY` for every cap that would otherwise
|
|
78
150
|
* cause platform-driven friction when they're operating the
|
|
79
151
|
* platform: app count, deploy rate, preview slots, custom domains,
|
|
80
|
-
* cron jobs, KV size
|
|
81
|
-
*
|
|
82
|
-
*
|
|
152
|
+
* cron jobs, KV size. Auto-sleep is forced off and inactivity windows
|
|
153
|
+
* are essentially infinite so admin apps never get hibernated or
|
|
154
|
+
* suspended underneath them.
|
|
155
|
+
*
|
|
156
|
+
* EXCEPTION — `deployRetention` inherits Pro's finite 60, NOT infinity:
|
|
157
|
+
* it's storage (old deploy images/tarballs), and infinite made
|
|
158
|
+
* retention-cleanup a no-op for the operator's own apps. See the inline
|
|
159
|
+
* note on the override. (logRetentionDays / buildLogRetentionDays stay
|
|
160
|
+
* infinite — see that note for why.)
|
|
83
161
|
*
|
|
84
162
|
* Pure function, no side effects — callers compute `isAdmin` from
|
|
85
163
|
* the user record (typically `isAdminEmail(user.email)`) and pass
|
package/dist/plans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;8DAE0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA2KjD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAgC,MAAM,EAAE,CAAC;AAE9D,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,UAAU,CA0ChF"}
|
package/dist/plans.js
CHANGED
|
@@ -1,9 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disk-pool symmetry (Phase 1) — the disk footprint (MB) charged for
|
|
3
|
+
* a PocketBase app that has no measured volume sample yet. A new PB
|
|
4
|
+
* volume starts near-empty; this is the accounting placeholder until
|
|
5
|
+
* the PB-volume sampler records a real size. Same value across all
|
|
6
|
+
* tiers — it's a property of an empty PB volume, not of the plan.
|
|
7
|
+
* Pool accounting then tracks the measured size; the tier
|
|
8
|
+
* `diskPoolMb` is the real ceiling. See `PlanLimits.storageMb`.
|
|
9
|
+
*/
|
|
10
|
+
export const PB_INITIAL_FOOTPRINT_MB = 256;
|
|
11
|
+
/**
|
|
12
|
+
* Pool sizes are derived from `docs/operations/capacity-model.md`'s
|
|
13
|
+
* "Konkreta startpooler" table. They are the *sellable* totals per
|
|
14
|
+
* tier — the user can fill them with any mix of apps × sizes as
|
|
15
|
+
* long as the sum fits. Per-app `memory` / `cpu` are now defaults
|
|
16
|
+
* (used when `[resources]` is omitted in percher.toml), not hard
|
|
17
|
+
* ceilings.
|
|
18
|
+
*
|
|
19
|
+
* `apps` is a hard cap (anti-abuse backstop) enforced at app-create;
|
|
20
|
+
* pool dimensions are the load-bearing constraint.
|
|
21
|
+
*/
|
|
1
22
|
export const PLAN_CATALOG = {
|
|
2
23
|
free: {
|
|
3
24
|
label: "Free",
|
|
4
25
|
priceEur: 0,
|
|
5
26
|
limits: {
|
|
6
|
-
apps:
|
|
27
|
+
apps: 3,
|
|
7
28
|
deploysPerMonth: 50,
|
|
8
29
|
deploysPerHour: 12,
|
|
9
30
|
memory: "256mb",
|
|
@@ -19,26 +40,36 @@ export const PLAN_CATALOG = {
|
|
|
19
40
|
logRetentionDays: 1,
|
|
20
41
|
buildLogRetentionDays: 3,
|
|
21
42
|
cronJobs: 1,
|
|
22
|
-
storageMb:
|
|
43
|
+
storageMb: PB_INITIAL_FOOTPRINT_MB,
|
|
23
44
|
instances: 1,
|
|
24
|
-
slaUptime: null,
|
|
25
|
-
supportResponseTime: null,
|
|
26
45
|
kvStorageMb: 10,
|
|
27
46
|
uptimeIntervalSec: 0,
|
|
28
47
|
dailyLiveDeploys: 50,
|
|
29
48
|
dailyPreviewDeploys: 25,
|
|
30
49
|
userConcurrentDeploys: 2,
|
|
50
|
+
// 512 MB pool / 0.5 vCPU pool / 1 GB disk — per capacity-model
|
|
51
|
+
// CX22 line. Free relies on auto-sleep as the pressure valve,
|
|
52
|
+
// so committed actual usage is ≈ 0 when idle.
|
|
53
|
+
ramPoolMb: 512,
|
|
54
|
+
vcpuPool: 0.5,
|
|
55
|
+
diskPoolMb: 1_000,
|
|
31
56
|
},
|
|
32
57
|
},
|
|
33
58
|
starter: {
|
|
34
59
|
label: "Starter",
|
|
35
60
|
priceEur: 3,
|
|
36
61
|
limits: {
|
|
37
|
-
apps:
|
|
62
|
+
apps: 10,
|
|
38
63
|
deploysPerMonth: 200,
|
|
39
64
|
deploysPerHour: 30,
|
|
40
65
|
memory: "512mb",
|
|
41
|
-
|
|
66
|
+
// 0.25 default × 1 instance (Starter cap) = 0.25, fits the 1.0
|
|
67
|
+
// vCPU pool with generous headroom for users to bump per-app
|
|
68
|
+
// cpu in their toml. FUTURE21 rounded the pool from 0.75 to a
|
|
69
|
+
// full vCPU for round-number sellability — CPU isn't a hard
|
|
70
|
+
// capacity gate (kernel time-shares; we monitor cgroup
|
|
71
|
+
// throttling), so a half-vCPU bump costs nothing operationally.
|
|
72
|
+
cpu: 0.25,
|
|
42
73
|
pids: 256,
|
|
43
74
|
activePreviewsPerApp: 3,
|
|
44
75
|
customDomainsPerApp: 2,
|
|
@@ -50,26 +81,34 @@ export const PLAN_CATALOG = {
|
|
|
50
81
|
logRetentionDays: 7,
|
|
51
82
|
buildLogRetentionDays: 14,
|
|
52
83
|
cronJobs: 3,
|
|
53
|
-
storageMb:
|
|
84
|
+
storageMb: PB_INITIAL_FOOTPRINT_MB,
|
|
54
85
|
instances: 1,
|
|
55
|
-
slaUptime: null,
|
|
56
|
-
supportResponseTime: "72h email",
|
|
57
86
|
kvStorageMb: 50,
|
|
58
87
|
uptimeIntervalSec: 300,
|
|
59
88
|
dailyLiveDeploys: 100,
|
|
60
89
|
dailyPreviewDeploys: 50,
|
|
61
90
|
userConcurrentDeploys: 3,
|
|
91
|
+
// 1.5 GB / 1.0 vCPU / 5 GB disk — capacity-model CX22 line.
|
|
92
|
+
// FUTURE21 rounded vcpuPool from 0.75 → 1.0 for round-number
|
|
93
|
+
// sellability (CPU is time-shared by the kernel, not hard-gated).
|
|
94
|
+
ramPoolMb: 1_536,
|
|
95
|
+
vcpuPool: 1.0,
|
|
96
|
+
diskPoolMb: 5_000,
|
|
62
97
|
},
|
|
63
98
|
},
|
|
64
99
|
maker: {
|
|
65
100
|
label: "Maker",
|
|
66
101
|
priceEur: 12,
|
|
67
102
|
limits: {
|
|
68
|
-
apps:
|
|
103
|
+
apps: 20,
|
|
69
104
|
deploysPerMonth: 500,
|
|
70
105
|
deploysPerHour: 60,
|
|
71
106
|
memory: "1gb",
|
|
72
|
-
|
|
107
|
+
// 0.5 default × 2 instances (Maker cap) = 1.0, fits 2 vCPU
|
|
108
|
+
// pool with 1.0 headroom for users to bump per-app cpu. Was
|
|
109
|
+
// 1 — that saturated the pool with a single app × 2 instances
|
|
110
|
+
// and made the documented multi-app cap meaningless on CPU.
|
|
111
|
+
cpu: 0.5,
|
|
73
112
|
pids: 512,
|
|
74
113
|
activePreviewsPerApp: 3,
|
|
75
114
|
customDomainsPerApp: 5,
|
|
@@ -81,26 +120,43 @@ export const PLAN_CATALOG = {
|
|
|
81
120
|
logRetentionDays: 30,
|
|
82
121
|
buildLogRetentionDays: 30,
|
|
83
122
|
cronJobs: 10,
|
|
84
|
-
storageMb:
|
|
123
|
+
storageMb: PB_INITIAL_FOOTPRINT_MB,
|
|
85
124
|
instances: 2,
|
|
86
|
-
slaUptime: "99.5%",
|
|
87
|
-
supportResponseTime: "24h email",
|
|
88
125
|
kvStorageMb: 200,
|
|
89
126
|
uptimeIntervalSec: 60,
|
|
90
127
|
dailyLiveDeploys: 200,
|
|
91
128
|
dailyPreviewDeploys: 100,
|
|
92
129
|
userConcurrentDeploys: 5,
|
|
130
|
+
// 4 GB / 2 vCPU / 25 GB disk — capacity-model CX22 line.
|
|
131
|
+
// FUTURE21 halved diskPoolMb from 50 GB → 25 GB to keep the
|
|
132
|
+
// promised pool fits-on-disk-honestly on CX32 (80 GB local disk
|
|
133
|
+
// minus platform overhead). Disk-pool symmetry (Phase 1) charges
|
|
134
|
+
// MEASURED PB volume sizes against this pool — not one whole-pool
|
|
135
|
+
// reservation per PB app — so a Maker account can run many PB
|
|
136
|
+
// apps until the summed measured disk nears 25 GB (no more
|
|
137
|
+
// 1-PB-app-per-account wall). Worst-case committed RAM (pool +
|
|
138
|
+
// 20 PB-sidecars) = 6.56 GB, which is why Maker is closed on
|
|
139
|
+
// CX22 (committed_budget = 4.4 GB).
|
|
140
|
+
ramPoolMb: 4_096,
|
|
141
|
+
vcpuPool: 2,
|
|
142
|
+
diskPoolMb: 25_000,
|
|
93
143
|
},
|
|
94
144
|
},
|
|
95
145
|
pro: {
|
|
96
146
|
label: "Pro",
|
|
97
147
|
priceEur: 29,
|
|
98
148
|
limits: {
|
|
99
|
-
apps:
|
|
149
|
+
apps: 40,
|
|
100
150
|
deploysPerMonth: "unlimited",
|
|
101
151
|
deploysPerHour: 120,
|
|
102
|
-
memory: "
|
|
103
|
-
|
|
152
|
+
memory: "1gb",
|
|
153
|
+
// 1.0 default × 4 instances (Pro cap) = 4.0, fits 4 vCPU pool
|
|
154
|
+
// exactly with no headroom. Was 2 — that would have made any
|
|
155
|
+
// multi-instance deploy exceed the pool at default cpu. Users
|
|
156
|
+
// can drop per-app cpu in toml to leave headroom for more
|
|
157
|
+
// apps, or bump it on a single-instance app up to the full
|
|
158
|
+
// pool (= dedicated 4 vCPU).
|
|
159
|
+
cpu: 1,
|
|
104
160
|
pids: 1024,
|
|
105
161
|
activePreviewsPerApp: 3,
|
|
106
162
|
customDomainsPerApp: 10,
|
|
@@ -112,15 +168,26 @@ export const PLAN_CATALOG = {
|
|
|
112
168
|
logRetentionDays: 90,
|
|
113
169
|
buildLogRetentionDays: 90,
|
|
114
170
|
cronJobs: 25,
|
|
115
|
-
storageMb:
|
|
171
|
+
storageMb: PB_INITIAL_FOOTPRINT_MB,
|
|
116
172
|
instances: 4,
|
|
117
|
-
slaUptime: "99.9%",
|
|
118
|
-
supportResponseTime: "8h email + priority Discord",
|
|
119
173
|
kvStorageMb: 1000,
|
|
120
174
|
uptimeIntervalSec: 30,
|
|
121
175
|
dailyLiveDeploys: 1000,
|
|
122
176
|
dailyPreviewDeploys: 500,
|
|
123
177
|
userConcurrentDeploys: 20,
|
|
178
|
+
// 10 GB / 4 vCPU / 75 GB disk — capacity-model CX22 line.
|
|
179
|
+
// FUTURE21 sized diskPoolMb down from 200 GB → 75 GB so the
|
|
180
|
+
// promised pool actually fits on the boxes we run (CX42 has
|
|
181
|
+
// 160 GB local disk — 75 GB pool leaves room for platform +
|
|
182
|
+
// one more paying customer). Disk-pool symmetry (Phase 1) tracks
|
|
183
|
+
// MEASURED PB volume sizes against this pool, so a Pro account
|
|
184
|
+
// runs many PB apps until summed measured disk nears 75 GB
|
|
185
|
+
// (no single-PB-app-per-account reservation). Worst-case
|
|
186
|
+
// committed RAM (pool + 40 PB-sidecars) = 15.36 GB, which is
|
|
187
|
+
// why Pro still requires CX42 minimum.
|
|
188
|
+
ramPoolMb: 10_240,
|
|
189
|
+
vcpuPool: 4,
|
|
190
|
+
diskPoolMb: 75_000,
|
|
124
191
|
},
|
|
125
192
|
},
|
|
126
193
|
};
|
|
@@ -141,9 +208,15 @@ export function getPlanInfo(plan) {
|
|
|
141
208
|
* plus `Number.POSITIVE_INFINITY` for every cap that would otherwise
|
|
142
209
|
* cause platform-driven friction when they're operating the
|
|
143
210
|
* platform: app count, deploy rate, preview slots, custom domains,
|
|
144
|
-
* cron jobs, KV size
|
|
145
|
-
*
|
|
146
|
-
*
|
|
211
|
+
* cron jobs, KV size. Auto-sleep is forced off and inactivity windows
|
|
212
|
+
* are essentially infinite so admin apps never get hibernated or
|
|
213
|
+
* suspended underneath them.
|
|
214
|
+
*
|
|
215
|
+
* EXCEPTION — `deployRetention` inherits Pro's finite 60, NOT infinity:
|
|
216
|
+
* it's storage (old deploy images/tarballs), and infinite made
|
|
217
|
+
* retention-cleanup a no-op for the operator's own apps. See the inline
|
|
218
|
+
* note on the override. (logRetentionDays / buildLogRetentionDays stay
|
|
219
|
+
* infinite — see that note for why.)
|
|
147
220
|
*
|
|
148
221
|
* Pure function, no side effects — callers compute `isAdmin` from
|
|
149
222
|
* the user record (typically `isAdminEmail(user.email)`) and pass
|
|
@@ -168,11 +241,27 @@ export function getEffectivePlanLimits(plan, isAdmin = false) {
|
|
|
168
241
|
autoSleep: false,
|
|
169
242
|
inactivityWarningDays: INF,
|
|
170
243
|
inactivityGraceDays: INF,
|
|
171
|
-
deployRetention:
|
|
244
|
+
// deployRetention is NOT infinite for admin (decision 2026-05-24): it's
|
|
245
|
+
// the count of recent deploys whose Docker images + tarballs
|
|
246
|
+
// retention-cleanup keeps. Infinite meant the operator's own apps never
|
|
247
|
+
// shed old deploy images (the big disk consumer — e.g. stale multi-GB
|
|
248
|
+
// images lingered after an app was rebuilt). Inherit Pro's finite 60
|
|
249
|
+
// from `...pro` above. logRetentionDays / buildLogRetentionDays stay
|
|
250
|
+
// infinite: they only gate text/telemetry (not the image disk) AND
|
|
251
|
+
// logRetentionDays' finiteness doubles as the admin signal in
|
|
252
|
+
// plan5MinRetentionDays — flipping it would silently reap admin metrics
|
|
253
|
+
// history. Revisit those two separately if ever needed.
|
|
172
254
|
logRetentionDays: INF,
|
|
173
255
|
buildLogRetentionDays: INF,
|
|
174
256
|
cronJobs: INF,
|
|
175
257
|
kvStorageMb: INF,
|
|
258
|
+
// FUTURE20 Fas 3 — admin bypasses pool checks too. Otherwise
|
|
259
|
+
// the operator's own apps would hit "your tier pool is full"
|
|
260
|
+
// when running platform-management apps (admin tooling,
|
|
261
|
+
// dogfood deploys, etc.).
|
|
262
|
+
ramPoolMb: INF,
|
|
263
|
+
vcpuPool: INF,
|
|
264
|
+
diskPoolMb: INF,
|
|
176
265
|
// Admin probes still happen at the pro cadence (30s) — no point in
|
|
177
266
|
// trying to make this "infinite", and faster than 30s starts to
|
|
178
267
|
// matter for outbound bandwidth without paying for itself.
|
package/dist/plans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/dist/recovery.d.ts
CHANGED
|
@@ -52,6 +52,17 @@ export type RecoveryAction =
|
|
|
52
52
|
| "fix_config"
|
|
53
53
|
/** Plan limits exceeded or otherwise needs human input; agent should ask the user. */
|
|
54
54
|
| "ask_user"
|
|
55
|
+
/**
|
|
56
|
+
* FUTURE16 Fas 3 — pre-fetched device-code is in-flight. Agent should
|
|
57
|
+
* call `percher_wait_for_auth` to short-poll the device-code exchange,
|
|
58
|
+
* then resume the original publish call. Pairs 1:1 with the
|
|
59
|
+
* `auth_pending` PublishStatus. Distinct from `open_login` (which
|
|
60
|
+
* tells the agent to *start* a login flow via `percher_login`) — by
|
|
61
|
+
* the time `wait_auth` is emitted the device-code already exists and
|
|
62
|
+
* the user has been pointed at the verification URL; only the wait
|
|
63
|
+
* step remains.
|
|
64
|
+
*/
|
|
65
|
+
| "wait_auth"
|
|
55
66
|
/** Success path — no further action required. */
|
|
56
67
|
| "none";
|
|
57
68
|
/** MCP tool the agent should invoke for `nextAction`, when applicable. */
|
|
@@ -70,7 +81,14 @@ export type SuggestedTool = "percher_login" | "percher_env_set" | "percher_deplo
|
|
|
70
81
|
| "percher_redeploy"
|
|
71
82
|
/** FUTURE1 Phase 4.2 — percher_reproduce tool, surfaced via
|
|
72
83
|
* alternativeActions on build-failure recovery. */
|
|
73
|
-
| "percher_reproduce"
|
|
84
|
+
| "percher_reproduce"
|
|
85
|
+
/**
|
|
86
|
+
* FUTURE16 Fas 3 — short-polls a pre-fetched device-code and resumes
|
|
87
|
+
* the original publish input once a token lands. Pairs with the
|
|
88
|
+
* `wait_auth` recovery action and the `auth_pending` publish status.
|
|
89
|
+
* MCP-only tool — CLI's `percher login` already polls in-process.
|
|
90
|
+
*/
|
|
91
|
+
| "percher_wait_for_auth";
|
|
74
92
|
/**
|
|
75
93
|
* FUTURE12 Phase 1a — stable, enumerated reason an agent or human can
|
|
76
94
|
* branch on. Intentionally orthogonal to `RecoveryAction`: action says
|
|
@@ -135,6 +153,26 @@ export type ReasonCode =
|
|
|
135
153
|
| "log_fetch_failed"
|
|
136
154
|
/** Deploy died before the build phase started (e.g. tarball validation). */
|
|
137
155
|
| "failed_before_build"
|
|
156
|
+
/** FUTURE_app-suspension-lift Fas 3. App was suspended by admin
|
|
157
|
+
* moderation (or by the failure-loop guard when the new
|
|
158
|
+
* lift-via-publish flow is enabled). The recovery prompt + the
|
|
159
|
+
* client error's `extra` block carry `liftAfter` (ISO timestamp
|
|
160
|
+
* or null), `liftableNow` (bool), `canLiftViaPublish` (bool),
|
|
161
|
+
* and `fixInstructions` (string or null). Agents should:
|
|
162
|
+
* - if `canLiftViaPublish && liftableNow` → ask the user to
|
|
163
|
+
* fix per `fixInstructions` then retry publish (a successful
|
|
164
|
+
* deploy auto-clears the suspension);
|
|
165
|
+
* - if `canLiftViaPublish && !liftableNow` → surface the
|
|
166
|
+
* countdown to `liftAfter` verbatim, don't retry sooner;
|
|
167
|
+
* - otherwise → contact-support path (existing behaviour). */
|
|
168
|
+
| "app_suspended"
|
|
169
|
+
/** FUTURE_account-deletion-guards Fas 4. percher_account_delete
|
|
170
|
+
* pre-flighted percher_account_deletion_preview and got back a
|
|
171
|
+
* non-empty blocker list (apps_owned, apps_with_collaborators,
|
|
172
|
+
* pending_outgoing_transfers, deploys_in_progress, etc.). The agent
|
|
173
|
+
* must surface `recovery.prompt` verbatim and let the user resolve
|
|
174
|
+
* the blockers via the existing routes before retrying. */
|
|
175
|
+
| "account_deletion_blocked"
|
|
138
176
|
/** Catch-all for unclassified state — agents should route to doctor. */
|
|
139
177
|
| "unknown";
|
|
140
178
|
/**
|
|
@@ -152,7 +190,18 @@ export type DoctorMode = "auto" | "deploy" | "runtime" | "config" | "env" | "acc
|
|
|
152
190
|
* deploy. Pinning the value here so the CLI/MCP can declare exhaustive
|
|
153
191
|
* switches before the server path lands.
|
|
154
192
|
*/
|
|
155
|
-
export type PublishStatus = "live" | "failed" | "needs_login"
|
|
193
|
+
export type PublishStatus = "live" | "failed" | "needs_login"
|
|
194
|
+
/**
|
|
195
|
+
* FUTURE16 Fas 3 — MCP `percher_publish` returns this when the
|
|
196
|
+
* caller's session has no token AND a device-code has already been
|
|
197
|
+
* pre-fetched. The agent's next step is `percher_wait_for_auth`
|
|
198
|
+
* (carried in `recovery`); the tarball has NOT been packed yet, so
|
|
199
|
+
* the resume call is the first and only packaging operation in the
|
|
200
|
+
* entire auth flow. CLI uses the existing `needs_login` path —
|
|
201
|
+
* `auth_pending` is MCP-specific because only a long-lived agent
|
|
202
|
+
* session benefits from the pre-fetch + in-process poll split.
|
|
203
|
+
*/
|
|
204
|
+
| "auth_pending" | "dry_run" | "queued" | "replaced" | "already_in_progress";
|
|
156
205
|
/**
|
|
157
206
|
* Structured problem entry used by `fix_config` and `fix_problems`
|
|
158
207
|
* recoveries. Agents apply file edits directly using these.
|
|
@@ -199,7 +248,14 @@ interface BaseRecovery {
|
|
|
199
248
|
* Phase 4 migrates it to `run_doctor`.
|
|
200
249
|
*/
|
|
201
250
|
export interface ToolRecovery extends BaseRecovery {
|
|
202
|
-
nextAction: "open_login" | "wait_deploy" | "run_doctor" | "set_env_vars" | "retry" | "inspect_build_log"
|
|
251
|
+
nextAction: "open_login" | "wait_deploy" | "run_doctor" | "set_env_vars" | "retry" | "inspect_build_log"
|
|
252
|
+
/**
|
|
253
|
+
* FUTURE16 Fas 3 — short-poll a pre-fetched device-code via
|
|
254
|
+
* `percher_wait_for_auth`. `args` carries `{ deviceCode,
|
|
255
|
+
* publishArgs }` so the agent can resume the original publish
|
|
256
|
+
* call without re-deriving inputs.
|
|
257
|
+
*/
|
|
258
|
+
| "wait_auth";
|
|
203
259
|
suggestedTool: SuggestedTool;
|
|
204
260
|
args: Record<string, unknown>;
|
|
205
261
|
}
|
|
@@ -241,6 +297,20 @@ export declare function recoveryNone(opts?: {
|
|
|
241
297
|
export declare function recoveryLogin(opts?: {
|
|
242
298
|
reasonCode?: ReasonCode;
|
|
243
299
|
}): ToolRecovery;
|
|
300
|
+
/**
|
|
301
|
+
* FUTURE16 Fas 3 — pre-fetched device-code is in-flight; agent should
|
|
302
|
+
* call `percher_wait_for_auth` to short-poll the exchange and resume
|
|
303
|
+
* publish once a token lands. `publishArgs` carries the *raw user
|
|
304
|
+
* input flags* (cwd is implicit on ctx; preview/live/message/dryRun/
|
|
305
|
+
* etc. ride here) so the resume call is a first-time publish — no
|
|
306
|
+
* tarball state is preserved across the wait, no upload state to
|
|
307
|
+
* invalidate. That's the entire point of pre-fetch + in-process poll
|
|
308
|
+
* over the alternative anonymous-staged-tarball design (see plan).
|
|
309
|
+
*/
|
|
310
|
+
export declare function recoveryAuthPending(opts: {
|
|
311
|
+
deviceCode: string;
|
|
312
|
+
publishArgs: Record<string, unknown>;
|
|
313
|
+
}): ToolRecovery;
|
|
244
314
|
/** Wait on an in-flight deploy — agent should call `percher_wait_for_deploy`. */
|
|
245
315
|
export declare function recoveryWait(opts: {
|
|
246
316
|
app: string;
|
package/dist/recovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc;AACxB,kEAAkE;AAChE,YAAY;AACd,iEAAiE;GAC/D,cAAc;AAChB;;;;GAIG;GACD,aAAa;AACf,qEAAqE;GACnE,OAAO;AACT;;;;;;;GAOG;GACD,YAAY;AACd,mFAAmF;GACjF,mBAAmB;AACrB;;;;;GAKG;GACD,cAAc;AAChB;;;;;;;;GAQG;GACD,mBAAmB;AACrB,+EAA+E;GAC7E,YAAY;AACd,sFAAsF;GACpF,UAAU;AACZ,iDAAiD;GAC/C,MAAM,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,iBAAiB,GACjB,yBAAyB,GACzB,iBAAiB;AACnB,kFAAkF;GAChF,yBAAyB;AAC3B;;;;GAIG;GACD,gBAAgB;AAClB;;qDAEqD;GACnD,kBAAkB;AACpB;oDACoD;GAClD,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
|
package/dist/recovery.js
CHANGED
|
@@ -24,6 +24,28 @@ export function recoveryLogin(opts = {}) {
|
|
|
24
24
|
reasonCode: opts.reasonCode ?? "auth_required",
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* FUTURE16 Fas 3 — pre-fetched device-code is in-flight; agent should
|
|
29
|
+
* call `percher_wait_for_auth` to short-poll the exchange and resume
|
|
30
|
+
* publish once a token lands. `publishArgs` carries the *raw user
|
|
31
|
+
* input flags* (cwd is implicit on ctx; preview/live/message/dryRun/
|
|
32
|
+
* etc. ride here) so the resume call is a first-time publish — no
|
|
33
|
+
* tarball state is preserved across the wait, no upload state to
|
|
34
|
+
* invalidate. That's the entire point of pre-fetch + in-process poll
|
|
35
|
+
* over the alternative anonymous-staged-tarball design (see plan).
|
|
36
|
+
*/
|
|
37
|
+
export function recoveryAuthPending(opts) {
|
|
38
|
+
return {
|
|
39
|
+
retryable: false,
|
|
40
|
+
nextAction: "wait_auth",
|
|
41
|
+
suggestedTool: "percher_wait_for_auth",
|
|
42
|
+
args: {
|
|
43
|
+
deviceCode: opts.deviceCode,
|
|
44
|
+
publishArgs: opts.publishArgs,
|
|
45
|
+
},
|
|
46
|
+
reasonCode: "auth_required",
|
|
47
|
+
};
|
|
48
|
+
}
|
|
27
49
|
/** Wait on an in-flight deploy — agent should call `percher_wait_for_deploy`. */
|
|
28
50
|
export function recoveryWait(opts) {
|
|
29
51
|
return {
|
|
@@ -200,6 +222,20 @@ export function recoveryFromErrorClass(errorClass, failure = {}) {
|
|
|
200
222
|
args: failure.publishInput ?? {},
|
|
201
223
|
reasonCode: "infra_unavailable",
|
|
202
224
|
});
|
|
225
|
+
case "platform_at_capacity":
|
|
226
|
+
// Track A — A1: a box-admission rejection is a transient platform-side
|
|
227
|
+
// limit (the host is full right now), not the app's fault. Hand the
|
|
228
|
+
// agent the same retry recovery as infra_unavailable so it re-issues
|
|
229
|
+
// the publish once capacity frees up, instead of falling through to
|
|
230
|
+
// the generic ask_user/doctor path. reasonCode `infra_transient`
|
|
231
|
+
// (retryable) keeps it distinct from a hard infra outage. The
|
|
232
|
+
// failure-loop guard already excludes this class (A2), so retries
|
|
233
|
+
// won't trip auto-suspension.
|
|
234
|
+
return recoveryRetry({
|
|
235
|
+
suggestedTool: "percher_publish",
|
|
236
|
+
args: failure.publishInput ?? {},
|
|
237
|
+
reasonCode: "infra_transient",
|
|
238
|
+
});
|
|
203
239
|
case "config_invalid":
|
|
204
240
|
return recoveryFixConfig({
|
|
205
241
|
problems: [
|