create-stylus-ide 1.0.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 (135) hide show
  1. package/Readme.MD +1515 -0
  2. package/cli.js +28 -0
  3. package/frontend/.vscode/settings.json +9 -0
  4. package/frontend/app/api/chat/route.ts +101 -0
  5. package/frontend/app/api/check-setup/route.ts +93 -0
  6. package/frontend/app/api/cleanup/route.ts +14 -0
  7. package/frontend/app/api/compile/route.ts +95 -0
  8. package/frontend/app/api/compile-stream/route.ts +98 -0
  9. package/frontend/app/api/complete/route.ts +86 -0
  10. package/frontend/app/api/deploy/route.ts +118 -0
  11. package/frontend/app/api/export-abi/route.ts +58 -0
  12. package/frontend/app/favicon.ico +0 -0
  13. package/frontend/app/globals.css +177 -0
  14. package/frontend/app/layout.tsx +29 -0
  15. package/frontend/app/ml/page.tsx +694 -0
  16. package/frontend/app/page.tsx +1132 -0
  17. package/frontend/app/providers.tsx +18 -0
  18. package/frontend/app/qlearning/page.tsx +188 -0
  19. package/frontend/app/raytracing/page.tsx +268 -0
  20. package/frontend/components/abi/ABIDialog.tsx +132 -0
  21. package/frontend/components/ai/AICompletionPopup.tsx +76 -0
  22. package/frontend/components/ai/ChatPanel.tsx +292 -0
  23. package/frontend/components/ai/QuickActions.tsx +128 -0
  24. package/frontend/components/blockchain/BlockchainContractBanner.tsx +64 -0
  25. package/frontend/components/blockchain/BlockchainLoadingDialog.tsx +188 -0
  26. package/frontend/components/deploy/DeployDialog.tsx +334 -0
  27. package/frontend/components/editor/FileTabs.tsx +181 -0
  28. package/frontend/components/editor/MonacoEditor.tsx +306 -0
  29. package/frontend/components/file-tree/ContextMenu.tsx +110 -0
  30. package/frontend/components/file-tree/DeleteConfirmDialog.tsx +61 -0
  31. package/frontend/components/file-tree/FileInputDialog.tsx +97 -0
  32. package/frontend/components/file-tree/FileNode.tsx +60 -0
  33. package/frontend/components/file-tree/FileTree.tsx +259 -0
  34. package/frontend/components/file-tree/FileTreeSkeleton.tsx +26 -0
  35. package/frontend/components/file-tree/FolderNode.tsx +105 -0
  36. package/frontend/components/github/GitHubLoadingDialog.tsx +201 -0
  37. package/frontend/components/github/GitHubMetadataBanner.tsx +61 -0
  38. package/frontend/components/github/LoadFromGitHubDialog.tsx +125 -0
  39. package/frontend/components/github/URLCopyButton.tsx +60 -0
  40. package/frontend/components/interact/ContractInteraction.tsx +323 -0
  41. package/frontend/components/interact/ContractPlaceholder.tsx +41 -0
  42. package/frontend/components/orbit/BenchmarkDialog.tsx +342 -0
  43. package/frontend/components/orbit/OrbitExplorer.tsx +273 -0
  44. package/frontend/components/project/ProjectActions.tsx +176 -0
  45. package/frontend/components/q-learning/ContractConfig.tsx +172 -0
  46. package/frontend/components/q-learning/MazeGrid.tsx +346 -0
  47. package/frontend/components/q-learning/PathAnimation.tsx +384 -0
  48. package/frontend/components/q-learning/QTableHeatmap.tsx +300 -0
  49. package/frontend/components/q-learning/TrainingForm.tsx +349 -0
  50. package/frontend/components/ray-tracing/ContractConfig.tsx +245 -0
  51. package/frontend/components/ray-tracing/MintingForm.tsx +280 -0
  52. package/frontend/components/ray-tracing/RenderCanvas.tsx +228 -0
  53. package/frontend/components/ray-tracing/RenderingPanel.tsx +259 -0
  54. package/frontend/components/ray-tracing/StyleControls.tsx +217 -0
  55. package/frontend/components/setup/SetupGuide.tsx +290 -0
  56. package/frontend/components/ui/KeyboardShortcutHint.tsx +74 -0
  57. package/frontend/components/ui/alert-dialog.tsx +157 -0
  58. package/frontend/components/ui/alert.tsx +66 -0
  59. package/frontend/components/ui/badge.tsx +46 -0
  60. package/frontend/components/ui/button.tsx +62 -0
  61. package/frontend/components/ui/card.tsx +92 -0
  62. package/frontend/components/ui/context-menu.tsx +252 -0
  63. package/frontend/components/ui/dialog.tsx +143 -0
  64. package/frontend/components/ui/dropdown-menu.tsx +257 -0
  65. package/frontend/components/ui/input.tsx +21 -0
  66. package/frontend/components/ui/label.tsx +24 -0
  67. package/frontend/components/ui/progress.tsx +31 -0
  68. package/frontend/components/ui/scroll-area.tsx +58 -0
  69. package/frontend/components/ui/select.tsx +190 -0
  70. package/frontend/components/ui/separator.tsx +28 -0
  71. package/frontend/components/ui/sheet.tsx +139 -0
  72. package/frontend/components/ui/skeleton.tsx +13 -0
  73. package/frontend/components/ui/slider.tsx +63 -0
  74. package/frontend/components/ui/sonner.tsx +40 -0
  75. package/frontend/components/ui/tabs.tsx +66 -0
  76. package/frontend/components/ui/textarea.tsx +18 -0
  77. package/frontend/components/wallet/ConnectButton.tsx +167 -0
  78. package/frontend/components/wallet/FaucetButton.tsx +256 -0
  79. package/frontend/components.json +22 -0
  80. package/frontend/eslint.config.mjs +18 -0
  81. package/frontend/hooks/useAICompletion.ts +75 -0
  82. package/frontend/hooks/useBlockchainLoader.ts +58 -0
  83. package/frontend/hooks/useChats.ts +137 -0
  84. package/frontend/hooks/useCompilation.ts +173 -0
  85. package/frontend/hooks/useFileTabs.ts +178 -0
  86. package/frontend/hooks/useGitHubLoader.ts +50 -0
  87. package/frontend/hooks/useKeyboardShortcuts.ts +47 -0
  88. package/frontend/hooks/usePanelState.ts +115 -0
  89. package/frontend/hooks/useProjectState.ts +276 -0
  90. package/frontend/hooks/useResponsive.ts +29 -0
  91. package/frontend/lib/abi-parser.ts +58 -0
  92. package/frontend/lib/blockchain-api.ts +374 -0
  93. package/frontend/lib/blockchain-explorers.ts +75 -0
  94. package/frontend/lib/blockchain-loader.ts +112 -0
  95. package/frontend/lib/cargo-template.ts +64 -0
  96. package/frontend/lib/compilation.ts +529 -0
  97. package/frontend/lib/constants.ts +31 -0
  98. package/frontend/lib/deployment.ts +176 -0
  99. package/frontend/lib/file-utils.ts +83 -0
  100. package/frontend/lib/github-api.ts +246 -0
  101. package/frontend/lib/github-loader.ts +369 -0
  102. package/frontend/lib/ml-contract-template.txt +900 -0
  103. package/frontend/lib/orbit-chains.ts +181 -0
  104. package/frontend/lib/output-formatter.ts +68 -0
  105. package/frontend/lib/project-manager.ts +632 -0
  106. package/frontend/lib/ray-tracing-abi.ts +206 -0
  107. package/frontend/lib/storage.ts +189 -0
  108. package/frontend/lib/templates.ts +1662 -0
  109. package/frontend/lib/url-parser.ts +188 -0
  110. package/frontend/lib/utils.ts +6 -0
  111. package/frontend/lib/wagmi-config.ts +24 -0
  112. package/frontend/next.config.ts +7 -0
  113. package/frontend/package-lock.json +16259 -0
  114. package/frontend/package.json +60 -0
  115. package/frontend/postcss.config.mjs +7 -0
  116. package/frontend/public/file.svg +1 -0
  117. package/frontend/public/globe.svg +1 -0
  118. package/frontend/public/ml-weights/.gitkeep +0 -0
  119. package/frontend/public/ml-weights/model.pkl +0 -0
  120. package/frontend/public/ml-weights/model_weights.json +27102 -0
  121. package/frontend/public/ml-weights/test_samples.json +7888 -0
  122. package/frontend/public/next.svg +1 -0
  123. package/frontend/public/vercel.svg +1 -0
  124. package/frontend/public/window.svg +1 -0
  125. package/frontend/scripts/check-env.js +52 -0
  126. package/frontend/scripts/setup.js +285 -0
  127. package/frontend/tailwind.config.ts +64 -0
  128. package/frontend/tsconfig.json +34 -0
  129. package/frontend/types/blockchain.ts +63 -0
  130. package/frontend/types/github.ts +54 -0
  131. package/frontend/types/project.ts +106 -0
  132. package/ml-training/README.md +56 -0
  133. package/ml-training/train_tiny_model.py +325 -0
  134. package/ml-training/update_template.py +59 -0
  135. package/package.json +30 -0
