@percher/core 0.4.10 → 0.4.12

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 (155) hide show
  1. package/dist/ai-files-manifest.d.ts +1 -1
  2. package/dist/appstore-artifacts.d.ts +44 -0
  3. package/dist/appstore-artifacts.d.ts.map +1 -0
  4. package/dist/appstore-artifacts.js +142 -0
  5. package/dist/appstore-artifacts.js.map +1 -0
  6. package/dist/commands/account.d.ts +1 -1
  7. package/dist/commands/account.js +2 -2
  8. package/dist/commands/admin-reconcile-routes.d.ts +1 -1
  9. package/dist/commands/ai-files.d.ts +2 -2
  10. package/dist/commands/ai-files.js +2 -2
  11. package/dist/commands/alerts.d.ts +1 -1
  12. package/dist/commands/app-resources.d.ts +1 -1
  13. package/dist/commands/app-resources.js +2 -2
  14. package/dist/commands/app-topology.d.ts +1 -1
  15. package/dist/commands/app-topology.js +2 -2
  16. package/dist/commands/appstore-kit.d.ts +36 -0
  17. package/dist/commands/appstore-kit.d.ts.map +1 -0
  18. package/dist/commands/appstore-kit.js +93 -0
  19. package/dist/commands/appstore-kit.js.map +1 -0
  20. package/dist/commands/billing.d.ts +1 -1
  21. package/dist/commands/billing.js +1 -1
  22. package/dist/commands/cache.d.ts +1 -1
  23. package/dist/commands/cache.js +2 -2
  24. package/dist/commands/capabilities.d.ts +1 -1
  25. package/dist/commands/claim.d.ts +1 -1
  26. package/dist/commands/claim.js +1 -1
  27. package/dist/commands/create.d.ts +2 -2
  28. package/dist/commands/create.js +2 -2
  29. package/dist/commands/dashboard.d.ts +1 -1
  30. package/dist/commands/dashboard.js +2 -2
  31. package/dist/commands/data-export.d.ts +1 -1
  32. package/dist/commands/data-export.js +3 -3
  33. package/dist/commands/data.d.ts +1 -1
  34. package/dist/commands/data.js +2 -2
  35. package/dist/commands/delete.d.ts +1 -1
  36. package/dist/commands/delete.js +2 -2
  37. package/dist/commands/deploys.d.ts +1 -1
  38. package/dist/commands/deploys.js +2 -2
  39. package/dist/commands/dev.d.ts +1 -1
  40. package/dist/commands/dev.js +3 -3
  41. package/dist/commands/diagnose.d.ts +1 -1
  42. package/dist/commands/diagnose.js +2 -2
  43. package/dist/commands/diff.d.ts +1 -1
  44. package/dist/commands/diff.js +2 -2
  45. package/dist/commands/doctor.d.ts +3 -3
  46. package/dist/commands/doctor.js +4 -4
  47. package/dist/commands/domains.d.ts +1 -1
  48. package/dist/commands/domains.js +2 -2
  49. package/dist/commands/env.d.ts +1 -1
  50. package/dist/commands/env.js +2 -2
  51. package/dist/commands/export.d.ts +1 -1
  52. package/dist/commands/export.js +2 -2
  53. package/dist/commands/forgejo.d.ts +1 -1
  54. package/dist/commands/forgejo.js +2 -2
  55. package/dist/commands/generate.d.ts +1 -1
  56. package/dist/commands/generate.js +1 -1
  57. package/dist/commands/github.d.ts +1 -1
  58. package/dist/commands/github.js +2 -2
  59. package/dist/commands/import-project.d.ts +1 -1
  60. package/dist/commands/import-project.js +2 -2
  61. package/dist/commands/init.d.ts +2 -2
  62. package/dist/commands/init.js +3 -3
  63. package/dist/commands/insights.d.ts +1 -1
  64. package/dist/commands/insights.js +2 -2
  65. package/dist/commands/inspect-link.d.ts +1 -1
  66. package/dist/commands/inspect-link.js +2 -2
  67. package/dist/commands/login.d.ts +1 -1
  68. package/dist/commands/login.js +1 -1
  69. package/dist/commands/logs.d.ts +1 -1
  70. package/dist/commands/logs.js +2 -2
  71. package/dist/commands/mcp.d.ts +1 -1
  72. package/dist/commands/migrate-supabase-map.d.ts +1 -1
  73. package/dist/commands/migrate-supabase-recipes.d.ts +28 -0
  74. package/dist/commands/migrate-supabase-recipes.d.ts.map +1 -0
  75. package/dist/commands/migrate-supabase-recipes.js +92 -0
  76. package/dist/commands/migrate-supabase-recipes.js.map +1 -0
  77. package/dist/commands/migrate-supabase-rewrite.d.ts +8 -3
  78. package/dist/commands/migrate-supabase-rewrite.d.ts.map +1 -1
  79. package/dist/commands/migrate-supabase-rewrite.js +155 -11
  80. package/dist/commands/migrate-supabase-rewrite.js.map +1 -1
  81. package/dist/commands/migrate-supabase-scaffold.d.ts +25 -0
  82. package/dist/commands/migrate-supabase-scaffold.d.ts.map +1 -0
  83. package/dist/commands/migrate-supabase-scaffold.js +234 -0
  84. package/dist/commands/migrate-supabase-scaffold.js.map +1 -0
  85. package/dist/commands/migrate-supabase-schema.d.ts +4 -4
  86. package/dist/commands/migrate-supabase-schema.js +4 -4
  87. package/dist/commands/migrate-supabase-scripts.d.ts +1 -1
  88. package/dist/commands/migrate-supabase-sdk.d.ts +34 -0
  89. package/dist/commands/migrate-supabase-sdk.d.ts.map +1 -1
  90. package/dist/commands/migrate-supabase-sdk.js +169 -0
  91. package/dist/commands/migrate-supabase-sdk.js.map +1 -1
  92. package/dist/commands/migrate-supabase-status.d.ts +92 -0
  93. package/dist/commands/migrate-supabase-status.d.ts.map +1 -0
  94. package/dist/commands/migrate-supabase-status.js +470 -0
  95. package/dist/commands/migrate-supabase-status.js.map +1 -0
  96. package/dist/commands/migrate-supabase-walker.d.ts +15 -1
  97. package/dist/commands/migrate-supabase-walker.d.ts.map +1 -1
  98. package/dist/commands/migrate-supabase-walker.js +49 -5
  99. package/dist/commands/migrate-supabase-walker.js.map +1 -1
  100. package/dist/commands/migrate-supabase.d.ts +2 -2
  101. package/dist/commands/migrate-supabase.js +1 -1
  102. package/dist/commands/open.d.ts +1 -1
  103. package/dist/commands/open.js +2 -2
  104. package/dist/commands/preview-branch.d.ts +1 -1
  105. package/dist/commands/preview-branch.js +2 -2
  106. package/dist/commands/publish-api-error.d.ts +1 -1
  107. package/dist/commands/publish-api-error.js +1 -1
  108. package/dist/commands/publish-failure.d.ts +3 -3
  109. package/dist/commands/publish-failure.js +3 -3
  110. package/dist/commands/publish.d.ts +3 -3
  111. package/dist/commands/publish.js +13 -13
  112. package/dist/commands/push.d.ts +2 -2
  113. package/dist/commands/push.js +8 -8
  114. package/dist/commands/redeploy.d.ts +2 -2
  115. package/dist/commands/redeploy.js +4 -4
  116. package/dist/commands/rename.d.ts +1 -1
  117. package/dist/commands/rename.js +2 -2
  118. package/dist/commands/reproduce.d.ts +1 -1
  119. package/dist/commands/reproduce.js +1 -1
  120. package/dist/commands/reset-superuser.d.ts +1 -1
  121. package/dist/commands/reset-superuser.js +2 -2
  122. package/dist/commands/restore.d.ts +1 -1
  123. package/dist/commands/restore.js +2 -2
  124. package/dist/commands/resume.d.ts +1 -1
  125. package/dist/commands/resume.js +2 -2
  126. package/dist/commands/rollback.d.ts +1 -1
  127. package/dist/commands/rollback.js +2 -2
  128. package/dist/commands/sharing.d.ts +1 -1
  129. package/dist/commands/sharing.js +2 -2
  130. package/dist/commands/status.d.ts +1 -1
  131. package/dist/commands/transfers.d.ts +1 -1
  132. package/dist/commands/transfers.js +2 -2
  133. package/dist/commands/unsuspend.d.ts +1 -1
  134. package/dist/commands/versions.d.ts +1 -1
  135. package/dist/commands/versions.js +2 -2
  136. package/dist/commands/wait-deploy.d.ts +3 -3
  137. package/dist/commands/wait-deploy.js +3 -3
  138. package/dist/commands/whoami.d.ts +1 -1
  139. package/dist/detect.js +1 -1
  140. package/dist/errors.d.ts +1 -1
  141. package/dist/errors.d.ts.map +1 -1
  142. package/dist/errors.js.map +1 -1
  143. package/dist/index.d.ts +78 -75
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +77 -74
  146. package/dist/index.js.map +1 -1
  147. package/dist/plans.d.ts +0 -1
  148. package/dist/plans.d.ts.map +1 -1
  149. package/dist/plans.js +0 -6
  150. package/dist/plans.js.map +1 -1
  151. package/dist/poll-deployment.d.ts +1 -1
  152. package/dist/recovery.d.ts +1 -1
  153. package/dist/structured-error-codes.d.ts +1 -1
  154. package/dist/templates/ai-files/index.js +2 -2
  155. package/package.json +11 -3
