solforge 0.1.6 → 0.2.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 (194) hide show
  1. package/.agi/agi.sqlite +0 -0
  2. package/.claude/settings.local.json +9 -0
  3. package/.github/workflows/release-binaries.yml +133 -0
  4. package/.tmp/.787ebcdbf7b8fde8-00000000.hm +0 -0
  5. package/.tmp/.bffe6efebdf8aedc-00000000.hm +0 -0
  6. package/AGENTS.md +271 -0
  7. package/CLAUDE.md +106 -0
  8. package/PROJECT_STRUCTURE.md +124 -0
  9. package/README.md +367 -393
  10. package/SOLANA_KIT_GUIDE.md +251 -0
  11. package/SOLFORGE.md +119 -0
  12. package/biome.json +34 -0
  13. package/bun.lock +743 -0
  14. package/docs/bun-single-file-executable.md +585 -0
  15. package/docs/cli-plan.md +154 -0
  16. package/docs/data-indexing-plan.md +214 -0
  17. package/docs/gui-roadmap.md +202 -0
  18. package/drizzle/0000_friendly_millenium_guard.sql +53 -0
  19. package/drizzle/0001_stale_sentinels.sql +2 -0
  20. package/drizzle/meta/0000_snapshot.json +329 -0
  21. package/drizzle/meta/0001_snapshot.json +345 -0
  22. package/drizzle/meta/_journal.json +20 -0
  23. package/drizzle.config.ts +12 -0
  24. package/index.ts +21 -0
  25. package/mint.sh +47 -0
  26. package/package.json +45 -69
  27. package/postcss.config.js +6 -0
  28. package/rpc-server.ts.backup +519 -0
  29. package/server/index.ts +5 -0
  30. package/server/lib/base58.ts +33 -0
  31. package/server/lib/faucet.ts +110 -0
  32. package/server/lib/spl-token.ts +57 -0
  33. package/server/methods/TEMPLATE.md +117 -0
  34. package/server/methods/account/get-account-info.ts +90 -0
  35. package/server/methods/account/get-balance.ts +27 -0
  36. package/server/methods/account/get-multiple-accounts.ts +83 -0
  37. package/server/methods/account/get-parsed-account-info.ts +21 -0
  38. package/server/methods/account/index.ts +12 -0
  39. package/server/methods/account/parsers/index.ts +52 -0
  40. package/server/methods/account/parsers/loader-upgradeable.ts +66 -0
  41. package/server/methods/account/parsers/spl-token.ts +237 -0
  42. package/server/methods/account/parsers/system.ts +4 -0
  43. package/server/methods/account/request-airdrop.ts +219 -0
  44. package/server/methods/admin/adopt-mint-authority.ts +94 -0
  45. package/server/methods/admin/clone-program-accounts.ts +55 -0
  46. package/server/methods/admin/clone-program.ts +152 -0
  47. package/server/methods/admin/clone-token-accounts.ts +117 -0
  48. package/server/methods/admin/clone-token-mint.ts +82 -0
  49. package/server/methods/admin/create-mint.ts +114 -0
  50. package/server/methods/admin/create-token-account.ts +137 -0
  51. package/server/methods/admin/helpers.ts +70 -0
  52. package/server/methods/admin/index.ts +10 -0
  53. package/server/methods/admin/list-mints.ts +21 -0
  54. package/server/methods/admin/load-program.ts +52 -0
  55. package/server/methods/admin/mint-to.ts +278 -0
  56. package/server/methods/block/get-block-height.ts +5 -0
  57. package/server/methods/block/get-block.ts +35 -0
  58. package/server/methods/block/get-blocks-with-limit.ts +23 -0
  59. package/server/methods/block/get-latest-blockhash.ts +12 -0
  60. package/server/methods/block/get-slot.ts +5 -0
  61. package/server/methods/block/index.ts +6 -0
  62. package/server/methods/block/is-blockhash-valid.ts +23 -0
  63. package/server/methods/epoch/get-cluster-nodes.ts +17 -0
  64. package/server/methods/epoch/get-epoch-info.ts +16 -0
  65. package/server/methods/epoch/get-epoch-schedule.ts +15 -0
  66. package/server/methods/epoch/get-highest-snapshot-slot.ts +9 -0
  67. package/server/methods/epoch/get-leader-schedule.ts +8 -0
  68. package/server/methods/epoch/get-max-retransmit-slot.ts +9 -0
  69. package/server/methods/epoch/get-max-shred-insert-slot.ts +9 -0
  70. package/server/methods/epoch/get-slot-leader.ts +6 -0
  71. package/server/methods/epoch/get-slot-leaders.ts +9 -0
  72. package/server/methods/epoch/get-stake-activation.ts +9 -0
  73. package/server/methods/epoch/get-stake-minimum-delegation.ts +9 -0
  74. package/server/methods/epoch/get-vote-accounts.ts +19 -0
  75. package/server/methods/epoch/index.ts +13 -0
  76. package/server/methods/epoch/minimum-ledger-slot.ts +5 -0
  77. package/server/methods/fee/get-fee-calculator-for-blockhash.ts +12 -0
  78. package/server/methods/fee/get-fee-for-message.ts +8 -0
  79. package/server/methods/fee/get-fee-rate-governor.ts +16 -0
  80. package/server/methods/fee/get-fees.ts +14 -0
  81. package/server/methods/fee/get-recent-prioritization-fees.ts +22 -0
  82. package/server/methods/fee/index.ts +5 -0
  83. package/server/methods/get-address-lookup-table.ts +31 -0
  84. package/server/methods/index.ts +265 -0
  85. package/server/methods/performance/get-recent-performance-samples.ts +25 -0
  86. package/server/methods/performance/get-transaction-count.ts +5 -0
  87. package/server/methods/performance/index.ts +2 -0
  88. package/server/methods/program/get-block-commitment.ts +9 -0
  89. package/server/methods/program/get-block-production.ts +14 -0
  90. package/server/methods/program/get-block-time.ts +21 -0
  91. package/server/methods/program/get-blocks.ts +11 -0
  92. package/server/methods/program/get-first-available-block.ts +9 -0
  93. package/server/methods/program/get-genesis-hash.ts +6 -0
  94. package/server/methods/program/get-identity.ts +6 -0
  95. package/server/methods/program/get-inflation-governor.ts +15 -0
  96. package/server/methods/program/get-inflation-rate.ts +10 -0
  97. package/server/methods/program/get-inflation-reward.ts +12 -0
  98. package/server/methods/program/get-largest-accounts.ts +8 -0
  99. package/server/methods/program/get-parsed-program-accounts.ts +12 -0
  100. package/server/methods/program/get-parsed-token-accounts-by-delegate.ts +12 -0
  101. package/server/methods/program/get-parsed-token-accounts-by-owner.ts +12 -0
  102. package/server/methods/program/get-program-accounts.ts +221 -0
  103. package/server/methods/program/get-supply.ts +13 -0
  104. package/server/methods/program/get-token-account-balance.ts +64 -0
  105. package/server/methods/program/get-token-accounts-by-delegate.ts +81 -0
  106. package/server/methods/program/get-token-accounts-by-owner.ts +390 -0
  107. package/server/methods/program/get-token-largest-accounts.ts +80 -0
  108. package/server/methods/program/get-token-supply.ts +38 -0
  109. package/server/methods/program/index.ts +21 -0
  110. package/server/methods/solforge/index.ts +155 -0
  111. package/server/methods/system/get-health.ts +5 -0
  112. package/server/methods/system/get-minimum-balance-for-rent-exemption.ts +13 -0
  113. package/server/methods/system/get-version.ts +9 -0
  114. package/server/methods/system/index.ts +3 -0
  115. package/server/methods/transaction/get-confirmed-transaction.ts +11 -0
  116. package/server/methods/transaction/get-parsed-transaction.ts +21 -0
  117. package/server/methods/transaction/get-signature-statuses.ts +72 -0
  118. package/server/methods/transaction/get-signatures-for-address.ts +45 -0
  119. package/server/methods/transaction/get-transaction.ts +428 -0
  120. package/server/methods/transaction/index.ts +7 -0
  121. package/server/methods/transaction/send-transaction.ts +232 -0
  122. package/server/methods/transaction/simulate-transaction.ts +56 -0
  123. package/server/rpc-server.ts +474 -0
  124. package/server/types.ts +74 -0
  125. package/server/ws-server.ts +171 -0
  126. package/sf.config.json +38 -0
  127. package/src/cli/bootstrap.ts +67 -0
  128. package/src/cli/commands/airdrop.ts +37 -0
  129. package/src/cli/commands/config.ts +39 -0
  130. package/src/cli/commands/mint.ts +187 -0
  131. package/src/cli/commands/program-clone.ts +124 -0
  132. package/src/cli/commands/program-load.ts +64 -0
  133. package/src/cli/commands/rpc-start.ts +46 -0
  134. package/src/cli/commands/token-adopt-authority.ts +37 -0
  135. package/src/cli/commands/token-clone.ts +113 -0
  136. package/src/cli/commands/token-create.ts +81 -0
  137. package/src/cli/main.ts +130 -0
  138. package/src/cli/run-solforge.ts +98 -0
  139. package/src/cli/setup-utils.ts +54 -0
  140. package/src/cli/setup-wizard.ts +256 -0
  141. package/src/cli/utils/args.ts +15 -0
  142. package/src/config/index.ts +130 -0
  143. package/src/db/index.ts +83 -0
  144. package/src/db/schema/accounts.ts +23 -0
  145. package/src/db/schema/address-signatures.ts +31 -0
  146. package/src/db/schema/index.ts +5 -0
  147. package/src/db/schema/meta-kv.ts +9 -0
  148. package/src/db/schema/transactions.ts +29 -0
  149. package/src/db/schema/tx-accounts.ts +33 -0
  150. package/src/db/tx-store.ts +229 -0
  151. package/src/gui/public/app.css +1 -0
  152. package/src/gui/public/index.html +19 -0
  153. package/src/gui/server.ts +297 -0
  154. package/src/gui/src/api.ts +127 -0
  155. package/src/gui/src/app.tsx +390 -0
  156. package/src/gui/src/components/airdrop-mint-form.tsx +216 -0
  157. package/src/gui/src/components/clone-program-modal.tsx +183 -0
  158. package/src/gui/src/components/clone-token-modal.tsx +211 -0
  159. package/src/gui/src/components/modal.tsx +127 -0
  160. package/src/gui/src/components/programs-panel.tsx +112 -0
  161. package/src/gui/src/components/status-panel.tsx +122 -0
  162. package/src/gui/src/components/tokens-panel.tsx +116 -0
  163. package/src/gui/src/hooks/use-interval.ts +17 -0
  164. package/src/gui/src/index.css +529 -0
  165. package/src/gui/src/main.tsx +17 -0
  166. package/src/migrations-bundled.ts +17 -0
  167. package/src/rpc/start.ts +44 -0
  168. package/tailwind.config.js +27 -0
  169. package/test-client.ts +120 -0
  170. package/tmp/inspect-html.ts +4 -0
  171. package/tmp/response-test.ts +5 -0
  172. package/tmp/test-html.ts +5 -0
  173. package/tmp/test-server.ts +13 -0
  174. package/tsconfig.json +24 -23
  175. package/LICENSE +0 -21
  176. package/scripts/postinstall.cjs +0 -103
  177. package/src/api-server-entry.ts +0 -109
  178. package/src/commands/add-program.ts +0 -337
  179. package/src/commands/init.ts +0 -122
  180. package/src/commands/list.ts +0 -136
  181. package/src/commands/mint.ts +0 -336
  182. package/src/commands/start.ts +0 -878
  183. package/src/commands/status.ts +0 -99
  184. package/src/commands/stop.ts +0 -406
  185. package/src/config/manager.ts +0 -157
  186. package/src/index.ts +0 -188
  187. package/src/services/api-server.ts +0 -532
  188. package/src/services/port-manager.ts +0 -177
  189. package/src/services/process-registry.ts +0 -154
  190. package/src/services/program-cloner.ts +0 -317
  191. package/src/services/token-cloner.ts +0 -809
  192. package/src/services/validator.ts +0 -295
  193. package/src/types/config.ts +0 -110
  194. package/src/utils/shell.ts +0 -110