@@ -0,0 +1,188 @@
1
+ /**
2
+ * URL parser for GitHub repositories
3
+ * Supports various GitHub URL formats
4
+ */
5
+
6
+ export type GitHubURLInfo = {
7
+ type: "github";
8
+ owner: string;
9
+ repo: string;
10
+ branch?: string;
11
+ path?: string;
12
+ file?: string;
13
+ rawUrl: string;
14
+ };
15
+
16
+ export type BlockchainURLInfo = {
17
+ type: "blockchain";
18
+ chain: string;
19
+ network: string;
20
+ address: string;
21
+ explorerDomain: string;
22
+ rawUrl: string;
23
+ };
24
+
25
+ export type ParsedURL =
26
+ | GitHubURLInfo
27
+ | BlockchainURLInfo
28
+ | { type: "unknown"; rawUrl: string };
29
+
30
+ /**
31
+ * Parse GitHub URL and extract components
32
+ */
33
+ export function parseGitHubURL(url: string): GitHubURLInfo | null {
34
+ try {
35
+ const urlObj = new URL(url);
36
+
37
+ // Must be github.com
38
+ if (urlObj.hostname !== "github.com") {
39
+ return null;
40
+ }
41
+
42
+ // Extract path parts: /owner/repo/tree/branch/path or /owner/repo
43
+ const pathParts = urlObj.pathname.split("/").filter(Boolean);
44
+
45
+ if (pathParts.length < 2) {
46
+ return null; // Need at least owner/repo
47
+ }
48
+
49
+ const owner = pathParts[0];
50
+ const repo = pathParts[1];
51
+ let branch: string | undefined;
52
+ let path: string | undefined;
53
+ let file: string | undefined;
54
+
55
+ // Check for branch/path patterns
56
+ if (pathParts[2] === "tree" && pathParts.length > 3) {
57
+ // Format: /owner/repo/tree/branch/path...
58
+ branch = pathParts[3];
59
+ if (pathParts.length > 4) {
60
+ path = pathParts.slice(4).join("/");
61
+ }
62
+ } else if (pathParts[2] === "blob" && pathParts.length > 3) {
63
+ // Format: /owner/repo/blob/branch/file.rs
64
+ branch = pathParts[3];
65
+ if (pathParts.length > 4) {
66
+ file = pathParts.slice(4).join("/");
67
+ }
68
+ }
69
+
70
+ // Check for query parameters (override URL path values)
71
+ const searchParams = new URLSearchParams(urlObj.search);
72
+ const queryBranch = searchParams.get("branch");
73
+ const queryFile = searchParams.get("file");
74
+ const queryPath = searchParams.get("path");
75
+
76
+ // Query params take precedence
77
+ if (queryBranch) branch = queryBranch;
78
+ if (queryFile) file = queryFile;
79
+ if (queryPath) path = queryPath;
80
+
81
+ return {
82
+ type: "github",
83
+ owner,
84
+ repo,
85
+ branch,
86
+ path,
87
+ file,
88
+ rawUrl: url,
89
+ };
90
+ } catch (error) {
91
+ console.error("Failed to parse GitHub URL:", error);
92
+ return null;
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Parse blockchain explorer URL and extract address
98
+ */
99
+ export function parseBlockchainURL(url: string): BlockchainURLInfo | null {
100
+ try {
101
+ const urlObj = new URL(url);
102
+
103
+ // Map of supported explorers
104
+ const explorerMap: Record<string, { chain: string; network: string }> = {
105
+ "arbiscan.io": { chain: "arbitrum", network: "mainnet" },
106
+ "sepolia.arbiscan.io": { chain: "arbitrum", network: "sepolia" },
107
+ "etherscan.io": { chain: "ethereum", network: "mainnet" },
108
+ "sepolia.etherscan.io": { chain: "ethereum", network: "sepolia" },
109
+ "basescan.org": { chain: "base", network: "mainnet" },
110
+ };
111
+
112
+ const explorerConfig = explorerMap[urlObj.hostname];
113
+
114
+ if (!explorerConfig) {
115
+ return null; // Unknown explorer
116
+ }
117
+
118
+ // Extract address from path
119
+ const addressMatch = urlObj.pathname.match(
120
+ /\/address\/(0x[a-fA-F0-9]{40})/
121
+ );
122
+
123
+ if (!addressMatch) {
124
+ return null; // No valid address found
125
+ }
126
+
127
+ return {
128
+ type: "blockchain",
129
+ chain: explorerConfig.chain,
130
+ network: explorerConfig.network,
131
+ address: addressMatch[1],
132
+ explorerDomain: urlObj.hostname,
133
+ rawUrl: url,
134
+ };
135
+ } catch (error) {
136
+ console.error("Failed to parse blockchain URL:", error);
137
+ return null;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * Main URL parser - detects type and parses accordingly
143
+ */
144
+ export function parseURL(url: string): ParsedURL {
145
+ // Try GitHub first
146
+ const githubInfo = parseGitHubURL(url);
147
+ if (githubInfo) {
148
+ return githubInfo;
149
+ }
150
+
151
+ // Try blockchain explorer
152
+ const blockchainInfo = parseBlockchainURL(url);
153
+ if (blockchainInfo) {
154
+ return blockchainInfo;
155
+ }
156
+
157
+ // Unknown type
158
+ return {
159
+ type: "unknown",
160
+ rawUrl: url,
161
+ };
162
+ }
163
+
164
+ /**
165
+ * Validate if URL is supported
166
+ */
167
+ export function isSupportedURL(url: string): boolean {
168
+ const parsed = parseURL(url);
169
+ return parsed.type !== "unknown";
170
+ }
171
+
172
+ /**
173
+ * Get display name for parsed URL
174
+ */
175
+ export function getURLDisplayName(parsed: ParsedURL): string {
176
+ if (parsed.type === "github") {
177
+ return `${parsed.owner}/${parsed.repo}`;
178
+ }
179
+
180
+ if (parsed.type === "blockchain") {
181
+ return `${parsed.chain} ${parsed.address.slice(
182
+ 0,
183
+ 6
184
+ )}...${parsed.address.slice(-4)}`;
185
+ }
186
+
187
+ return "Unknown Source";
188
+ }
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
@@ -0,0 +1,24 @@
1
+ import { http, createConfig } from "wagmi";
2
+ import { arbitrum, arbitrumSepolia } from "wagmi/chains";
3
+ import { injected } from "wagmi/connectors";
4
+ import { xaiSepolia, apechainCurtis, nitrogenTestnet } from "./orbit-chains";
5
+
6
+ export const config = createConfig({
7
+ chains: [
8
+ arbitrumSepolia,
9
+ arbitrum,
10
+ xaiSepolia,
11
+ apechainCurtis,
12
+ nitrogenTestnet,
13
+ ],
14
+ connectors: [
15
+ injected(), // MetaMask, Rabby, Rainbow, Coinbase Wallet, etc.
16
+ ],
17
+ transports: {
18
+ [arbitrumSepolia.id]: http(),
19
+ [arbitrum.id]: http(),
20
+ [xaiSepolia.id]: http(),
21
+ [apechainCurtis.id]: http(),
22
+ [nitrogenTestnet.id]: http(),
23
+ },
24
+ });
@@ -0,0 +1,7 @@
1
+ import type { NextConfig } from "next";
2
+
3
+ const nextConfig: NextConfig = {
4
+ /* config options here */
5
+ };
6
+
7
+ export default nextConfig;