forge-solana-sdk 2.0.3 → 2.1.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/dist/cli.js CHANGED
@@ -14,8 +14,9 @@ program
14
14
  program
15
15
  .command('init [projectName]')
16
16
  .description('Initialize a new FORGE project')
17
- .action(async (projectName) => {
18
- await (0, init_js_1.initCommand)(projectName);
17
+ .option('-i, --intent <intent>', 'Describe what the program should do (enables CPI generation)')
18
+ .action(async (projectName, options) => {
19
+ await (0, init_js_1.initCommand)(projectName, options.intent);
19
20
  });
20
21
  program
21
22
  .command('deploy')
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,oDAAqD;AAErD,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,KAAK,EAAE,WAAW,EAAE,EAAE;IAC5B,MAAM,IAAA,qBAAW,EAAC,WAAW,CAAC,CAAC;AACjC,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,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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAAkC;AAClC,gDAAiD;AACjD,oDAAqD;AACrD,oDAAqD;AAErD,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,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,MAAM,IAAA,qBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACjD,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,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"}
@@ -1,2 +1,2 @@
1
- export declare function initCommand(projectName?: string): Promise<void>;
1
+ export declare function initCommand(projectName?: string, intent?: 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":"AAKA,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGrE"}
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,CA4ItF"}
@@ -5,10 +5,21 @@ const child_process_1 = require("child_process");
5
5
  const fs_1 = require("fs");
6
6
  const path_1 = require("path");
7
7
  const ascii_js_1 = require("../ascii.js");
8
- async function initCommand(projectName) {
8
+ const cpi_js_1 = require("../cpi.js");
9
+ async function initCommand(projectName, intent) {
9
10
  console.log(ascii_js_1.logo);
10
11
  console.log('FORGE - Solana Development Platform\n');
11
12
  const name = projectName || 'forge-project';
13
+ // Detect CPI patterns from intent
14
+ let cpiCode = null;
15
+ if (intent) {
16
+ console.log(`Analyzing intent: "${intent}"`);
17
+ const detections = (0, cpi_js_1.detectCPI)(intent);
18
+ if (detections.length > 0) {
19
+ console.log(`Detected CPI patterns: ${detections.map(d => d.type).join(', ')}`);
20
+ cpiCode = (0, cpi_js_1.generateCPICode)(detections);
21
+ }
22
+ }
12
23
  // Check if Anchor is installed
13
24
  try {
14
25
  (0, child_process_1.execSync)('anchor --version', { stdio: 'pipe' });
@@ -50,7 +61,16 @@ wallet = "~/.config/solana/id.json"
50
61
  [scripts]
51
62
  test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"
52
63
  `;
53
- // Create Cargo.toml
64
+ // Create Cargo.toml with latest Anchor ecosystem (0.31+)
65
+ let dependencies = `anchor-lang = "0.31.0"
66
+ anchor-spl = "0.31.0"`;
67
+ // Add CPI-specific dependencies
68
+ if (cpiCode) {
69
+ if (cpiCode.imports.some(imp => imp.includes('mpl_token_metadata'))) {
70
+ dependencies += `
71
+ mpl-token-metadata = { version = "5", features = ["no-entrypoint"] }`;
72
+ }
73
+ }
54
74
  const cargoToml = `[package]
55
75
  name = "${name}"
56
76
  version = "0.1.0"
@@ -65,14 +85,24 @@ no-entrypoint = []
65
85
  no-idl = []
66
86
  no-log-ix-name = []
67
87
  cpi = ["no-entrypoint"]
88
+ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"]
68
89
  default = []
69
90
 
70
91
  [dependencies]
71
- anchor-lang = "0.29.0"
72
- anchor-spl = "0.29.0"
92
+ ${dependencies}
73
93
  `;
74
- // Create lib.rs
75
- const libRs = `use anchor_lang::prelude::*;
94
+ // Generate imports and CPI code
95
+ let imports = `use anchor_lang::prelude::*;`;
96
+ let cpiImports = '';
97
+ let cpiCodeBlock = '';
98
+ let extraAccounts = '';
99
+ if (cpiCode) {
100
+ cpiImports = '\n' + cpiCode.imports.join('\n');
101
+ cpiCodeBlock = `\n\n ${cpiCode.code}`;
102
+ extraAccounts = '\n' + cpiCode.accounts.accounts.map(acc => ` ${acc},`).join('\n');
103
+ }
104
+ // Create lib.rs with CPI support
105
+ const libRs = `${imports}${cpiImports}
76
106
 
77
107
  declare_id!("${programId}");
78
108
 
@@ -80,14 +110,17 @@ declare_id!("${programId}");
80
110
  pub mod ${name.replace(/-/g, '_')} {
81
111
  use super::*;
82
112
 
83
- pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
84
- msg!("Program initialized!");
113
+ pub fn process_intent(ctx: Context<ProcessIntent>) -> Result<()> {
114
+ msg!("Processing intent...");${cpiCodeBlock}
115
+
116
+ msg!("Intent processed successfully!");
85
117
  Ok(())
86
118
  }
87
119
  }
88
120
 
89
121
  #[derive(Accounts)]
90
- pub struct Initialize {}
122
+ pub struct ProcessIntent {${extraAccounts}
123
+ }
91
124
  `;
92
125
  // Write files
93
126
  (0, fs_1.writeFileSync)((0, path_1.join)(projectPath, 'Anchor.toml'), anchorToml);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;AAKA,kCAuGC;AA5GD,iDAAyC;AACzC,2BAA0D;AAC1D,+BAA4B;AAC5B,0CAAmC;AAE5B,KAAK,UAAU,WAAW,CAAC,WAAoB;IACpD,OAAO,CAAC,GAAG,CAAC,eAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,WAAW,IAAI,eAAe,CAAC;IAE5C,+BAA+B;IAC/B,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,iBAAiB,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAA,cAAS,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,4CAA4C;IAC5C,MAAM,SAAS,GAAG,8CAA8C,CAAC;IAEjE,qBAAqB;IACrB,MAAM,UAAU,GAAG;;;;;;;;EAQnB,IAAI,OAAO,SAAS;;;;;;;;;;;CAWrB,CAAC;IAEA,oBAAoB;IACpB,MAAM,SAAS,GAAG;UACV,IAAI;;;;;;UAMJ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;;;;CAYhC,CAAC;IAEA,gBAAgB;IAChB,MAAM,KAAK,GAAG;;eAED,SAAS;;;UAGd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;;;CAWhC,CAAC;IAEA,cAAc;IACd,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5E,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/cpi.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ export interface CPIDetection {
2
+ type: 'system_transfer' | 'token_mint' | 'token_transfer' | 'token_burn' | 'create_ata' | 'create_metadata';
3
+ confidence: number;
4
+ params?: Record<string, any>;
5
+ }
6
+ export interface CPIAccounts {
7
+ accounts: string[];
8
+ constraints: string[];
9
+ }
10
+ export interface CPICode {
11
+ imports: string[];
12
+ code: string;
13
+ accounts: CPIAccounts;
14
+ }
15
+ /**
16
+ * Detect CPI patterns in intent strings
17
+ */
18
+ export declare function detectCPI(intent: string): CPIDetection[];
19
+ /**
20
+ * Generate CPI code for detected patterns
21
+ */
22
+ export declare function generateCPICode(detections: CPIDetection[]): CPICode;
23
+ //# sourceMappingURL=cpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpi.d.ts","sourceRoot":"","sources":["../src/cpi.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,iBAAiB,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,GAAG,iBAAiB,CAAC;IAC5G,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CA8DxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAwBnE"}
package/dist/cpi.js ADDED
@@ -0,0 +1,348 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectCPI = detectCPI;
4
+ exports.generateCPICode = generateCPICode;
5
+ /**
6
+ * Detect CPI patterns in intent strings
7
+ */
8
+ function detectCPI(intent) {
9
+ const detections = [];
10
+ const lowerIntent = intent.toLowerCase();
11
+ // System Program - SOL/lamports transfer
12
+ if (/\b(transfer|send)\b.*\b(sol|lamports)\b/.test(lowerIntent)) {
13
+ detections.push({
14
+ type: 'system_transfer',
15
+ confidence: 0.9,
16
+ params: { amount: extractAmount(lowerIntent) }
17
+ });
18
+ }
19
+ // SPL Token - Mint
20
+ if (/\b(mint|create)\b.*\b(token|tokens)\b/.test(lowerIntent)) {
21
+ detections.push({
22
+ type: 'token_mint',
23
+ confidence: 0.8,
24
+ params: { amount: extractAmount(lowerIntent) }
25
+ });
26
+ }
27
+ // SPL Token - Transfer
28
+ if (/\b(transfer|send)\b.*\b(token|tokens)\b/.test(lowerIntent)) {
29
+ detections.push({
30
+ type: 'token_transfer',
31
+ confidence: 0.8,
32
+ params: { amount: extractAmount(lowerIntent) }
33
+ });
34
+ }
35
+ // SPL Token - Burn
36
+ if (/\b(burn|destroy)\b.*\b(token|tokens)\b/.test(lowerIntent)) {
37
+ detections.push({
38
+ type: 'token_burn',
39
+ confidence: 0.7,
40
+ params: { amount: extractAmount(lowerIntent) }
41
+ });
42
+ }
43
+ // Associated Token Account - Create
44
+ if (/\b(create|make)\b.*\b(ata|associated.*token)\b/.test(lowerIntent)) {
45
+ detections.push({
46
+ type: 'create_ata',
47
+ confidence: 0.9
48
+ });
49
+ }
50
+ // Token Metadata - Create
51
+ if (/\b(metadata|nft|name|symbol|uri)\b/.test(lowerIntent) && /\b(create|set|attach)\b/.test(lowerIntent)) {
52
+ detections.push({
53
+ type: 'create_metadata',
54
+ confidence: 0.7,
55
+ params: {
56
+ name: extractMetadataField(lowerIntent, 'name'),
57
+ symbol: extractMetadataField(lowerIntent, 'symbol'),
58
+ uri: extractMetadataField(lowerIntent, 'uri')
59
+ }
60
+ });
61
+ }
62
+ return detections.sort((a, b) => b.confidence - a.confidence);
63
+ }
64
+ /**
65
+ * Generate CPI code for detected patterns
66
+ */
67
+ function generateCPICode(detections) {
68
+ const imports = new Set();
69
+ const codeBlocks = [];
70
+ const allAccounts = [];
71
+ const allConstraints = [];
72
+ for (const detection of detections) {
73
+ const cpiCode = generateSingleCPI(detection);
74
+ if (cpiCode) {
75
+ cpiCode.imports.forEach(imp => imports.add(imp));
76
+ codeBlocks.push(cpiCode.code);
77
+ allAccounts.push(...cpiCode.accounts.accounts);
78
+ allConstraints.push(...cpiCode.accounts.constraints);
79
+ }
80
+ }
81
+ return {
82
+ imports: Array.from(imports),
83
+ code: codeBlocks.join('\n\n '),
84
+ accounts: {
85
+ accounts: [...new Set(allAccounts)],
86
+ constraints: [...new Set(allConstraints)]
87
+ }
88
+ };
89
+ }
90
+ /**
91
+ * Generate code for a single CPI
92
+ */
93
+ function generateSingleCPI(detection) {
94
+ switch (detection.type) {
95
+ case 'system_transfer':
96
+ return generateSystemTransferCPI(detection.params);
97
+ case 'token_mint':
98
+ return generateTokenMintCPI(detection.params);
99
+ case 'token_transfer':
100
+ return generateTokenTransferCPI(detection.params);
101
+ case 'token_burn':
102
+ return generateTokenBurnCPI(detection.params);
103
+ case 'create_ata':
104
+ return generateCreateATACPI();
105
+ case 'create_metadata':
106
+ return generateCreateMetadataCPI(detection.params);
107
+ default:
108
+ return null;
109
+ }
110
+ }
111
+ /**
112
+ * Generate System Program transfer CPI
113
+ */
114
+ function generateSystemTransferCPI(params) {
115
+ const amount = params?.amount || 'amount';
116
+ return {
117
+ imports: ['use anchor_lang::system_program;'],
118
+ code: `// CPI: Transfer SOL/lamports via System Program
119
+ system_program::transfer(
120
+ CpiContext::new(
121
+ ctx.accounts.system_program.to_account_info(),
122
+ system_program::Transfer {
123
+ from: ctx.accounts.from.to_account_info(),
124
+ to: ctx.accounts.to.to_account_info(),
125
+ },
126
+ ),
127
+ ${amount},
128
+ )?;`,
129
+ accounts: {
130
+ accounts: ['system_program: SystemProgram'],
131
+ constraints: []
132
+ }
133
+ };
134
+ }
135
+ /**
136
+ * Generate SPL Token mint CPI (Token-2022 compatible, modern)
137
+ */
138
+ function generateTokenMintCPI(params) {
139
+ const amount = params?.amount || 'amount';
140
+ return {
141
+ imports: [
142
+ 'use anchor_spl::token_interface::{self, InterfaceAccount, Interface, Mint, TokenAccount, TokenInterface, MintTo};'
143
+ ],
144
+ code: `// CPI: Mint with PDA signer
145
+ token_interface::mint_to(
146
+ CpiContext::new_with_signer(
147
+ ctx.accounts.token_program.to_account_info(),
148
+ MintTo {
149
+ mint: ctx.accounts.mint.to_account_info(),
150
+ to: ctx.accounts.to.to_account_info(),
151
+ authority: ctx.accounts.mint_authority.to_account_info(),
152
+ },
153
+ &[&[b"mint_auth", &[ctx.bumps.mint_authority]]],
154
+ ),
155
+ ${amount},
156
+ )?;`,
157
+ accounts: {
158
+ accounts: [
159
+ '#[account(mut)] pub mint: InterfaceAccount<Mint>',
160
+ '#[account(mut)] pub to: InterfaceAccount<TokenAccount>',
161
+ 'pub mint_authority: Signer',
162
+ 'pub token_program: Interface<TokenInterface>'
163
+ ],
164
+ constraints: []
165
+ }
166
+ };
167
+ }
168
+ /**
169
+ * Generate SPL Token transfer CPI (Token-2022 compatible, modern)
170
+ */
171
+ function generateTokenTransferCPI(params) {
172
+ const amount = params?.amount || 'amount';
173
+ return {
174
+ imports: [
175
+ 'use anchor_spl::token_interface::{self, InterfaceAccount, Interface, TokenAccount, Mint, TokenInterface, TransferChecked};'
176
+ ],
177
+ code: `// CPI: Safe transfer with decimals check (works Token + Token-2022)
178
+ let decimals = ctx.accounts.mint.decimals;
179
+ token_interface::transfer_checked(
180
+ CpiContext::new(
181
+ ctx.accounts.token_program.to_account_info(),
182
+ TransferChecked {
183
+ from: ctx.accounts.from.to_account_info(),
184
+ mint: ctx.accounts.mint.to_account_info(),
185
+ to: ctx.accounts.to.to_account_info(),
186
+ authority: ctx.accounts.authority.to_account_info(),
187
+ },
188
+ ),
189
+ ${amount},
190
+ decimals,
191
+ )?;`,
192
+ accounts: {
193
+ accounts: [
194
+ '#[account(mut)] pub from: InterfaceAccount<TokenAccount>',
195
+ '#[account(mut)] pub to: InterfaceAccount<TokenAccount>',
196
+ 'pub mint: InterfaceAccount<Mint>',
197
+ 'pub authority: Signer',
198
+ 'pub token_program: Interface<TokenInterface>'
199
+ ],
200
+ constraints: []
201
+ }
202
+ };
203
+ }
204
+ /**
205
+ * Generate SPL Token burn CPI
206
+ */
207
+ function generateTokenBurnCPI(params) {
208
+ const amount = params?.amount || 'amount';
209
+ return {
210
+ imports: ['use anchor_spl::token::{self, Burn};'],
211
+ code: `// CPI: Burn tokens via SPL Token Program
212
+ token::burn(
213
+ CpiContext::new(
214
+ ctx.accounts.token_program.to_account_info(),
215
+ Burn {
216
+ mint: ctx.accounts.mint.to_account_info(),
217
+ from: ctx.accounts.token_account.to_account_info(),
218
+ authority: ctx.accounts.authority.to_account_info(),
219
+ },
220
+ ),
221
+ ${amount},
222
+ )?;`,
223
+ accounts: {
224
+ accounts: ['token_program: TokenProgram'],
225
+ constraints: []
226
+ }
227
+ };
228
+ }
229
+ /**
230
+ * Generate Associated Token Account creation CPI
231
+ */
232
+ function generateCreateATACPI() {
233
+ return {
234
+ imports: ['use anchor_spl::associated_token::{self, Create};'],
235
+ code: `// CPI: Create Associated Token Account
236
+ associated_token::create(
237
+ CpiContext::new(
238
+ ctx.accounts.associated_token_program.to_account_info(),
239
+ Create {
240
+ payer: ctx.accounts.payer.to_account_info(),
241
+ associated_token: ctx.accounts.ata.to_account_info(),
242
+ authority: ctx.accounts.authority.to_account_info(),
243
+ mint: ctx.accounts.mint.to_account_info(),
244
+ system_program: ctx.accounts.system_program.to_account_info(),
245
+ token_program: ctx.accounts.token_program.to_account_info(),
246
+ },
247
+ ),
248
+ )?;`,
249
+ accounts: {
250
+ accounts: [
251
+ 'associated_token_program: AssociatedTokenProgram',
252
+ 'token_program: TokenProgram',
253
+ 'system_program: SystemProgram'
254
+ ],
255
+ constraints: [
256
+ 'associated_token::mint = mint',
257
+ 'associated_token::authority = authority'
258
+ ]
259
+ }
260
+ };
261
+ }
262
+ /**
263
+ * Generate Token Metadata creation CPI (modern DataV2 pattern)
264
+ */
265
+ function generateCreateMetadataCPI(params) {
266
+ const name = params?.name ? `"${params.name}"` : '"Token Name"';
267
+ const symbol = params?.symbol ? `"${params.symbol}"` : '"TKN"';
268
+ const uri = params?.uri ? `"${params.uri}"` : '"https://example.com/metadata.json"';
269
+ return {
270
+ imports: [
271
+ 'use mpl_token_metadata::instruction::create_metadata_accounts_v3;',
272
+ 'use mpl_token_metadata::types::DataV2;'
273
+ ],
274
+ code: `// CPI: Create Token Metadata
275
+ let data = DataV2 {
276
+ name: ${name}.to_string(),
277
+ symbol: ${symbol}.to_string(),
278
+ uri: ${uri}.to_string(),
279
+ seller_fee_basis_points: 500,
280
+ creators: None,
281
+ collection: None,
282
+ uses: None,
283
+ };
284
+
285
+ let ix = create_metadata_accounts_v3(
286
+ ctx.accounts.token_metadata_program.key(),
287
+ ctx.accounts.metadata.key(),
288
+ ctx.accounts.mint.key(),
289
+ ctx.accounts.mint_authority.key(),
290
+ ctx.accounts.payer.key(),
291
+ ctx.accounts.update_authority.key(),
292
+ data.name,
293
+ data.symbol,
294
+ data.uri,
295
+ data.creators,
296
+ data.seller_fee_basis_points,
297
+ true, // update_authority_is_signer
298
+ true, // is_mutable
299
+ data.collection,
300
+ data.uses,
301
+ None, // collection_details
302
+ );
303
+
304
+ anchor_lang::solana_program::program::invoke(
305
+ &ix,
306
+ &[
307
+ ctx.accounts.metadata.to_account_info(),
308
+ ctx.accounts.mint.to_account_info(),
309
+ ctx.accounts.mint_authority.to_account_info(),
310
+ ctx.accounts.payer.to_account_info(),
311
+ ctx.accounts.update_authority.to_account_info(),
312
+ ctx.accounts.token_metadata_program.to_account_info(),
313
+ ctx.accounts.system_program.to_account_info(),
314
+ ctx.accounts.rent.to_account_info(),
315
+ ],
316
+ )?;`,
317
+ accounts: {
318
+ accounts: [
319
+ 'metadata: AccountInfo',
320
+ 'token_metadata_program: AccountInfo',
321
+ 'system_program: SystemProgram',
322
+ 'rent: SysvarRent'
323
+ ],
324
+ constraints: []
325
+ }
326
+ };
327
+ }
328
+ /**
329
+ * Extract amount from intent string
330
+ */
331
+ function extractAmount(intent) {
332
+ const amountMatch = intent.match(/(\d+)/);
333
+ return amountMatch ? amountMatch[1] : 'amount';
334
+ }
335
+ /**
336
+ * Extract metadata fields from intent string
337
+ */
338
+ function extractMetadataField(intent, field) {
339
+ // Simple extraction - could be enhanced with better parsing
340
+ const patterns = {
341
+ name: /(?:name|title)[:\s]+["']([^"']+)["']/i,
342
+ symbol: /symbol[:\s]+["']([^"']+)["']/i,
343
+ uri: /uri[:\s]+["']([^"'\s]+)["']/i
344
+ };
345
+ const match = intent.match(patterns[field]);
346
+ return match ? match[1] : '';
347
+ }
348
+ //# sourceMappingURL=cpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpi.js","sourceRoot":"","sources":["../src/cpi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forge-solana-sdk",
3
- "version": "2.0.3",
3
+ "version": "2.1.0",
4
4
  "description": "FORGE - Intent-driven app assembly on Solana",
5
5
  "main": "dist/index.js",
6
6
  "bin": {