forge-solana-sdk 2.1.2 → 2.1.4
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 +32 -2
- package/dist/cli.js +9 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +69 -1
- package/dist/commands/status.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,15 @@ npm install -g forge-solana-sdk
|
|
|
16
16
|
|
|
17
17
|
### Initialize a project
|
|
18
18
|
```bash
|
|
19
|
+
# Basic project
|
|
19
20
|
forge init my-project
|
|
21
|
+
|
|
22
|
+
# With intent-driven CPI generation
|
|
23
|
+
forge init my-project --intent "transfer 100 tokens safely"
|
|
24
|
+
|
|
25
|
+
# With specific Anchor version
|
|
26
|
+
forge init my-project --anchor-version 0.31.0
|
|
27
|
+
|
|
20
28
|
cd my-project
|
|
21
29
|
```
|
|
22
30
|
|
|
@@ -25,6 +33,12 @@ cd my-project
|
|
|
25
33
|
forge status
|
|
26
34
|
```
|
|
27
35
|
|
|
36
|
+
Enhanced status checks include:
|
|
37
|
+
- ✅ Version compatibility warnings
|
|
38
|
+
- ✅ Rust edition 2024 requirements
|
|
39
|
+
- ✅ Anchor CLI vs project version matching
|
|
40
|
+
- ✅ Network configuration
|
|
41
|
+
|
|
28
42
|
### Deploy to Solana
|
|
29
43
|
```bash
|
|
30
44
|
forge deploy
|
|
@@ -33,9 +47,11 @@ forge deploy
|
|
|
33
47
|
## 📋 Prerequisites
|
|
34
48
|
|
|
35
49
|
- **Node.js** 18+
|
|
36
|
-
- **Rust** 1.
|
|
50
|
+
- **Rust** 1.85.0+ (required for edition 2024 compatibility)
|
|
37
51
|
- **Solana CLI** (latest)
|
|
38
|
-
- **Anchor CLI** 0.29.0
|
|
52
|
+
- **Anchor CLI** 0.29.0+
|
|
53
|
+
|
|
54
|
+
⚠️ **Important**: Rust 1.85.0+ is required for modern Anchor dependencies. Update with: `rustup update stable`
|
|
39
55
|
|
|
40
56
|
## 🎯 What FORGE Does
|
|
41
57
|
|
|
@@ -47,6 +63,20 @@ FORGE generates production-ready Anchor programs from intent. It creates the boi
|
|
|
47
63
|
- ✅ Configures Anchor.toml for deployment
|
|
48
64
|
- ✅ Works with real Solana networks
|
|
49
65
|
|
|
66
|
+
## 🛠️ Troubleshooting
|
|
67
|
+
|
|
68
|
+
### Version Compatibility Issues
|
|
69
|
+
If you encounter build errors:
|
|
70
|
+
|
|
71
|
+
1. **Update Rust**: `rustup update stable` (requires 1.85.0+)
|
|
72
|
+
2. **Check versions**: `forge status` (shows mismatches)
|
|
73
|
+
3. **Specify version**: `forge init --anchor-version 0.32.1`
|
|
74
|
+
|
|
75
|
+
### Common Errors
|
|
76
|
+
- `edition2024` errors → Update Rust to 1.85.0+
|
|
77
|
+
- Version mismatches → Use `forge status` to check alignment
|
|
78
|
+
- Build failures → Ensure Anchor CLI matches project versions
|
|
79
|
+
|
|
50
80
|
## 🚫 What FORGE Does NOT Do
|
|
51
81
|
|
|
52
82
|
FORGE does not:
|
package/dist/cli.js
CHANGED
|
@@ -10,13 +10,14 @@ const program = new commander_1.Command();
|
|
|
10
10
|
program
|
|
11
11
|
.name('forge')
|
|
12
12
|
.description('FORGE - Intent-driven app assembly on Solana')
|
|
13
|
-
.version('2.
|
|
13
|
+
.version('2.1.4');
|
|
14
14
|
program
|
|
15
15
|
.command('init [projectName]')
|
|
16
16
|
.description('Initialize a new FORGE project')
|
|
17
17
|
.option('-i, --intent <intent>', 'Describe what the program should do (enables CPI generation)')
|
|
18
|
+
.option('-a, --anchor-version <version>', 'Specify Anchor version (default: 0.32.1)', '0.32.1')
|
|
18
19
|
.action(async (projectName, options) => {
|
|
19
|
-
await (0, init_js_1.initCommand)(projectName, options.intent);
|
|
20
|
+
await (0, init_js_1.initCommand)(projectName, options.intent, options.anchorVersion);
|
|
20
21
|
});
|
|
21
22
|
program
|
|
22
23
|
.command('deploy')
|
|
@@ -30,6 +31,12 @@ program
|
|
|
30
31
|
.action(async () => {
|
|
31
32
|
await (0, status_js_1.statusCommand)();
|
|
32
33
|
});
|
|
34
|
+
program
|
|
35
|
+
.command('update')
|
|
36
|
+
.description('Update FORGE to the latest version')
|
|
37
|
+
.action(async () => {
|
|
38
|
+
await (0, status_js_1.updateCommand)();
|
|
39
|
+
});
|
|
33
40
|
// Show logo on help
|
|
34
41
|
program.on('--help', () => {
|
|
35
42
|
console.log(ascii_js_1.logo);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAAkC;AAClC,gDAAiD;AACjD,oDAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAAkC;AAClC,gDAAiD;AACjD,oDAAqD;AACrD,oDAAoE;AAEpE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;KAC/F,MAAM,CAAC,gCAAgC,EAAE,0CAA0C,EAAE,QAAQ,CAAC;KAC9F,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,MAAM,IAAA,qBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,oBAAoB;AACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,eAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function initCommand(projectName?: string, intent?: string): Promise<void>;
|
|
1
|
+
export declare function initCommand(projectName?: string, intent?: string, anchorVersion?: string): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkK9G"}
|
package/dist/commands/init.js
CHANGED
|
@@ -6,7 +6,7 @@ const fs_1 = require("fs");
|
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const ascii_js_1 = require("../ascii.js");
|
|
8
8
|
const cpi_js_1 = require("../cpi.js");
|
|
9
|
-
async function initCommand(projectName, intent) {
|
|
9
|
+
async function initCommand(projectName, intent, anchorVersion) {
|
|
10
10
|
console.log(ascii_js_1.logo);
|
|
11
11
|
console.log('FORGE - Solana Development Platform\n');
|
|
12
12
|
const name = projectName || 'forge-project';
|
|
@@ -29,6 +29,26 @@ async function initCommand(projectName, intent) {
|
|
|
29
29
|
console.error('cargo install --git https://github.com/coral-xyz/anchor anchor-cli --tag v0.29.0');
|
|
30
30
|
process.exit(1);
|
|
31
31
|
}
|
|
32
|
+
// Check Rust version for edition 2024 compatibility
|
|
33
|
+
try {
|
|
34
|
+
const rustVersionOutput = (0, child_process_1.execSync)('rustc --version', { encoding: 'utf-8' });
|
|
35
|
+
const rustVersionMatch = rustVersionOutput.match(/rustc (\d+)\.(\d+)\.(\d+)/);
|
|
36
|
+
if (rustVersionMatch) {
|
|
37
|
+
const major = parseInt(rustVersionMatch[1]);
|
|
38
|
+
const minor = parseInt(rustVersionMatch[2]);
|
|
39
|
+
const patch = parseInt(rustVersionMatch[3]);
|
|
40
|
+
// Rust 1.85.0+ required for edition 2024 (stabilized Feb 2025)
|
|
41
|
+
if (major < 1 || (major === 1 && minor < 85)) {
|
|
42
|
+
console.warn('⚠️ WARNING: Rust version too old for modern Anchor dependencies');
|
|
43
|
+
console.warn(` Current: ${major}.${minor}.${patch}, Required: 1.85.0+ (for edition 2024)`);
|
|
44
|
+
console.warn(' Update with: rustup update stable');
|
|
45
|
+
console.warn(' This may cause build failures with "edition2024" errors.\n');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.warn('⚠️ Could not check Rust version. Ensure Rust 1.85.0+ is installed.');
|
|
51
|
+
}
|
|
32
52
|
console.log(`Initializing ${name}...\n`);
|
|
33
53
|
// Create project directory
|
|
34
54
|
const projectPath = (0, path_1.join)(process.cwd(), name);
|
|
@@ -40,9 +60,11 @@ async function initCommand(projectName, intent) {
|
|
|
40
60
|
(0, fs_1.mkdirSync)((0, path_1.join)(projectPath, 'programs', name, 'src'), { recursive: true });
|
|
41
61
|
// Generate program ID (simplified for demo)
|
|
42
62
|
const programId = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS";
|
|
63
|
+
// Create Cargo.toml with specified Anchor version
|
|
64
|
+
const anchorVer = anchorVersion || '0.32.1';
|
|
43
65
|
// Create Anchor.toml with matching CLI version
|
|
44
66
|
const anchorToml = `[toolchain]
|
|
45
|
-
anchor_version = "
|
|
67
|
+
anchor_version = "${anchorVer}"
|
|
46
68
|
|
|
47
69
|
[features]
|
|
48
70
|
seeds = false
|
|
@@ -61,9 +83,8 @@ wallet = "~/.config/solana/id.json"
|
|
|
61
83
|
[scripts]
|
|
62
84
|
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"
|
|
63
85
|
`;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
anchor-spl = "0.32.1"`;
|
|
86
|
+
let dependencies = `anchor-lang = "${anchorVer}"
|
|
87
|
+
anchor-spl = "${anchorVer}"`;
|
|
67
88
|
// Add CPI-specific dependencies
|
|
68
89
|
if (cpiCode) {
|
|
69
90
|
if (cpiCode.imports.some(imp => imp.includes('mpl_token_metadata'))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BnD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuFnD"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,9 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateCommand = updateCommand;
|
|
3
4
|
exports.statusCommand = statusCommand;
|
|
4
5
|
const child_process_1 = require("child_process");
|
|
5
6
|
const fs_1 = require("fs");
|
|
6
7
|
const path_1 = require("path");
|
|
8
|
+
// Update command for self-updating FORGE
|
|
9
|
+
async function updateCommand() {
|
|
10
|
+
console.log('FORGE Update Check\n');
|
|
11
|
+
try {
|
|
12
|
+
// Get current version
|
|
13
|
+
const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../../package.json'), 'utf8'));
|
|
14
|
+
const currentVersion = packageJson.version;
|
|
15
|
+
console.log(`Current version: ${currentVersion}`);
|
|
16
|
+
// Get latest version from npm
|
|
17
|
+
const latestVersion = (0, child_process_1.execSync)('npm view forge-solana-sdk version', { encoding: 'utf8' }).trim();
|
|
18
|
+
console.log(`Latest version: ${latestVersion}`);
|
|
19
|
+
if (currentVersion === latestVersion) {
|
|
20
|
+
console.log('✅ FORGE is up to date!');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
console.log('\n📦 Updating FORGE...');
|
|
24
|
+
(0, child_process_1.execSync)('npm install -g forge-solana-sdk@latest', { stdio: 'inherit' });
|
|
25
|
+
console.log('\n✅ FORGE updated successfully!');
|
|
26
|
+
console.log(`Updated from ${currentVersion} to ${latestVersion}`);
|
|
27
|
+
console.log('\nRestart your terminal or run: source ~/.bashrc (or equivalent)');
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('❌ Update failed. Try manually: npm install -g forge-solana-sdk@latest');
|
|
31
|
+
console.error('Error:', error instanceof Error ? error.message : String(error));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
7
34
|
async function statusCommand() {
|
|
8
35
|
console.log('FORGE Status\n');
|
|
9
36
|
// Check Anchor
|
|
@@ -24,8 +51,18 @@ async function statusCommand() {
|
|
|
24
51
|
}
|
|
25
52
|
// Check Rust
|
|
26
53
|
try {
|
|
27
|
-
const
|
|
54
|
+
const rustVersionOutput = (0, child_process_1.execSync)('rustc --version', { encoding: 'utf8' }).trim();
|
|
55
|
+
const rustVersion = rustVersionOutput.split(' ')[1];
|
|
28
56
|
console.log(`✅ Rust: ${rustVersion}`);
|
|
57
|
+
// Check for edition 2024 compatibility
|
|
58
|
+
const versionMatch = rustVersionOutput.match(/rustc (\d+)\.(\d+)\.(\d+)/);
|
|
59
|
+
if (versionMatch) {
|
|
60
|
+
const major = parseInt(versionMatch[1]);
|
|
61
|
+
const minor = parseInt(versionMatch[2]);
|
|
62
|
+
if (major < 1 || (major === 1 && minor < 85)) {
|
|
63
|
+
console.log('⚠️ WARNING: Rust 1.85.0+ required for edition 2024 (update: rustup update stable)');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
29
66
|
}
|
|
30
67
|
catch (error) {
|
|
31
68
|
console.log('❌ Rust: Not found');
|
|
@@ -38,6 +75,37 @@ async function statusCommand() {
|
|
|
38
75
|
const config = (0, fs_1.readFileSync)(anchorToml, 'utf8');
|
|
39
76
|
const network = config.includes('devnet') ? 'devnet' : 'localnet';
|
|
40
77
|
console.log(`📡 Network: ${network}`);
|
|
78
|
+
// Check version compatibility
|
|
79
|
+
const anchorTomlMatch = config.match(/anchor_version\s*=\s*"([^"]+)"/);
|
|
80
|
+
if (anchorTomlMatch) {
|
|
81
|
+
const projectAnchorVersion = anchorTomlMatch[1];
|
|
82
|
+
console.log(`🔗 Project Anchor version: ${projectAnchorVersion}`);
|
|
83
|
+
// Check if it matches CLI
|
|
84
|
+
try {
|
|
85
|
+
const cliVersionOutput = (0, child_process_1.execSync)('anchor --version', { encoding: 'utf8' });
|
|
86
|
+
const cliVersionMatch = cliVersionOutput.match(/anchor-cli (\d+\.\d+\.\d+)/);
|
|
87
|
+
if (cliVersionMatch && cliVersionMatch[1] !== projectAnchorVersion) {
|
|
88
|
+
console.log(`⚠️ Version mismatch: CLI ${cliVersionMatch[1]} vs Project ${projectAnchorVersion}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// CLI check already handled above
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Check Cargo.toml versions
|
|
96
|
+
const cargoToml = (0, path_1.join)(process.cwd(), 'programs', 'Cargo.toml');
|
|
97
|
+
if ((0, fs_1.existsSync)(cargoToml)) {
|
|
98
|
+
try {
|
|
99
|
+
const cargoContent = (0, fs_1.readFileSync)(cargoToml, 'utf8');
|
|
100
|
+
const anchorLangMatch = cargoContent.match(/anchor-lang\s*=\s*"([^"]+)"/);
|
|
101
|
+
if (anchorLangMatch) {
|
|
102
|
+
console.log(`📦 anchor-lang: ${anchorLangMatch[1]}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
// Ignore read errors
|
|
107
|
+
}
|
|
108
|
+
}
|
|
41
109
|
}
|
|
42
110
|
catch (error) {
|
|
43
111
|
console.log('📡 Network: Unknown');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|