package/index.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { createLiteSVMRpcServer, createLiteSVMWebSocketServer } from "./server";
2
+
3
+ const PORT = Number(process.env.RPC_PORT) || 8899;
4
+
5
+ const { httpServer, rpcServer } = createLiteSVMRpcServer(PORT);
6
+ createLiteSVMWebSocketServer(rpcServer, PORT + 1);
7
+
8
+ console.log(`
9
+ 🚀 LiteSVM RPC Server is running!
10
+
11
+ HTTP endpoint: http://localhost:${PORT}
12
+ WS endpoint: ws://localhost:${PORT + 1}
13
+
14
+ Connect with Solana CLI:
15
+ $ solana config set -u http://localhost:${PORT}
16
+
17
+ Or use with @solana/kit:
18
+ const rpc = createSolanaRpc('http://localhost:${PORT}')
19
+
20
+ Press Ctrl+C to stop the server
21
+ `);
package/mint.sh ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # Usage: ./mint.sh [AMOUNT]
6
+ # - AMOUNT defaults to 1000 (base units; SPL default decimals is 9)
7
+
8
+ amount="${1:-1000}"
9
+
10
+ if ! command -v spl-token >/dev/null 2>&1; then
11
+ echo "Error: spl-token CLI not found. Install Solana CLI tools." >&2
12
+ exit 1
13
+ fi
14
+
15
+ echo "Creating new SPL token..."
16
+ create_out=$(spl-token create-token)
17
+ echo "$create_out"
18
+
19
+ mint_address=$(printf '%s\n' "$create_out" | awk '/Creating token/ {print $3; exit}')
20
+
21
+ if [[ -z "${mint_address:-}" ]]; then
22
+ echo "Error: Failed to parse token mint address." >&2
23
+ exit 1
24
+ fi
25
+
26
+ echo
27
+ echo "Creating associated token account for mint $mint_address ..."
28
+ acct_out=$(spl-token create-account "$mint_address")
29
+ echo "$acct_out"
30
+
31
+ acct_address=$(printf '%s\n' "$acct_out" | awk '/Creating account/ {print $3; exit}')
32
+
33
+ echo
34
+ echo "Minting $amount tokens to your associated account..."
35
+ mint_out=$(spl-token mint "$mint_address" "$amount")
36
+ echo "$mint_out"
37
+
38
+ echo
39
+ echo "Done. Summary:"
40
+ echo "- Token Mint Address: $mint_address"
41
+ if [[ -n "${acct_address:-}" ]]; then
42
+ echo "- Associated Token Account: $acct_address"
43
+ fi
44
+ echo "- Minted Amount: $amount"
45
+ echo
46
+ echo "Tip: Save the mint address above; it represents your token mint."
47
+
package/package.json CHANGED
@@ -1,71 +1,47 @@
1
1
  {
2
- "name": "solforge",
3
- "version": "0.1.6",
4
- "description": "Solana localnet orchestration tool for cloning mainnet programs and tokens",
5
- "module": "index.ts",
6
- "type": "module",
7
- "private": false,
8
- "bin": {
9
- "solforge": "./bin/solforge"
10
- },
11
- "files": [
12
- "src/",
13
- "scripts/",
14
- "tsconfig.json",
15
- "bin/",
16
- "README.md",
17
- "LICENSE"
18
- ],
19
- "scripts": {
20
- "dev": "bun run --watch src/index.ts",
21
- "build": "bun build src/index.ts --outdir ./dist --target bun",
22
- "build:binary": "bun build src/index.ts --compile --outfile ./dist/solforge",
23
- "build:npm": "mkdir -p bin && bun build src/index.ts --compile --outfile ./bin/solforge",
24
- "install:binary": "mkdir -p ~/.local/bin && cp ./dist/solforge ~/.local/bin/solforge && chmod +x ~/.local/bin/solforge",
25
- "build:install": "bun run build:binary && bun run install:binary",
26
- "postinstall": "node scripts/postinstall.cjs",
27
- "prepublishOnly": "rm -rf bin/",
28
- "start": "bun run dist/index.js",
29
- "test": "bun test",
30
- "lint": "bunx @biomejs/biome check src/",
31
- "format": "bunx @biomejs/biome format src/ --write"
32
- },
33
- "dependencies": {
34
- "@inquirer/prompts": "^7.5.3",
35
- "@solana/spl-token": "^0.4.1",
36
- "@solana/web3.js": "^1.87.6",
37
- "chalk": "^5.3.0",
38
- "commander": "^11.1.0",
39
- "cors": "^2.8.5",
40
- "express": "^4.18.2",
41
- "inquirer": "^9.2.12",
42
- "ora": "^8.0.1",
43
- "ws": "^8.16.0",
44
- "zod": "^3.22.4"
45
- },
46
- "devDependencies": {
47
- "@types/bun": "latest",
48
- "@types/node": "^20.10.6",
49
- "@types/express": "^4.17.21",
50
- "@types/cors": "^2.8.17",
51
- "@types/ws": "^8.5.10",
52
- "@types/inquirer": "^9.0.7",
53
- "@biomejs/biome": "^1.4.1"
54
- },
55
- "peerDependencies": {
56
- "typescript": "^5"
57
- },
58
- "keywords": [
59
- "solana",
60
- "localnet",
61
- "blockchain",
62
- "development",
63
- "tooling"
64
- ],
65
- "repository": {
66
- "type": "git",
67
- "url": "https://github.com/nitishxyz/solforge.git"
68
- },
69
- "author": "nitishxyz",
70
- "license": "MIT"
2
+ "name": "solforge",
3
+ "version": "0.2.0",
4
+ "module": "index.ts",
5
+ "type": "module",
6
+ "private": false,
7
+ "scripts": {
8
+ "lint": "biome check",
9
+ "cli": "bun src/cli/main.ts",
10
+ "build:gui": "bun build src/gui/src/main.tsx --outdir src/gui/public/build --target=browser --minify",
11
+ "build:css": "bunx tailwindcss -i src/gui/src/index.css -o src/gui/public/app.css --minify",
12
+ "build": "bun run build:bin",
13
+ "build:bin": "bun run build:css && bun run build:gui && bun build --compile src/cli/main.ts --outfile dist/solforge",
14
+ "build:bin:darwin-arm64": "bun run build:css && bun run build:gui && bun build --compile --target=bun-darwin-arm64 src/cli/main.ts --outfile dist/solforge-darwin-arm64",
15
+ "build:bin:darwin-x64": "bun run build:css && bun run build:gui && bun build --compile --target=bun-darwin-x64 src/cli/main.ts --outfile dist/solforge-darwin-x64",
16
+ "build:bin:linux-x64": "bun run build:css && bun run build:gui && bun build --compile --target=bun-linux-x64 src/cli/main.ts --outfile dist/solforge-linux-x64",
17
+ "build:bin:linux-arm64": "bun run build:css && bun run build:gui && bun build --compile --target=bun-linux-arm64 src/cli/main.ts --outfile dist/solforge-linux-arm64",
18
+ "build:bin:windows-x64": "bun run build:css && bun run build:gui && bun build --compile --target=bun-windows-x64 src/cli/main.ts --outfile dist/solforge-windows-x64.exe",
19
+ "build:bin:all": "bun run build:bin:darwin-arm64 && bun run build:bin:darwin-x64 && bun run build:bin:linux-x64 && bun run build:bin:linux-arm64 && bun run build:bin:windows-x64"
20
+ },
21
+ "devDependencies": {
22
+ "@biomejs/biome": "2.2.4",
23
+ "@types/bun": "latest",
24
+ "@types/react": "^19.1.13",
25
+ "@types/react-dom": "^19.1.9",
26
+ "autoprefixer": "^10.4.21",
27
+ "drizzle-kit": "^0.31.4",
28
+ "postcss": "^8.5.6",
29
+ "tailwindcss": "3"
30
+ },
31
+ "peerDependencies": {
32
+ "typescript": "^5"
33
+ },
34
+ "dependencies": {
35
+ "@clack/prompts": "^0.11.0",
36
+ "@solana-program/compute-budget": "^0.9.0",
37
+ "@solana-program/memo": "^0.8.0",
38
+ "@solana-program/system": "^0.8.0",
39
+ "@solana-program/token": "^0.6.0",
40
+ "@solana/kit": "^3.0.3",
41
+ "@solana/spl-token": "^0.4.14",
42
+ "drizzle-orm": "^0.44.5",
43
+ "litesvm": "^0.3.3",
44
+ "react": "^19.1.1",
45
+ "react-dom": "^19.1.1"
46
+ }
71
47
  }
@@ -0,0 +1,6 @@
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ };