decocms 0.16.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 (111) hide show
  1. package/README.md +95 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +373 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/add/add.d.ts +7 -0
  7. package/dist/commands/add/add.d.ts.map +1 -0
  8. package/dist/commands/add/add.js +90 -0
  9. package/dist/commands/add/add.js.map +1 -0
  10. package/dist/commands/auth/login.d.ts +2 -0
  11. package/dist/commands/auth/login.d.ts.map +1 -0
  12. package/dist/commands/auth/login.js +125 -0
  13. package/dist/commands/auth/login.js.map +1 -0
  14. package/dist/commands/auth/whoami.d.ts +2 -0
  15. package/dist/commands/auth/whoami.d.ts.map +1 -0
  16. package/dist/commands/auth/whoami.js +51 -0
  17. package/dist/commands/auth/whoami.js.map +1 -0
  18. package/dist/commands/config/configure.d.ts +2 -0
  19. package/dist/commands/config/configure.d.ts.map +1 -0
  20. package/dist/commands/config/configure.js +51 -0
  21. package/dist/commands/config/configure.js.map +1 -0
  22. package/dist/commands/create/create.d.ts +3 -0
  23. package/dist/commands/create/create.d.ts.map +1 -0
  24. package/dist/commands/create/create.js +238 -0
  25. package/dist/commands/create/create.js.map +1 -0
  26. package/dist/commands/dev/dev.d.ts +8 -0
  27. package/dist/commands/dev/dev.d.ts.map +1 -0
  28. package/dist/commands/dev/dev.js +64 -0
  29. package/dist/commands/dev/dev.js.map +1 -0
  30. package/dist/commands/dev/link.d.ts +8 -0
  31. package/dist/commands/dev/link.d.ts.map +1 -0
  32. package/dist/commands/dev/link.js +124 -0
  33. package/dist/commands/dev/link.js.map +1 -0
  34. package/dist/commands/gen/gen.d.ts +11 -0
  35. package/dist/commands/gen/gen.d.ts.map +1 -0
  36. package/dist/commands/gen/gen.js +341 -0
  37. package/dist/commands/gen/gen.js.map +1 -0
  38. package/dist/commands/hosting/deploy.d.ts +19 -0
  39. package/dist/commands/hosting/deploy.d.ts.map +1 -0
  40. package/dist/commands/hosting/deploy.js +194 -0
  41. package/dist/commands/hosting/deploy.js.map +1 -0
  42. package/dist/commands/hosting/list.d.ts +6 -0
  43. package/dist/commands/hosting/list.d.ts.map +1 -0
  44. package/dist/commands/hosting/list.js +26 -0
  45. package/dist/commands/hosting/list.js.map +1 -0
  46. package/dist/commands/hosting/promote.d.ts +11 -0
  47. package/dist/commands/hosting/promote.d.ts.map +1 -0
  48. package/dist/commands/hosting/promote.js +153 -0
  49. package/dist/commands/hosting/promote.js.map +1 -0
  50. package/dist/commands/update/update.d.ts +4 -0
  51. package/dist/commands/update/update.d.ts.map +1 -0
  52. package/dist/commands/update/update.js +242 -0
  53. package/dist/commands/update/update.js.map +1 -0
  54. package/dist/commands/update/upgrade.d.ts +4 -0
  55. package/dist/commands/update/upgrade.d.ts.map +1 -0
  56. package/dist/commands/update/upgrade.js +157 -0
  57. package/dist/commands/update/upgrade.js.map +1 -0
  58. package/dist/lib/config.d.ts +309 -0
  59. package/dist/lib/config.d.ts.map +1 -0
  60. package/dist/lib/config.js +262 -0
  61. package/dist/lib/config.js.map +1 -0
  62. package/dist/lib/constants.d.ts +10 -0
  63. package/dist/lib/constants.d.ts.map +1 -0
  64. package/dist/lib/constants.js +16 -0
  65. package/dist/lib/constants.js.map +1 -0
  66. package/dist/lib/fs.d.ts +40 -0
  67. package/dist/lib/fs.d.ts.map +1 -0
  68. package/dist/lib/fs.js +162 -0
  69. package/dist/lib/fs.js.map +1 -0
  70. package/dist/lib/mcp.d.ts +34 -0
  71. package/dist/lib/mcp.d.ts.map +1 -0
  72. package/dist/lib/mcp.js +19 -0
  73. package/dist/lib/mcp.js.map +1 -0
  74. package/dist/lib/parse-binding-tool.d.ts +12 -0
  75. package/dist/lib/parse-binding-tool.d.ts.map +1 -0
  76. package/dist/lib/parse-binding-tool.js +15 -0
  77. package/dist/lib/parse-binding-tool.js.map +1 -0
  78. package/dist/lib/prompt-ide-setup.d.ts +27 -0
  79. package/dist/lib/prompt-ide-setup.d.ts.map +1 -0
  80. package/dist/lib/prompt-ide-setup.js +158 -0
  81. package/dist/lib/prompt-ide-setup.js.map +1 -0
  82. package/dist/lib/prompt-integrations.d.ts +7 -0
  83. package/dist/lib/prompt-integrations.d.ts.map +1 -0
  84. package/dist/lib/prompt-integrations.js +84 -0
  85. package/dist/lib/prompt-integrations.js.map +1 -0
  86. package/dist/lib/prompt-workspace.d.ts +2 -0
  87. package/dist/lib/prompt-workspace.d.ts.map +1 -0
  88. package/dist/lib/prompt-workspace.js +93 -0
  89. package/dist/lib/prompt-workspace.js.map +1 -0
  90. package/dist/lib/runtime.d.ts +5 -0
  91. package/dist/lib/runtime.d.ts.map +1 -0
  92. package/dist/lib/runtime.js +15 -0
  93. package/dist/lib/runtime.js.map +1 -0
  94. package/dist/lib/session.d.ts +39 -0
  95. package/dist/lib/session.d.ts.map +1 -0
  96. package/dist/lib/session.js +124 -0
  97. package/dist/lib/session.js.map +1 -0
  98. package/dist/lib/slugify.d.ts +13 -0
  99. package/dist/lib/slugify.d.ts.map +1 -0
  100. package/dist/lib/slugify.js +27 -0
  101. package/dist/lib/slugify.js.map +1 -0
  102. package/dist/lib/supabase.d.ts +5 -0
  103. package/dist/lib/supabase.d.ts.map +1 -0
  104. package/dist/lib/supabase.js +19 -0
  105. package/dist/lib/supabase.js.map +1 -0
  106. package/dist/lib/wrangler.d.ts +9 -0
  107. package/dist/lib/wrangler.d.ts.map +1 -0
  108. package/dist/lib/wrangler.js +118 -0
  109. package/dist/lib/wrangler.js.map +1 -0
  110. package/dist/rules/deco-chat.mdc +902 -0
  111. package/package.json +79 -0
