From 72bbc4fc68b2b323b6a9572d5f7459c2cbfac95e Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Mon, 23 Mar 2026 06:34:05 +0000 Subject: [PATCH] feat(create): persist telegram tma link in project config --- packages/app/src/core/bootstrap.ts | 2 ++ packages/app/src/shell/bootstrap.ts | 2 ++ packages/app/tests/bootstrap.test.ts | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/app/src/core/bootstrap.ts b/packages/app/src/core/bootstrap.ts index f46349e..aeedfab 100644 --- a/packages/app/src/core/bootstrap.ts +++ b/packages/app/src/core/bootstrap.ts @@ -29,6 +29,7 @@ export interface BootstrapClaim { readonly projectSlug: string readonly controlPlaneUrl: string readonly previewOrigin: string + readonly telegramMiniAppUrl?: string readonly deviceSecret: string readonly mcpApiKey: string readonly localPort: number @@ -193,6 +194,7 @@ export const buildGeneratedFiles = ( projectName: context.projectName, controlPlaneUrl: claim.controlPlaneUrl, previewOrigin: claim.previewOrigin, + ...(claim.telegramMiniAppUrl ? { telegramMiniAppUrl: claim.telegramMiniAppUrl } : {}), previewPath, previewHost, localPort: claim.localPort, diff --git a/packages/app/src/shell/bootstrap.ts b/packages/app/src/shell/bootstrap.ts index 1162dfd..ae75e60 100644 --- a/packages/app/src/shell/bootstrap.ts +++ b/packages/app/src/shell/bootstrap.ts @@ -395,6 +395,7 @@ const parseClaimResponse = ( readString(input, "launchUrl") ?? readString(input, "staticAssetsBaseUrl") ?? readString(input, "url") + const telegramMiniAppUrl = readString(input, "telegramMiniAppUrl") const deviceSecret = readString(input, "deviceSecret") ?? readString(input, "deviceToken") ?? @@ -422,6 +423,7 @@ const parseClaimResponse = ( projectSlug, controlPlaneUrl, previewOrigin, + ...(telegramMiniAppUrl ? { telegramMiniAppUrl } : {}), deviceSecret, mcpApiKey, localPort, diff --git a/packages/app/tests/bootstrap.test.ts b/packages/app/tests/bootstrap.test.ts index 0ab00e5..527bc44 100644 --- a/packages/app/tests/bootstrap.test.ts +++ b/packages/app/tests/bootstrap.test.ts @@ -96,6 +96,7 @@ describe("buildGeneratedFiles", () => { projectSlug: "demo-project", controlPlaneUrl: "https://api.example.com", previewOrigin: "https://api.example.com/preview/demo-project", + telegramMiniAppUrl: "https://t.me/TMASpawnerBot/tma?startapp=demo-project", deviceSecret: "secret_123", mcpApiKey: "mcp_key_123", localPort: 3000, @@ -108,6 +109,7 @@ describe("buildGeneratedFiles", () => { expect(fileMap.has(".mcp.json")).toBe(true) expect(fileMap.get("spawndock.config.json")).toContain("\"mcpServerUrl\": \"https://api.example.com/mcp/sse\"") expect(fileMap.get("spawndock.config.json")).toContain("\"mcpApiKey\": \"mcp_key_123\"") + expect(fileMap.get("spawndock.config.json")).toContain("\"telegramMiniAppUrl\": \"https://t.me/TMASpawnerBot/tma?startapp=demo-project\"") expect(fileMap.get("opencode.json")).toContain("./spawndock/mcp.mjs") expect(fileMap.get(".mcp.json")).toContain("./spawndock/mcp.mjs") expect(fileMap.get("public/tonconnect-manifest.json")).toContain("\"url\": \"https://api.example.com/preview/demo-project\"")