@@ -1,4 +1,4 @@
1
- import type { AiFileTemplate } from "./templates/ai-files";
1
+ import type { AiFileTemplate } from "./templates/ai-files/index.js";
2
2
  export interface ManifestEntry {
3
3
  templateId: string;
4
4
  templateVersion: string;
@@ -0,0 +1,44 @@
1
+ export declare function themeColorForToken(token: string | null): string;
2
+ /**
3
+ * Minimal VALID manifest.json starter. It is a file the user downloads and
4
+ * serves verbatim, so it must parse — no JS comments. Icons are intentionally
5
+ * omitted (we can't generate the user's artwork). `theme_color` is the app's
6
+ * accent token (brand green by default); `background_color` stays a neutral
7
+ * white. start_url is "/" (served from the app's own origin).
8
+ */
9
+ export declare function manifestStarter({ name, themeColorHex, }: {
10
+ name: string;
11
+ themeColorHex: string;
12
+ }): string;
13
+ /** Minimal offline-shell service worker (caches the app shell on install). */
14
+ export declare function serviceWorkerStarter(): string;
15
+ /** The one-line registration snippet to add to the app's entry HTML/JS. */
16
+ export declare function swRegistrationSnippet(): string;
17
+ /** Pre-filled Bubblewrap init/build, pointed at the app's manifest. */
18
+ export declare function bubblewrapCommand({ url }: {
19
+ url: string;
20
+ }): string;
21
+ /** capacitor.config.ts pointed at the app's URL. */
22
+ export declare function capacitorConfig({ name, url }: {
23
+ name: string;
24
+ url: string;
25
+ }): string;
26
+ /**
27
+ * Digital Asset Links (assetlinks.json) for a Trusted Web Activity. Inputs
28
+ * come from a form — package name + signing-cert SHA-256 don't exist until the
29
+ * user creates and signs the Android app, so empty inputs keep placeholders.
30
+ */
31
+ export declare function assetlinksJson({ packageName, sha256Fingerprint, }: {
32
+ packageName: string;
33
+ sha256Fingerprint: string;
34
+ }): string;
35
+ /**
36
+ * Apple App Site Association (AASA) for iOS universal links. Form inputs;
37
+ * empty Team ID / bundle ID keep placeholders. Served with NO extension as
38
+ * application/json on the app's origin.
39
+ */
40
+ export declare function appleAppSiteAssociation({ teamId, bundleId, }: {
41
+ teamId: string;
42
+ bundleId: string;
43
+ }): string;
44
+ //# sourceMappingURL=appstore-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appstore-artifacts.d.ts","sourceRoot":"","sources":["../src/appstore-artifacts.ts"],"names":[],"mappings":"AAwBA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG/D;AAiBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,aAAa,GACd,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAaT;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,MAAM,CAyB7C;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAKlE;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAUpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,iBAAiB,GAClB,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAWT;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAST"}
@@ -0,0 +1,142 @@
1
+ // App-store kit generators (FUTURE_app-store-publishing-bridge).
2
+ //
3
+ // Pure, dependency-free functions that emit *starter* artifacts for taking a
4
+ // Percher-hosted app to the app stores. Shared by the dashboard "App store kit"
5
+ // panel (C2), the CLI `percher appstore-kit`, and the MCP `percher_appstore_kit`
6
+ // tool (D) so all three stay byte-identical. They also track the templates in
7
+ // the docs section app/docs/sections/app-stores.tsx — keep them in step.
8
+ //
9
+ // None of these make the app a PWA or publish it anywhere; they produce files
10
+ // the user still has to wire up + serve (or let Percher edge-serve, C3).
11
+ const BRAND_GREEN = "#2d6a4f";
12
+ // Maps the owner-picked iconColour token to a literal brand hex for the
13
+ // manifest's theme_color/background. A manifest is a downloadable file, so it
14
+ // needs a real hex — not a CSS var. Defaults to brand green when null/unknown.
15
+ const ICON_COLOUR_HEX = {
16
+ green: BRAND_GREEN,
17
+ terracotta: "#d0653a",
18
+ blue: "#4a6fa4",
19
+ purple: "#6e4dba",
20
+ olive: "#b8923a",
21
+ };
22
+ export function themeColorForToken(token) {
23
+ if (token && token in ICON_COLOUR_HEX)
24
+ return ICON_COLOUR_HEX[token] ?? BRAND_GREEN;
25
+ return BRAND_GREEN;
26
+ }
27
+ /** Best-effort hostname from an app URL; falls back to the raw input. */
28
+ function hostFromUrl(url) {
29
+ try {
30
+ return new URL(url).host;
31
+ }
32
+ catch {
33
+ return url.replace(/^https?:\/\//, "").replace(/\/.*$/, "");
34
+ }
35
+ }
36
+ /** A short_name derived from the app name — letters/digits only, capped at 12. */
37
+ function shortName(name) {
38
+ const cleaned = name.replace(/[^A-Za-z0-9]/g, "");
39
+ return (cleaned || "App").slice(0, 12);
40
+ }
41
+ /**
42
+ * Minimal VALID manifest.json starter. It is a file the user downloads and
43
+ * serves verbatim, so it must parse — no JS comments. Icons are intentionally
44
+ * omitted (we can't generate the user's artwork). `theme_color` is the app's
45
+ * accent token (brand green by default); `background_color` stays a neutral
46
+ * white. start_url is "/" (served from the app's own origin).
47
+ */
48
+ export function manifestStarter({ name, themeColorHex, }) {
49
+ return JSON.stringify({
50
+ name,
51
+ short_name: shortName(name),
52
+ start_url: "/",
53
+ display: "standalone",
54
+ background_color: "#ffffff",
55
+ theme_color: themeColorHex,
56
+ }, null, 2);
57
+ }
58
+ /** Minimal offline-shell service worker (caches the app shell on install). */
59
+ export function serviceWorkerStarter() {
60
+ return `// sw.js — minimal offline shell. Drop in at your app root and serve from /sw.js.
61
+ const CACHE = "app-shell-v1";
62
+ const SHELL = ["/"];
63
+
64
+ self.addEventListener("install", (event) => {
65
+ event.waitUntil(caches.open(CACHE).then((cache) => cache.addAll(SHELL)));
66
+ self.skipWaiting();
67
+ });
68
+
69
+ self.addEventListener("activate", (event) => {
70
+ event.waitUntil(
71
+ caches.keys().then((keys) =>
72
+ Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k))),
73
+ ),
74
+ );
75
+ self.clients.claim();
76
+ });
77
+
78
+ self.addEventListener("fetch", (event) => {
79
+ if (event.request.method !== "GET") return;
80
+ event.respondWith(
81
+ caches.match(event.request).then((cached) => cached || fetch(event.request)),
82
+ );
83
+ });`;
84
+ }
85
+ /** The one-line registration snippet to add to the app's entry HTML/JS. */
86
+ export function swRegistrationSnippet() {
87
+ return `if ("serviceWorker" in navigator) {
88
+ navigator.serviceWorker.register("/sw.js");
89
+ }`;
90
+ }
91
+ /** Pre-filled Bubblewrap init/build, pointed at the app's manifest. */
92
+ export function bubblewrapCommand({ url }) {
93
+ const host = hostFromUrl(url);
94
+ return `# generate the Android project, pointed at your manifest
95
+ npx @bubblewrap/cli init --manifest https://${host}/manifest.json
96
+ npx @bubblewrap/cli build`;
97
+ }
98
+ /** capacitor.config.ts pointed at the app's URL. */
99
+ export function capacitorConfig({ name, url }) {
100
+ const host = hostFromUrl(url);
101
+ return `import type { CapacitorConfig } from "@capacitor/cli";
102
+ const config: CapacitorConfig = {
103
+ appId: "app.percher.yourapp",
104
+ appName: ${JSON.stringify(name)},
105
+ webDir: "dist",
106
+ server: { url: "https://${host}", cleartext: false },
107
+ };
108
+ export default config;`;
109
+ }
110
+ /**
111
+ * Digital Asset Links (assetlinks.json) for a Trusted Web Activity. Inputs
112
+ * come from a form — package name + signing-cert SHA-256 don't exist until the
113
+ * user creates and signs the Android app, so empty inputs keep placeholders.
114
+ */
115
+ export function assetlinksJson({ packageName, sha256Fingerprint, }) {
116
+ const pkg = packageName.trim() || "app.percher.yourapp";
117
+ const fp = sha256Fingerprint.trim() || "<your signing cert SHA-256>";
118
+ return `[{
119
+ "relation": ["delegate_permission/common.handle_all_urls"],
120
+ "target": {
121
+ "namespace": "android_app",
122
+ "package_name": ${JSON.stringify(pkg)},
123
+ "sha256_cert_fingerprints": [${JSON.stringify(fp)}]
124
+ }
125
+ }]`;
126
+ }
127
+ /**
128
+ * Apple App Site Association (AASA) for iOS universal links. Form inputs;
129
+ * empty Team ID / bundle ID keep placeholders. Served with NO extension as
130
+ * application/json on the app's origin.
131
+ */
132
+ export function appleAppSiteAssociation({ teamId, bundleId, }) {
133
+ const team = teamId.trim() || "TEAMID";
134
+ const bundle = bundleId.trim() || "app.percher.yourapp";
135
+ return `{
136
+ "applinks": {
137
+ "apps": [],
138
+ "details": [{ "appID": ${JSON.stringify(`${team}.${bundle}`)}, "paths": ["*"] }]
139
+ }
140
+ }`;
141
+ }
142
+ //# sourceMappingURL=appstore-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appstore-artifacts.js","sourceRoot":"","sources":["../src/appstore-artifacts.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { DeletionPreview } from "@percher/client";
2
2
  import { z } from "zod";
3
- import type { Context } from "../context";
3
+ import type { Context } from "../context.js";
4
4
  /**
5
5
  * IMPLEMENTING-followup item 7 — GDPR account commands. The server
6
6
  * already exposes GET /account/export (Art. 20) and DELETE /account
@@ -1,8 +1,8 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import { join, resolve } from "node:path";
3
3
  import { z } from "zod";
4
- import { PercherCoreError } from "../errors";
5
- import { writeResponseToFile } from "../stream-utils";
4
+ import { PercherCoreError } from "../errors.js";
5
+ import { writeResponseToFile } from "../stream-utils.js";
6
6
  /**
7
7
  * IMPLEMENTING-followup item 7 — GDPR account commands. The server
8
8
  * already exposes GET /account/export (Art. 20) and DELETE /account
@@ -1,6 +1,6 @@
1
1
  import type { AdminReconcileRoutesResult } from "@percher/client";
2
2
  import { z } from "zod";
3
- import type { Context } from "../context";
3
+ import type { Context } from "../context.js";
4
4
  /**
5
5
  * FUTURE18 Fas 4 — `percher admin reconcile-routes` command. Thin
6
6
  * wrapper around the client's `adminReconcileRoutes` so the CLI,
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { type FileStatus } from "../ai-files-manifest";
3
- import type { Context } from "../context";
2
+ import { type FileStatus } from "../ai-files-manifest.js";
3
+ import type { Context } from "../context.js";
4
4
  export declare const aiFilesInstallInputSchema: z.ZodObject<{
5
5
  force: z.ZodOptional<z.ZodBoolean>;
6
6
  }, z.core.$strip>;
@@ -1,8 +1,8 @@
1
1
  import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { z } from "zod";
4
- import { classifyFile, hashContent, hasSymlinkInPath, loadManifest, saveManifest, } from "../ai-files-manifest";
5
- import { AI_FILE_TEMPLATES } from "../templates/ai-files";
4
+ import { classifyFile, hashContent, hasSymlinkInPath, loadManifest, saveManifest, } from "../ai-files-manifest.js";
5
+ import { AI_FILE_TEMPLATES } from "../templates/ai-files/index.js";
6
6
  export const aiFilesInstallInputSchema = z.object({
7
7
  force: z.boolean().optional(),
8
8
  });
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  /**
4
4
  * FUTURE9 Fas 3 — MCP tools that wrap `/alerts/preferences`.
5
5
  *
@@ -1,6 +1,6 @@
1
1
  import type { AppResources } from "@percher/client";
2
2
  import { z } from "zod";
3
- import type { Context } from "../context";
3
+ import type { Context } from "../context.js";
4
4
  export declare const appResourcesInputSchema: z.ZodObject<{
5
5
  app: z.ZodOptional<z.ZodString>;
6
6
  window: z.ZodOptional<z.ZodEnum<{
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { readPercherTomlAppName } from "../app-name";
3
- import { PercherCoreError } from "../errors";
2
+ import { readPercherTomlAppName } from "../app-name.js";
3
+ import { PercherCoreError } from "../errors.js";
4
4
  export const appResourcesInputSchema = z.object({
5
5
  app: z.string().optional(),
6
6
  window: z.enum(["1h", "24h", "7d", "30d"]).optional(),
@@ -1,6 +1,6 @@
1
1
  import type { AppTopology } from "@percher/client";
2
2
  import { z } from "zod";
3
- import type { Context } from "../context";
3
+ import type { Context } from "../context.js";
4
4
  export declare const appTopologyInputSchema: z.ZodObject<{
5
5
  app: z.ZodOptional<z.ZodString>;
6
6
  }, z.core.$strip>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { readPercherTomlAppName } from "../app-name";
3
- import { PercherCoreError } from "../errors";
2
+ import { readPercherTomlAppName } from "../app-name.js";
3
+ import { PercherCoreError } from "../errors.js";
4
4
  export const appTopologyInputSchema = z.object({
5
5
  app: z.string().optional(),
6
6
  });
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ import type { Context } from "../context.js";
3
+ /**
4
+ * FUTURE_app-store-publishing-bridge D — emit the app-store starter artifacts
5
+ * from the terminal / an AI assistant, the CLI+MCP parity for the dashboard's
6
+ * "App store kit" panel (C2). Writes manifest.json, sw.js, capacitor.config.ts,
7
+ * and `.well-known/{assetlinks.json,apple-app-site-association}` templates into
8
+ * the project, and returns the Bubblewrap command + SW registration snippet to
9
+ * print. Pure local file emission — no network, no auth. Existing files are
10
+ * skipped unless `force`.
11
+ */
12
+ export declare const appstoreKitInputSchema: z.ZodObject<{
13
+ name: z.ZodOptional<z.ZodString>;
14
+ url: z.ZodOptional<z.ZodString>;
15
+ packageName: z.ZodOptional<z.ZodString>;
16
+ fingerprint: z.ZodOptional<z.ZodString>;
17
+ teamId: z.ZodOptional<z.ZodString>;
18
+ bundleId: z.ZodOptional<z.ZodString>;
19
+ force: z.ZodOptional<z.ZodBoolean>;
20
+ outDir: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ export type AppstoreKitInput = z.infer<typeof appstoreKitInputSchema>;
23
+ export interface AppstoreKitResult {
24
+ appName: string;
25
+ appUrl: string;
26
+ /** Project-relative paths actually written. */
27
+ written: string[];
28
+ /** Project-relative paths skipped because they exist and force was not set. */
29
+ skipped: string[];
30
+ /** The Bubblewrap init/build command, pointed at the app's manifest. */
31
+ bubblewrapCommand: string;
32
+ /** The one-line service-worker registration snippet for the app's entry. */
33
+ swRegistration: string;
34
+ }
35
+ export declare function appstoreKit(ctx: Context, input?: AppstoreKitInput): Promise<AppstoreKitResult>;
36
+ //# sourceMappingURL=appstore-kit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appstore-kit.d.ts","sourceRoot":"","sources":["../../src/commands/appstore-kit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;iBAiBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,GAAE,gBAAqB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA8D5B"}
@@ -0,0 +1,93 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
3
+ import { z } from "zod";
4
+ import { readPercherTomlAppName } from "../app-name.js";
5
+ import { appleAppSiteAssociation, assetlinksJson, bubblewrapCommand, capacitorConfig, manifestStarter, serviceWorkerStarter, swRegistrationSnippet, themeColorForToken, } from "../appstore-artifacts.js";
6
+ import { PercherCoreError } from "../errors.js";
7
+ /**
8
+ * FUTURE_app-store-publishing-bridge D — emit the app-store starter artifacts
9
+ * from the terminal / an AI assistant, the CLI+MCP parity for the dashboard's
10
+ * "App store kit" panel (C2). Writes manifest.json, sw.js, capacitor.config.ts,
11
+ * and `.well-known/{assetlinks.json,apple-app-site-association}` templates into
12
+ * the project, and returns the Bubblewrap command + SW registration snippet to
13
+ * print. Pure local file emission — no network, no auth. Existing files are
14
+ * skipped unless `force`.
15
+ */
16
+ export const appstoreKitInputSchema = z.object({
17
+ /** App name (defaults to percher.toml's [app].name, then the directory name). */
18
+ name: z.string().optional(),
19
+ /** App URL (defaults to https://<name>.percher.run). */
20
+ url: z.string().optional(),
21
+ /** Android package name for assetlinks.json (placeholder if omitted). */
22
+ packageName: z.string().optional(),
23
+ /** Signing-cert SHA-256 fingerprint for assetlinks.json (placeholder if omitted). */
24
+ fingerprint: z.string().optional(),
25
+ /** Apple Team ID for apple-app-site-association (placeholder if omitted). */
26
+ teamId: z.string().optional(),
27
+ /** Apple bundle ID for apple-app-site-association (placeholder if omitted). */
28
+ bundleId: z.string().optional(),
29
+ /** Overwrite files that already exist (default: skip them). */
30
+ force: z.boolean().optional(),
31
+ /** Output directory, relative to the project root (default: "."). */
32
+ outDir: z.string().optional(),
33
+ });
34
+ export async function appstoreKit(ctx, input = {}) {
35
+ const name = (input.name ?? readPercherTomlAppName(ctx.cwd) ?? basename(ctx.cwd) ?? "app").trim() || "app";
36
+ const url = input.url?.trim() || `https://${name}.percher.run`;
37
+ const themeHex = themeColorForToken(null);
38
+ const base = resolve(ctx.cwd, input.outDir ?? ".");
39
+ // The schema says outDir is project-relative and the tool writes "into the
40
+ // project" — reject an absolute path or a `..` escape so a stray --out can't
41
+ // create/overwrite files outside the project (especially with --force).
42
+ const baseRel = relative(ctx.cwd, base);
43
+ if (baseRel.startsWith("..") || isAbsolute(baseRel)) {
44
+ throw new PercherCoreError("Output directory must stay inside the project", {
45
+ code: "appstore-kit.bad-out-dir",
46
+ hint: "Pass a path inside the current project (e.g. --out public), not an absolute or parent path.",
47
+ });
48
+ }
49
+ // Posix-style relative paths for display; split on "/" to build the OS path.
50
+ const files = [
51
+ { rel: "manifest.json", content: manifestStarter({ name, themeColorHex: themeHex }) },
52
+ { rel: "sw.js", content: serviceWorkerStarter() },
53
+ { rel: "capacitor.config.ts", content: capacitorConfig({ name, url }) },
54
+ {
55
+ rel: ".well-known/assetlinks.json",
56
+ content: assetlinksJson({
57
+ packageName: input.packageName ?? "",
58
+ sha256Fingerprint: input.fingerprint ?? "",
59
+ }),
60
+ },
61
+ {
62
+ rel: ".well-known/apple-app-site-association",
63
+ content: appleAppSiteAssociation({
64
+ teamId: input.teamId ?? "",
65
+ bundleId: input.bundleId ?? "",
66
+ }),
67
+ },
68
+ ];
69
+ const written = [];
70
+ const skipped = [];
71
+ for (const f of files) {
72
+ const abs = join(base, ...f.rel.split("/"));
73
+ // Report the true project-relative path (includes outDir) so CLI/MCP output
74
+ // points at where the file actually landed, e.g. `public/manifest.json`.
75
+ const display = relative(ctx.cwd, abs).split(sep).join("/");
76
+ if (existsSync(abs) && !input.force) {
77
+ skipped.push(display);
78
+ continue;
79
+ }
80
+ mkdirSync(dirname(abs), { recursive: true });
81
+ writeFileSync(abs, `${f.content}\n`, "utf8");
82
+ written.push(display);
83
+ }
84
+ return {
85
+ appName: name,
86
+ appUrl: url,
87
+ written,
88
+ skipped,
89
+ bubblewrapCommand: bubblewrapCommand({ url }),
90
+ swRegistration: swRegistrationSnippet(),
91
+ };
92
+ }
93
+ //# sourceMappingURL=appstore-kit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appstore-kit.js","sourceRoot":"","sources":["../../src/commands/appstore-kit.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const billingUpgradeInputSchema: z.ZodObject<{
4
4
  plan: z.ZodEnum<{
5
5
  starter: "starter";
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { PercherCoreError } from "../errors";
2
+ import { PercherCoreError } from "../errors.js";
3
3
  export const billingUpgradeInputSchema = z.object({
4
4
  plan: z.enum(["starter", "maker", "pro"]),
5
5
  });
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const cacheResetInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  }, z.core.$strip>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { readPercherTomlAppName } from "../app-name";
3
- import { PercherCoreError } from "../errors";
2
+ import { readPercherTomlAppName } from "../app-name.js";
3
+ import { PercherCoreError } from "../errors.js";
4
4
  export const cacheResetInputSchema = z.object({
5
5
  app: z.string().optional(),
6
6
  });
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const capabilitiesInputSchema: z.ZodObject<{}, z.core.$strip>;
4
4
  export type CapabilitiesInput = z.infer<typeof capabilitiesInputSchema>;
5
5
  /** Discovery: platform features + account plan, limits and usage. */
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const claimInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  claimToken: z.ZodOptional<z.ZodString>;
@@ -1,6 +1,6 @@
1
1
  import { clearAnonClaim, getAnonClaim, listAnonClaimApps } from "@percher/client";
2
2
  import { z } from "zod";
3
- import { readPercherTomlAppName } from "../app-name";
3
+ import { readPercherTomlAppName } from "../app-name.js";
4
4
  export const claimInputSchema = z.object({
5
5
  app: z
6
6
  .string()
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
3
- import { type ScaffoldResult } from "../templates";
2
+ import type { Context } from "../context.js";
3
+ import { type ScaffoldResult } from "../templates.js";
4
4
  export declare const createInputSchema: z.ZodObject<{
5
5
  name: z.ZodString;
6
6
  template: z.ZodString;
@@ -1,8 +1,8 @@
1
1
  import { join, resolve } from "node:path";
2
2
  import { APP_NAME_RE } from "@percher/shared";
3
3
  import { z } from "zod";
4
- import { PercherCoreError } from "../errors";
5
- import { listTemplates, scaffoldTemplate } from "../templates";
4
+ import { PercherCoreError } from "../errors.js";
5
+ import { listTemplates, scaffoldTemplate } from "../templates.js";
6
6
  export const createInputSchema = z.object({
7
7
  name: z
8
8
  .string()
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const dashboardInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  tab: z.ZodOptional<z.ZodString>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { readPercherTomlAppName } from "../app-name";
3
- import { PercherCoreError } from "../errors";
2
+ import { readPercherTomlAppName } from "../app-name.js";
3
+ import { PercherCoreError } from "../errors.js";
4
4
  export const dashboardInputSchema = z.object({
5
5
  app: z.string().optional(),
6
6
  tab: z.string().optional(),
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const dataExportInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  out: z.ZodOptional<z.ZodString>;
@@ -1,8 +1,8 @@
1
1
  import { resolve } from "node:path";
2
2
  import { z } from "zod";
3
- import { readPercherTomlAppName } from "../app-name";
4
- import { PercherCoreError } from "../errors";
5
- import { writeResponseToFile } from "../stream-utils";
3
+ import { readPercherTomlAppName } from "../app-name.js";
4
+ import { PercherCoreError } from "../errors.js";
5
+ import { writeResponseToFile } from "../stream-utils.js";
6
6
  export const dataExportInputSchema = z.object({
7
7
  app: z.string().optional().describe("App name or id. Defaults to the app in percher.toml."),
8
8
  out: z
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const dataInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  json: z.ZodOptional<z.ZodBoolean>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { readPercherTomlAppName } from "../app-name";
3
- import { PercherCoreError } from "../errors";
2
+ import { readPercherTomlAppName } from "../app-name.js";
3
+ import { PercherCoreError } from "../errors.js";
4
4
  export const dataInputSchema = z.object({
5
5
  app: z.string().optional(),
6
6
  json: z.boolean().optional(),
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const deleteInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  confirm: z.ZodBoolean;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { readPercherTomlAppName } from "../app-name";
3
- import { PercherCoreError } from "../errors";
2
+ import { readPercherTomlAppName } from "../app-name.js";
3
+ import { PercherCoreError } from "../errors.js";
4
4
  export const deleteInputSchema = z.object({
5
5
  app: z.string().optional().describe("App name to delete (defaults to percher.toml app name)"),
6
6
  confirm: z
@@ -1,6 +1,6 @@
1
1
  import { type Deployment } from "@percher/client";
2
2
  import { z } from "zod";
3
- import type { Context } from "../context";
3
+ import type { Context } from "../context.js";
4
4
  export declare const deploysListInputSchema: z.ZodObject<{
5
5
  app: z.ZodOptional<z.ZodString>;
6
6
  limit: z.ZodOptional<z.ZodNumber>;
@@ -1,7 +1,7 @@
1
1
  import { PercherApiError } from "@percher/client";
2
2
  import { z } from "zod";
3
- import { readPercherTomlAppName } from "../app-name";
4
- import { PercherCoreError } from "../errors";
3
+ import { readPercherTomlAppName } from "../app-name.js";
4
+ import { PercherCoreError } from "../errors.js";
5
5
  export const deploysListInputSchema = z.object({
6
6
  app: z.string().optional(),
7
7
  limit: z.number().int().positive().max(100).optional(),
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Context } from "../context";
2
+ import type { Context } from "../context.js";
3
3
  export declare const devInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
5
  }, z.core.$strip>;