@@ -0,0 +1,125 @@
1
+ import { createServer } from "http";
2
+ import { URL } from "url";
3
+ import { spawn } from "child_process";
4
+ import { AUTH_PORT_CLI, DECO_CHAT_LOGIN } from "../../lib/constants.js";
5
+ import { saveSession } from "../../lib/session.js";
6
+ import { createClient } from "../../lib/supabase.js";
7
+ import process from "node:process";
8
+ export const loginCommand = () => {
9
+ return new Promise((resolve, reject) => {
10
+ let timeout;
11
+ const server = createServer(async (req, res) => {
12
+ const url = new URL(req.url, `http://localhost:${AUTH_PORT_CLI}`);
13
+ // Convert IncomingMessage headers to Headers object
14
+ const headers = new Headers();
15
+ for (const [key, value] of Object.entries(req.headers)) {
16
+ if (value) {
17
+ headers.set(key, Array.isArray(value) ? value.join(", ") : value);
18
+ }
19
+ }
20
+ const { client, responseHeaders } = createClient(headers);
21
+ if (url.pathname === "/login/oauth") {
22
+ const credentials = {
23
+ provider: (url.searchParams.get("provider") ??
24
+ "google"),
25
+ options: { redirectTo: new URL("/auth/callback/oauth", url).href },
26
+ };
27
+ const { data } = await client.auth.signInWithOAuth(credentials);
28
+ if (data.url) {
29
+ // Convert Headers to plain object
30
+ const responseHeadersObj = {};
31
+ responseHeaders.forEach((value, key) => {
32
+ responseHeadersObj[key] = value;
33
+ });
34
+ res.writeHead(302, {
35
+ Location: data.url,
36
+ ...responseHeadersObj,
37
+ });
38
+ res.end();
39
+ return;
40
+ }
41
+ res.writeHead(500);
42
+ res.end("Error redirecting to OAuth provider");
43
+ return;
44
+ }
45
+ if (url.pathname === "/auth/callback/oauth") {
46
+ const code = url.searchParams.get("code");
47
+ if (!code) {
48
+ res.writeHead(400);
49
+ res.end("No code found");
50
+ return;
51
+ }
52
+ const { data, error } = await client.auth.exchangeCodeForSession(code);
53
+ if (error || !data?.session) {
54
+ res.writeHead(400);
55
+ res.end(error?.message ?? "Unknown error");
56
+ return;
57
+ }
58
+ // Save session data securely
59
+ try {
60
+ await saveSession(data);
61
+ }
62
+ catch (e) {
63
+ console.error("Failed to save session data:", e);
64
+ }
65
+ // Clear the timeout since login was successful
66
+ if (timeout) {
67
+ clearTimeout(timeout);
68
+ }
69
+ res.writeHead(200, { "Content-Type": "text/html" });
70
+ res.end(`<!DOCTYPE html>
71
+ <html>
72
+ <head>
73
+ <title>Authentication Complete</title>
74
+ </head>
75
+ <body>
76
+ <h1>Authentication Complete</h1>
77
+ <p>You can close this window now.</p>
78
+ <script>
79
+ window.close();
80
+ </script>
81
+ </body>
82
+ </html>`);
83
+ // Close server after successful authentication
84
+ server.close(() => resolve());
85
+ return;
86
+ }
87
+ res.writeHead(404);
88
+ res.end("Not found");
89
+ });
90
+ server.listen(AUTH_PORT_CLI, () => {
91
+ // Try to open browser with OS-appropriate command
92
+ const browserCommands = {
93
+ linux: "xdg-open",
94
+ darwin: "open",
95
+ win32: "start",
96
+ freebsd: "xdg-open",
97
+ openbsd: "xdg-open",
98
+ sunos: "xdg-open",
99
+ aix: "open",
100
+ };
101
+ const browser = process.env.BROWSER ?? browserCommands[process.platform] ?? "open";
102
+ console.log("šŸ” Starting authentication process...");
103
+ console.log("Opening browser for login...\n");
104
+ // Windows requires using cmd.exe because 'start' is a built-in command
105
+ const command = process.platform === "win32" && browser === "start"
106
+ ? spawn("cmd", ["/c", "start", DECO_CHAT_LOGIN], { detached: true })
107
+ : spawn(browser, [DECO_CHAT_LOGIN], { detached: true });
108
+ command.unref(); // Don't keep process alive
109
+ // Handle potential browser opening failures
110
+ command.on("error", () => {
111
+ console.log("āš ļø Could not automatically open browser");
112
+ });
113
+ // Always show the fallback URL
114
+ timeout = setTimeout(() => {
115
+ console.log("šŸ“‹ If your browser didn't open automatically, please click the following link:");
116
+ console.log(`\n ${DECO_CHAT_LOGIN}\n`);
117
+ console.log("Waiting for authentication to complete...\n");
118
+ }, 1000); // Small delay to let browser opening attempt complete
119
+ });
120
+ server.on("error", (err) => {
121
+ reject(err);
122
+ });
123
+ });
124
+ };
125
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmC,MAAM,MAAM,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,OAAuB,CAAC;QAC5B,MAAM,MAAM,GAAG,YAAY,CACzB,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;YAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAI,EAAE,oBAAoB,aAAa,EAAE,CAAC,CAAC;YAEnE,oDAAoD;YACpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YAE1D,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG;oBAClB,QAAQ,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;wBACzC,QAAQ,CAAa;oBACvB,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;iBACnE,CAAC;gBAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAEhE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,kCAAkC;oBAClC,MAAM,kBAAkB,GAA2B,EAAE,CAAC;oBACtD,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;wBACrC,kBAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBAClC,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;wBACjB,QAAQ,EAAE,IAAI,CAAC,GAAG;wBAClB,GAAG,kBAAkB;qBACtB,CAAC,CAAC;oBACH,GAAG,CAAC,GAAG,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,sBAAsB,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE1C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GACnB,MAAM,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAEjD,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;oBAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC;oBAC3C,OAAO;gBACT,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;gBAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;gBACpD,GAAG,CAAC,GAAG,CAAC;;;;;;;;;;;;gBAYF,CAAC,CAAC;gBAER,+CAA+C;gBAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,kDAAkD;YAClD,MAAM,eAAe,GAA2B;gBAC9C,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,MAAM;aACZ,CAAC;YAEF,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;YAErE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAE9C,uEAAuE;YACvE,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO;gBACjD,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACpE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,2BAA2B;YAE5C,4CAA4C;YAC5C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,+BAA+B;YAC/B,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,OAAO,CAAC,GAAG,CACT,gFAAgF,CACjF,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAe,IAAI,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC7D,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sDAAsD;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const whoamiCommand: () => Promise<void>;
2
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/whoami.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,qBAiDzB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { readSession } from "../../lib/session.js";
2
+ import { createClient } from "../../lib/supabase.js";
3
+ export const whoamiCommand = async () => {
4
+ try {
5
+ const session = await readSession();
6
+ if (!session || !session.access_token || !session.refresh_token) {
7
+ console.log("āŒ Not logged in. Run `deco login` to authenticate.\n");
8
+ return;
9
+ }
10
+ const { client: supabase } = createClient();
11
+ // Set the session so we can get the user
12
+ const { error: setSessionError } = await supabase.auth.setSession({
13
+ access_token: session.access_token,
14
+ refresh_token: session.refresh_token,
15
+ });
16
+ if (setSessionError) {
17
+ console.log("āŒ Session expired or invalid. Please log in again.\n");
18
+ return;
19
+ }
20
+ const { data, error } = await supabase.auth.getUser();
21
+ if (error || !data?.user) {
22
+ console.log("āŒ Could not retrieve user info. Please log in again.\n");
23
+ return;
24
+ }
25
+ const user = data.user;
26
+ // Pretty print user info
27
+ console.log("šŸ‘¤ User Info:");
28
+ console.log(` šŸ’» ID: ${user.id}`);
29
+ console.log(` šŸ“§ Email: ${user.email ?? "-"}`);
30
+ if (user.user_metadata?.full_name) {
31
+ console.log(` šŸ“š Name: ${user.user_metadata.full_name}`);
32
+ }
33
+ if (user.user_metadata?.avatar_url) {
34
+ console.log(` šŸ–¼ļø Avatar: ${user.user_metadata.avatar_url}`);
35
+ }
36
+ console.log("");
37
+ if (session.workspace) {
38
+ console.log(`šŸ¢ Current Workspace: \u001b[1m${session.workspace}\u001b[0m\n`);
39
+ }
40
+ else {
41
+ console.log("āš ļø No workspace selected.\n");
42
+ }
43
+ }
44
+ catch (err) {
45
+ const message = typeof err === "object" && err && "message" in err
46
+ ? err.message
47
+ : String(err);
48
+ console.error("āŒ Error reading session:", message);
49
+ }
50
+ };
51
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/commands/auth/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;QAC5C,yCAAyC;QACzC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAChE,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACtD,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CACT,mCAAmC,OAAO,CAAC,SAAS,aAAa,CAClE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GACX,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG;YAChD,CAAC,CAAE,GAA2B,CAAC,OAAO;YACtC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function configureCommand(local?: boolean): Promise<void>;
2
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../src/commands/config/configure.ts"],"names":[],"mappings":"AAeA,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,iBAqDrD"}
@@ -0,0 +1,51 @@
1
+ import inquirer from "inquirer";
2
+ import { getConfig, readWranglerConfig, writeWranglerConfig, } from "../../lib/config.js";
3
+ import { promptWorkspace } from "../../lib/prompt-workspace.js";
4
+ import { promptIntegrations } from "../../lib/prompt-integrations.js";
5
+ import { promptIDESetup, writeIDEConfig } from "../../lib/prompt-ide-setup.js";
6
+ import { genEnv } from "../gen/gen.js";
7
+ import { promises as fs } from "fs";
8
+ import { join } from "path";
9
+ import process from "node:process";
10
+ export async function configureCommand(local) {
11
+ const currentConfig = await getConfig({ inlineOptions: { local } }).catch(() => ({}));
12
+ const wranglerConfig = await readWranglerConfig();
13
+ const defaultApp = typeof wranglerConfig.name === "string" ? wranglerConfig.name : "my-app";
14
+ const { app } = await inquirer.prompt([
15
+ {
16
+ type: "input",
17
+ name: "app",
18
+ message: "Enter app name:",
19
+ default: defaultApp,
20
+ },
21
+ ]);
22
+ // Use the proper workspace prompt
23
+ const workspace = await promptWorkspace(local, currentConfig.workspace);
24
+ // Add MCP configuration
25
+ const mcpConfig = await promptIDESetup({ workspace, app });
26
+ // Add integrations
27
+ const bindings = await promptIntegrations(local, workspace);
28
+ // Generate environment variables file
29
+ const envContent = await genEnv({ workspace, local, bindings });
30
+ // Write IDE config
31
+ if (mcpConfig) {
32
+ await writeIDEConfig(mcpConfig);
33
+ }
34
+ // Write both app name (top-level) and deco config in one go
35
+ await writeWranglerConfig({
36
+ name: app,
37
+ deco: {
38
+ ...wranglerConfig.deco,
39
+ workspace,
40
+ bindings: [...bindings, ...(wranglerConfig.deco?.bindings ?? [])],
41
+ },
42
+ });
43
+ // Write environment types file
44
+ const outputPath = join(process.cwd(), "deco.gen.ts");
45
+ await fs.writeFile(outputPath, envContent);
46
+ console.log(`āœ… Environment types written to: ${outputPath}`);
47
+ console.log(`āœ… Configuration saved:`);
48
+ console.log(` App: ${app}`);
49
+ console.log(` Workspace: ${workspace}`);
50
+ }
51
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/commands/config/configure.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAEL,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe;IACpD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CACvE,GAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAC5B,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAClD,MAAM,UAAU,GACd,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE3E,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,UAAU;SACpB;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAExE,wBAAwB;IACxB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3D,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAE5D,sCAAsC;IACtC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEhE,mBAAmB;IACnB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,4DAA4D;IAC5D,MAAM,mBAAmB,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,IAAI,EAAE;YACJ,GAAG,cAAc,CAAC,IAAI;YACtB,SAAS;YACT,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;SAClE;KACF,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Config } from "../../lib/config.js";
2
+ export declare function createCommand(projectName?: string, config?: Partial<Config>): Promise<void>;
3
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/create/create.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,qBAAqB,CAAC;AAsM7B,wBAAsB,aAAa,CACjC,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,GAAE,OAAO,CAAC,MAAM,CAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwHf"}
@@ -0,0 +1,238 @@
1
+ import inquirer from "inquirer";
2
+ import { promises as fs } from "fs";
3
+ import { spawn } from "child_process";
4
+ import { dirname, join } from "path";
5
+ import { fileURLToPath } from "url";
6
+ import { copy, ensureDir } from "../../lib/fs.js";
7
+ import { readWranglerConfig, writeWranglerConfig, } from "../../lib/config.js";
8
+ import { slugify } from "../../lib/slugify.js";
9
+ import { promptWorkspace } from "../../lib/prompt-workspace.js";
10
+ import { genEnv } from "../gen/gen.js";
11
+ import { promptIDESetup, writeIDEConfig } from "../../lib/prompt-ide-setup.js";
12
+ import process from "node:process";
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+ const DEFAULT_TEMPLATE = {
16
+ name: "Deco MCP app",
17
+ description: "A Deco MCP app",
18
+ repo: "deco-cx/deco-create",
19
+ branch: "main",
20
+ wranglerRoot: "server",
21
+ pathsToIgnore: [".cursorindexingignore", ".specstory", "plans"],
22
+ };
23
+ function runCommand(command, args, cwd) {
24
+ return new Promise((resolve) => {
25
+ const process = spawn(command, args, {
26
+ cwd,
27
+ stdio: "pipe",
28
+ });
29
+ process.on("close", (code) => {
30
+ resolve(code === 0);
31
+ });
32
+ process.on("error", () => {
33
+ resolve(false);
34
+ });
35
+ });
36
+ }
37
+ const PATHS_TO_IGNORE_ALWAYS = [".git"];
38
+ async function downloadTemplate(template, targetDir) {
39
+ // For the base template, use the local copy
40
+ if (template.name === "base") {
41
+ const templatePath = join(__dirname, "../../../template/base");
42
+ await ensureDir(targetDir);
43
+ await copy(templatePath, targetDir, { overwrite: true });
44
+ console.log(`āœ… Template '${template.name}' copied successfully!`);
45
+ return;
46
+ }
47
+ // For remote templates, use git clone
48
+ const tempDir = join(process.cwd(), `.temp-${Date.now()}`);
49
+ try {
50
+ const success = await runCommand("git", [
51
+ "clone",
52
+ "--depth",
53
+ "1",
54
+ "--branch",
55
+ template.branch || "main",
56
+ `https://github.com/${template.repo}.git`,
57
+ tempDir,
58
+ ]);
59
+ if (!success) {
60
+ throw new Error(`Failed to clone template repository: ${template.repo}`);
61
+ }
62
+ const pathsToIgnore = [
63
+ ...(template.pathsToIgnore || []),
64
+ ...PATHS_TO_IGNORE_ALWAYS,
65
+ ];
66
+ for (const path of pathsToIgnore) {
67
+ const pathToRemove = join(tempDir, path);
68
+ const isDirectory = await fs
69
+ .stat(pathToRemove)
70
+ .then((stat) => stat.isDirectory());
71
+ await fs
72
+ .rm(pathToRemove, isDirectory ? { recursive: true, force: true } : { force: true })
73
+ .catch(() => {
74
+ console.warn(`Failed to remove ${path} from the original template: ${pathToRemove}`);
75
+ });
76
+ }
77
+ const templatePath = join(tempDir, template.path || "");
78
+ try {
79
+ await fs.access(templatePath);
80
+ }
81
+ catch {
82
+ throw new Error(`Template '${template.name}' not found in repository`);
83
+ }
84
+ await ensureDir(targetDir);
85
+ await copy(templatePath, targetDir, { overwrite: true });
86
+ console.log(`āœ… Template '${template.name}' downloaded successfully!`);
87
+ }
88
+ finally {
89
+ await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
90
+ }
91
+ }
92
+ async function customizeTemplate({ targetDir, projectName, workspace, wranglerRoot, }) {
93
+ const packageJsonPath = join(targetDir, "package.json");
94
+ try {
95
+ const packageJsonContent = await fs.readFile(packageJsonPath, "utf-8");
96
+ const packageJson = JSON.parse(packageJsonContent);
97
+ packageJson.name = projectName;
98
+ await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
99
+ }
100
+ catch (error) {
101
+ console.warn("āš ļø Could not customize package.json:", error instanceof Error ? error.message : String(error));
102
+ }
103
+ // Write config file with project name and workspace
104
+ if (workspace) {
105
+ try {
106
+ // Read current config from target directory
107
+ const currentConfig = await readWranglerConfig(wranglerRoot || targetDir);
108
+ // For now, use empty bindings - we can enhance this later with prompt integrations
109
+ const bindings = [];
110
+ // Merge with new project name and workspace - preserve all existing config
111
+ const newConfig = {
112
+ ...currentConfig,
113
+ name: projectName,
114
+ scope: workspace,
115
+ deco: {
116
+ ...currentConfig.deco,
117
+ workspace,
118
+ bindings,
119
+ },
120
+ };
121
+ // Write the new config file
122
+ await writeWranglerConfig(newConfig, wranglerRoot || targetDir);
123
+ // Generate environment variables file
124
+ const envContent = await genEnv({
125
+ workspace: workspace,
126
+ local: false,
127
+ bindings: newConfig.deco.bindings || [],
128
+ });
129
+ const outputPath = join(wranglerRoot || targetDir, "deco.gen.ts");
130
+ await fs.writeFile(outputPath, envContent);
131
+ console.log(`āœ… Environment types written to: ${outputPath}`);
132
+ }
133
+ catch (error) {
134
+ console.warn("āš ļø Could not update config file:", error instanceof Error ? error.message : String(error));
135
+ }
136
+ }
137
+ }
138
+ export async function createCommand(projectName, config = {}) {
139
+ try {
140
+ const selectedTemplate = DEFAULT_TEMPLATE;
141
+ const finalProjectName = slugify(projectName ||
142
+ (await inquirer.prompt([
143
+ {
144
+ type: "input",
145
+ name: "projectName",
146
+ message: "Enter project name:",
147
+ validate: (value) => {
148
+ if (!value.trim()) {
149
+ return "Project name cannot be empty";
150
+ }
151
+ if (!/^[a-z0-9-]+$/.test(value)) {
152
+ return "Project name can only contain lowercase letters, numbers, and hyphens";
153
+ }
154
+ return true;
155
+ },
156
+ },
157
+ ])).projectName);
158
+ // Prompt user to select workspace
159
+ let workspace = config?.workspace;
160
+ try {
161
+ workspace = await promptWorkspace(config?.local, workspace);
162
+ console.log(`šŸ“ Selected workspace: ${workspace}`);
163
+ }
164
+ catch (error) {
165
+ console.error(error);
166
+ console.warn("āš ļø Could not select workspace. Please run 'deco login' to authenticate for a better experience.");
167
+ // Continue without workspace
168
+ }
169
+ const targetDir = join(process.cwd(), finalProjectName);
170
+ try {
171
+ await fs.access(targetDir);
172
+ const { overwrite } = await inquirer.prompt([
173
+ {
174
+ type: "list",
175
+ name: "overwrite",
176
+ message: `Directory '${finalProjectName}' already exists. Overwrite?`,
177
+ choices: ["No", "Yes"],
178
+ },
179
+ ]);
180
+ if (overwrite === "No") {
181
+ console.log("āŒ Project creation cancelled.");
182
+ return;
183
+ }
184
+ await fs.rm(targetDir, { recursive: true });
185
+ }
186
+ catch {
187
+ // Directory doesn't exist, that's fine
188
+ }
189
+ const wranglerRoot = join(targetDir, selectedTemplate.wranglerRoot || "");
190
+ const { initGit } = await inquirer.prompt([
191
+ {
192
+ type: "list",
193
+ name: "initGit",
194
+ message: "Initialize a git repository?",
195
+ choices: ["No", "Yes"],
196
+ },
197
+ ]);
198
+ // Prompt user to install MCP configuration for IDE
199
+ const mcpResult = workspace
200
+ ? await promptIDESetup({ workspace, app: finalProjectName }, targetDir)
201
+ : null;
202
+ console.log(`šŸ“¦ Downloading template '${selectedTemplate.name}'...`);
203
+ await downloadTemplate(selectedTemplate, targetDir);
204
+ if (mcpResult) {
205
+ await writeIDEConfig(mcpResult);
206
+ }
207
+ await customizeTemplate({
208
+ targetDir,
209
+ projectName: finalProjectName,
210
+ workspace,
211
+ wranglerRoot,
212
+ });
213
+ if (initGit === "Yes") {
214
+ try {
215
+ const success = await runCommand("git", ["init"], targetDir);
216
+ if (success) {
217
+ console.log(`āœ… Git repository initialized in '${finalProjectName}'`);
218
+ }
219
+ else {
220
+ console.warn("āš ļø Failed to initialize git repository");
221
+ }
222
+ }
223
+ catch (error) {
224
+ console.warn("āš ļø Could not initialize git repository:", error instanceof Error ? error.message : String(error));
225
+ }
226
+ }
227
+ console.log(`\nšŸŽ‰ Project '${finalProjectName}' created successfully!`);
228
+ console.log(`\nNext steps:`);
229
+ console.log(` cd ${finalProjectName}`);
230
+ console.log(` npm install`);
231
+ console.log(` npm run dev`);
232
+ }
233
+ catch (error) {
234
+ console.error("āŒ Failed to create project:", error instanceof Error ? error.message : String(error));
235
+ process.exit(1);
236
+ }
237
+ }
238
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/create/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface StartDevServerOptions {
2
+ cleanBuildDirectory?: {
3
+ enabled: boolean;
4
+ directory: string;
5
+ };
6
+ }
7
+ export declare function devCommand(opts: StartDevServerOptions): Promise<void>;
8
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE3E"}
@@ -0,0 +1,64 @@
1
+ import { spawn } from "child_process";
2
+ import { getConfig, readWranglerConfig } from "../../lib/config.js";
3
+ import { ensureDevEnvironment } from "../../lib/wrangler.js";
4
+ import { link } from "./link.js";
5
+ import process from "node:process";
6
+ export async function devCommand(opts) {
7
+ try {
8
+ // 1. Ensure development environment is set up
9
+ console.log("šŸ”§ Setting up development environment...");
10
+ await ensureDevEnvironment(opts);
11
+ // 2. Get configuration
12
+ const _config = await getConfig().catch(() => ({
13
+ workspace: "default",
14
+ bindings: [],
15
+ local: false,
16
+ enable_workflows: true,
17
+ }));
18
+ const wranglerConfig = await readWranglerConfig();
19
+ const app = typeof wranglerConfig.name === "string" ? wranglerConfig.name : "my-app";
20
+ console.log(`šŸ“¦ Starting development server for '${app}'...`);
21
+ // 3. TODO: Check/setup MCP configuration when we port those utilities
22
+ // const latest = await hasMCPPreferences(config.workspace, app);
23
+ // if (!latest) {
24
+ // const mcpConfig = await promptIDESetup({
25
+ // workspace: config.workspace,
26
+ // app,
27
+ // });
28
+ // if (mcpConfig) {
29
+ // await writeIDEConfig(mcpConfig);
30
+ // }
31
+ // }
32
+ // 4. Start development server with tunnel integration
33
+ console.log("šŸš€ Starting development server with tunnel...");
34
+ // Use link command with wrangler dev as subprocess
35
+ await link({
36
+ port: 8787,
37
+ onBeforeRegister: () => {
38
+ console.log("šŸ”— Starting Wrangler development server...");
39
+ const wranglerProcess = spawn("npx", ["wrangler", "dev"], {
40
+ stdio: "inherit",
41
+ shell: true,
42
+ });
43
+ // Handle process termination
44
+ const cleanup = () => {
45
+ console.log("\nā¹ļø Stopping development server...");
46
+ wranglerProcess.kill("SIGINT");
47
+ process.exit(0);
48
+ };
49
+ process.on("SIGINT", cleanup);
50
+ process.on("SIGTERM", cleanup);
51
+ wranglerProcess.on("error", (error) => {
52
+ console.error("āŒ Failed to start Wrangler:", error.message);
53
+ process.exit(1);
54
+ });
55
+ return wranglerProcess;
56
+ },
57
+ });
58
+ }
59
+ catch (error) {
60
+ console.error("āŒ Development server failed:", error instanceof Error ? error.message : String(error));
61
+ process.exit(1);
62
+ }
63
+ }
64
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,OAAO,MAAM,cAAc,CAAC;AASnC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAA2B;IAC1D,IAAI,CAAC;QACH,8CAA8C;QAC9C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEjC,uBAAuB;QACvB,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC,CAAC;QAEJ,MAAM,cAAc,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAClD,MAAM,GAAG,GACP,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE3E,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,MAAM,CAAC,CAAC;QAE9D,sEAAsE;QACtE,iEAAiE;QACjE,iBAAiB;QACjB,6CAA6C;QAC7C,mCAAmC;QACnC,WAAW;QACX,QAAQ;QACR,qBAAqB;QACrB,uCAAuC;QACvC,MAAM;QACN,IAAI;QAEJ,sDAAsD;QACtD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAE7D,mDAAmD;QACnD,MAAM,IAAI,CAAC;YACT,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,GAAG,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAE1D,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;oBACxD,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBAEH,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;oBACpD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC;gBAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAE/B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACpC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;gBAEH,OAAO,eAAe,CAAC;YACzB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,8BAA8B,EAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ChildProcess } from "child_process";
2
+ interface LinkOptions {
3
+ port?: number;
4
+ onBeforeRegister?: () => void | ChildProcess;
5
+ }
6
+ export declare const link: ({ port, onBeforeRegister, }?: LinkOptions) => Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,eAAe,CAAC;AAWpD,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC;CAC9C;AA6ID,eAAO,MAAM,IAAI,GAAU,8BAGxB,WAAgB,kBAWlB,CAAC"}