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.
- package/Readme.MD +1515 -0
- package/cli.js +28 -0
- package/frontend/.vscode/settings.json +9 -0
- package/frontend/app/api/chat/route.ts +101 -0
- package/frontend/app/api/check-setup/route.ts +93 -0
- package/frontend/app/api/cleanup/route.ts +14 -0
- package/frontend/app/api/compile/route.ts +95 -0
- package/frontend/app/api/compile-stream/route.ts +98 -0
- package/frontend/app/api/complete/route.ts +86 -0
- package/frontend/app/api/deploy/route.ts +118 -0
- package/frontend/app/api/export-abi/route.ts +58 -0
- package/frontend/app/favicon.ico +0 -0
- package/frontend/app/globals.css +177 -0
- package/frontend/app/layout.tsx +29 -0
- package/frontend/app/ml/page.tsx +694 -0
- package/frontend/app/page.tsx +1132 -0
- package/frontend/app/providers.tsx +18 -0
- package/frontend/app/qlearning/page.tsx +188 -0
- package/frontend/app/raytracing/page.tsx +268 -0
- package/frontend/components/abi/ABIDialog.tsx +132 -0
- package/frontend/components/ai/AICompletionPopup.tsx +76 -0
- package/frontend/components/ai/ChatPanel.tsx +292 -0
- package/frontend/components/ai/QuickActions.tsx +128 -0
- package/frontend/components/blockchain/BlockchainContractBanner.tsx +64 -0
- package/frontend/components/blockchain/BlockchainLoadingDialog.tsx +188 -0
- package/frontend/components/deploy/DeployDialog.tsx +334 -0
- package/frontend/components/editor/FileTabs.tsx +181 -0
- package/frontend/components/editor/MonacoEditor.tsx +306 -0
- package/frontend/components/file-tree/ContextMenu.tsx +110 -0
- package/frontend/components/file-tree/DeleteConfirmDialog.tsx +61 -0
- package/frontend/components/file-tree/FileInputDialog.tsx +97 -0
- package/frontend/components/file-tree/FileNode.tsx +60 -0
- package/frontend/components/file-tree/FileTree.tsx +259 -0
- package/frontend/components/file-tree/FileTreeSkeleton.tsx +26 -0
- package/frontend/components/file-tree/FolderNode.tsx +105 -0
- package/frontend/components/github/GitHubLoadingDialog.tsx +201 -0
- package/frontend/components/github/GitHubMetadataBanner.tsx +61 -0
- package/frontend/components/github/LoadFromGitHubDialog.tsx +125 -0
- package/frontend/components/github/URLCopyButton.tsx +60 -0
- package/frontend/components/interact/ContractInteraction.tsx +323 -0
- package/frontend/components/interact/ContractPlaceholder.tsx +41 -0
- package/frontend/components/orbit/BenchmarkDialog.tsx +342 -0
- package/frontend/components/orbit/OrbitExplorer.tsx +273 -0
- package/frontend/components/project/ProjectActions.tsx +176 -0
- package/frontend/components/q-learning/ContractConfig.tsx +172 -0
- package/frontend/components/q-learning/MazeGrid.tsx +346 -0
- package/frontend/components/q-learning/PathAnimation.tsx +384 -0
- package/frontend/components/q-learning/QTableHeatmap.tsx +300 -0
- package/frontend/components/q-learning/TrainingForm.tsx +349 -0
- package/frontend/components/ray-tracing/ContractConfig.tsx +245 -0
- package/frontend/components/ray-tracing/MintingForm.tsx +280 -0
- package/frontend/components/ray-tracing/RenderCanvas.tsx +228 -0
- package/frontend/components/ray-tracing/RenderingPanel.tsx +259 -0
- package/frontend/components/ray-tracing/StyleControls.tsx +217 -0
- package/frontend/components/setup/SetupGuide.tsx +290 -0
- package/frontend/components/ui/KeyboardShortcutHint.tsx +74 -0
- package/frontend/components/ui/alert-dialog.tsx +157 -0
- package/frontend/components/ui/alert.tsx +66 -0
- package/frontend/components/ui/badge.tsx +46 -0
- package/frontend/components/ui/button.tsx +62 -0
- package/frontend/components/ui/card.tsx +92 -0
- package/frontend/components/ui/context-menu.tsx +252 -0
- package/frontend/components/ui/dialog.tsx +143 -0
- package/frontend/components/ui/dropdown-menu.tsx +257 -0
- package/frontend/components/ui/input.tsx +21 -0
- package/frontend/components/ui/label.tsx +24 -0
- package/frontend/components/ui/progress.tsx +31 -0
- package/frontend/components/ui/scroll-area.tsx +58 -0
- package/frontend/components/ui/select.tsx +190 -0
- package/frontend/components/ui/separator.tsx +28 -0
- package/frontend/components/ui/sheet.tsx +139 -0
- package/frontend/components/ui/skeleton.tsx +13 -0
- package/frontend/components/ui/slider.tsx +63 -0
- package/frontend/components/ui/sonner.tsx +40 -0
- package/frontend/components/ui/tabs.tsx +66 -0
- package/frontend/components/ui/textarea.tsx +18 -0
- package/frontend/components/wallet/ConnectButton.tsx +167 -0
- package/frontend/components/wallet/FaucetButton.tsx +256 -0
- package/frontend/components.json +22 -0
- package/frontend/eslint.config.mjs +18 -0
- package/frontend/hooks/useAICompletion.ts +75 -0
- package/frontend/hooks/useBlockchainLoader.ts +58 -0
- package/frontend/hooks/useChats.ts +137 -0
- package/frontend/hooks/useCompilation.ts +173 -0
- package/frontend/hooks/useFileTabs.ts +178 -0
- package/frontend/hooks/useGitHubLoader.ts +50 -0
- package/frontend/hooks/useKeyboardShortcuts.ts +47 -0
- package/frontend/hooks/usePanelState.ts +115 -0
- package/frontend/hooks/useProjectState.ts +276 -0
- package/frontend/hooks/useResponsive.ts +29 -0
- package/frontend/lib/abi-parser.ts +58 -0
- package/frontend/lib/blockchain-api.ts +374 -0
- package/frontend/lib/blockchain-explorers.ts +75 -0
- package/frontend/lib/blockchain-loader.ts +112 -0
- package/frontend/lib/cargo-template.ts +64 -0
- package/frontend/lib/compilation.ts +529 -0
- package/frontend/lib/constants.ts +31 -0
- package/frontend/lib/deployment.ts +176 -0
- package/frontend/lib/file-utils.ts +83 -0
- package/frontend/lib/github-api.ts +246 -0
- package/frontend/lib/github-loader.ts +369 -0
- package/frontend/lib/ml-contract-template.txt +900 -0
- package/frontend/lib/orbit-chains.ts +181 -0
- package/frontend/lib/output-formatter.ts +68 -0
- package/frontend/lib/project-manager.ts +632 -0
- package/frontend/lib/ray-tracing-abi.ts +206 -0
- package/frontend/lib/storage.ts +189 -0
- package/frontend/lib/templates.ts +1662 -0
- package/frontend/lib/url-parser.ts +188 -0
- package/frontend/lib/utils.ts +6 -0
- package/frontend/lib/wagmi-config.ts +24 -0
- package/frontend/next.config.ts +7 -0
- package/frontend/package-lock.json +16259 -0
- package/frontend/package.json +60 -0
- package/frontend/postcss.config.mjs +7 -0
- package/frontend/public/file.svg +1 -0
- package/frontend/public/globe.svg +1 -0
- package/frontend/public/ml-weights/.gitkeep +0 -0
- package/frontend/public/ml-weights/model.pkl +0 -0
- package/frontend/public/ml-weights/model_weights.json +27102 -0
- package/frontend/public/ml-weights/test_samples.json +7888 -0
- package/frontend/public/next.svg +1 -0
- package/frontend/public/vercel.svg +1 -0
- package/frontend/public/window.svg +1 -0
- package/frontend/scripts/check-env.js +52 -0
- package/frontend/scripts/setup.js +285 -0
- package/frontend/tailwind.config.ts +64 -0
- package/frontend/tsconfig.json +34 -0
- package/frontend/types/blockchain.ts +63 -0
- package/frontend/types/github.ts +54 -0
- package/frontend/types/project.ts +106 -0
- package/ml-training/README.md +56 -0
- package/ml-training/train_tiny_model.py +325 -0
- package/ml-training/update_template.py +59 -0
- 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,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
|
+
});
|