@5ive-tech/cli 1.0.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.
Files changed (139) hide show
  1. package/README.md +226 -0
  2. package/dist/assets/vm/five_vm_wasm.d.ts +762 -0
  3. package/dist/assets/vm/five_vm_wasm.js +3754 -0
  4. package/dist/assets/vm/five_vm_wasm_bg.wasm +0 -0
  5. package/dist/assets/vm/five_vm_wasm_bg.wasm.d.ts +247 -0
  6. package/dist/assets/vm/package.json +11 -0
  7. package/dist/cli.d.ts +47 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +343 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/commands/analyze.d.ts +3 -0
  12. package/dist/commands/analyze.d.ts.map +1 -0
  13. package/dist/commands/analyze.js +435 -0
  14. package/dist/commands/analyze.js.map +1 -0
  15. package/dist/commands/build.d.ts +3 -0
  16. package/dist/commands/build.d.ts.map +1 -0
  17. package/dist/commands/build.js +66 -0
  18. package/dist/commands/build.js.map +1 -0
  19. package/dist/commands/compile.d.ts +3 -0
  20. package/dist/commands/compile.d.ts.map +1 -0
  21. package/dist/commands/compile.js +872 -0
  22. package/dist/commands/compile.js.map +1 -0
  23. package/dist/commands/config.d.ts +3 -0
  24. package/dist/commands/config.d.ts.map +1 -0
  25. package/dist/commands/config.js +431 -0
  26. package/dist/commands/config.js.map +1 -0
  27. package/dist/commands/deploy-and-execute.d.ts +3 -0
  28. package/dist/commands/deploy-and-execute.d.ts.map +1 -0
  29. package/dist/commands/deploy-and-execute.js +317 -0
  30. package/dist/commands/deploy-and-execute.js.map +1 -0
  31. package/dist/commands/deploy.d.ts +21 -0
  32. package/dist/commands/deploy.d.ts.map +1 -0
  33. package/dist/commands/deploy.js +806 -0
  34. package/dist/commands/deploy.js.map +1 -0
  35. package/dist/commands/donate.d.ts +4 -0
  36. package/dist/commands/donate.d.ts.map +1 -0
  37. package/dist/commands/donate.js +104 -0
  38. package/dist/commands/donate.js.map +1 -0
  39. package/dist/commands/execute.d.ts +6 -0
  40. package/dist/commands/execute.d.ts.map +1 -0
  41. package/dist/commands/execute.js +749 -0
  42. package/dist/commands/execute.js.map +1 -0
  43. package/dist/commands/fmt.d.ts +3 -0
  44. package/dist/commands/fmt.d.ts.map +1 -0
  45. package/dist/commands/fmt.js +327 -0
  46. package/dist/commands/fmt.js.map +1 -0
  47. package/dist/commands/help.d.ts +6 -0
  48. package/dist/commands/help.d.ts.map +1 -0
  49. package/dist/commands/help.js +224 -0
  50. package/dist/commands/help.js.map +1 -0
  51. package/dist/commands/index.d.ts +45 -0
  52. package/dist/commands/index.d.ts.map +1 -0
  53. package/dist/commands/index.js +119 -0
  54. package/dist/commands/index.js.map +1 -0
  55. package/dist/commands/init.d.ts +3 -0
  56. package/dist/commands/init.d.ts.map +1 -0
  57. package/dist/commands/init.js +887 -0
  58. package/dist/commands/init.js.map +1 -0
  59. package/dist/commands/local.d.ts +3 -0
  60. package/dist/commands/local.d.ts.map +1 -0
  61. package/dist/commands/local.js +703 -0
  62. package/dist/commands/local.js.map +1 -0
  63. package/dist/commands/namespace.d.ts +3 -0
  64. package/dist/commands/namespace.d.ts.map +1 -0
  65. package/dist/commands/namespace.js +328 -0
  66. package/dist/commands/namespace.js.map +1 -0
  67. package/dist/commands/template.d.ts +4 -0
  68. package/dist/commands/template.d.ts.map +1 -0
  69. package/dist/commands/template.js +486 -0
  70. package/dist/commands/template.js.map +1 -0
  71. package/dist/commands/test.d.ts +6 -0
  72. package/dist/commands/test.d.ts.map +1 -0
  73. package/dist/commands/test.js +890 -0
  74. package/dist/commands/test.js.map +1 -0
  75. package/dist/commands/version.d.ts +6 -0
  76. package/dist/commands/version.d.ts.map +1 -0
  77. package/dist/commands/version.js +339 -0
  78. package/dist/commands/version.js.map +1 -0
  79. package/dist/config/ConfigManager.d.ts +69 -0
  80. package/dist/config/ConfigManager.d.ts.map +1 -0
  81. package/dist/config/ConfigManager.js +261 -0
  82. package/dist/config/ConfigManager.js.map +1 -0
  83. package/dist/config/index.d.ts +10 -0
  84. package/dist/config/index.d.ts.map +1 -0
  85. package/dist/config/index.js +21 -0
  86. package/dist/config/index.js.map +1 -0
  87. package/dist/config/types.d.ts +35 -0
  88. package/dist/config/types.d.ts.map +1 -0
  89. package/dist/config/types.js +105 -0
  90. package/dist/config/types.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +29 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/project/ProjectLoader.d.ts +12 -0
  96. package/dist/project/ProjectLoader.d.ts.map +1 -0
  97. package/dist/project/ProjectLoader.js +115 -0
  98. package/dist/project/ProjectLoader.js.map +1 -0
  99. package/dist/types.d.ts +334 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +2 -0
  102. package/dist/types.js.map +1 -0
  103. package/dist/utils/AccountFixtureGenerator.d.ts +48 -0
  104. package/dist/utils/AccountFixtureGenerator.d.ts.map +1 -0
  105. package/dist/utils/AccountFixtureGenerator.js +265 -0
  106. package/dist/utils/AccountFixtureGenerator.js.map +1 -0
  107. package/dist/utils/FiveFileManager.d.ts +96 -0
  108. package/dist/utils/FiveFileManager.d.ts.map +1 -0
  109. package/dist/utils/FiveFileManager.js +329 -0
  110. package/dist/utils/FiveFileManager.js.map +1 -0
  111. package/dist/utils/ascii-art.d.ts +72 -0
  112. package/dist/utils/ascii-art.d.ts.map +1 -0
  113. package/dist/utils/ascii-art.js +314 -0
  114. package/dist/utils/ascii-art.js.map +1 -0
  115. package/dist/utils/cli-ui.d.ts +39 -0
  116. package/dist/utils/cli-ui.d.ts.map +1 -0
  117. package/dist/utils/cli-ui.js +75 -0
  118. package/dist/utils/cli-ui.js.map +1 -0
  119. package/dist/utils/fileUtils.d.ts +25 -0
  120. package/dist/utils/fileUtils.d.ts.map +1 -0
  121. package/dist/utils/fileUtils.js +50 -0
  122. package/dist/utils/fileUtils.js.map +1 -0
  123. package/dist/utils/logger.d.ts +53 -0
  124. package/dist/utils/logger.d.ts.map +1 -0
  125. package/dist/utils/logger.js +287 -0
  126. package/dist/utils/logger.js.map +1 -0
  127. package/dist/wasm/compiler.d.ts +101 -0
  128. package/dist/wasm/compiler.d.ts.map +1 -0
  129. package/dist/wasm/compiler.js +906 -0
  130. package/dist/wasm/compiler.js.map +1 -0
  131. package/dist/wasm/loader.d.ts +2 -0
  132. package/dist/wasm/loader.d.ts.map +1 -0
  133. package/dist/wasm/loader.js +90 -0
  134. package/dist/wasm/loader.js.map +1 -0
  135. package/dist/wasm/vm.d.ts +32 -0
  136. package/dist/wasm/vm.d.ts.map +1 -0
  137. package/dist/wasm/vm.js +440 -0
  138. package/dist/wasm/vm.js.map +1 -0
  139. package/package.json +100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/wasm/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getWasmModule(): Promise<any>;
2
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/wasm/loader.ts"],"names":[],"mappings":"AASA,wBAAsB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,CAqFlD"}
@@ -0,0 +1,90 @@
1
+ // WASM loader for Five VM.
2
+ let wasmModule = null;
3
+ import { existsSync, readFileSync } from 'fs';
4
+ import { dirname, resolve } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import { ConfigManager } from '../config/ConfigManager.js';
7
+ export async function getWasmModule() {
8
+ if (wasmModule) {
9
+ return wasmModule;
10
+ }
11
+ // Build candidate list from config and sensible defaults
12
+ const cfg = await ConfigManager.getInstance().get();
13
+ const prefer = cfg.wasm?.loader || 'auto';
14
+ const configured = Array.isArray(cfg.wasm?.modulePaths) ? cfg.wasm.modulePaths : [];
15
+ const nodeCandidates = [
16
+ // Prefer top-level dist bundle (node-friendly loader)
17
+ '../../five_vm_wasm.js',
18
+ '../five_vm_wasm.js',
19
+ ];
20
+ const bundlerCandidates = [
21
+ // Then fall back to assets copies (may require bundler, not Node)
22
+ '../../assets/vm/five_vm_wasm.js',
23
+ '../assets/vm/five_vm_wasm.js',
24
+ ];
25
+ let candidates = [];
26
+ // Prepend any user-configured paths
27
+ candidates.push(...configured);
28
+ if (prefer === 'node') {
29
+ candidates.push(...nodeCandidates);
30
+ }
31
+ else if (prefer === 'bundler') {
32
+ candidates.push(...bundlerCandidates);
33
+ }
34
+ else {
35
+ candidates.push(...nodeCandidates, ...bundlerCandidates);
36
+ }
37
+ const tried = [];
38
+ for (const candidate of candidates) {
39
+ try {
40
+ // eslint-disable-next-line no-await-in-loop
41
+ const mod = await import(candidate);
42
+ // If initSync is available, prefer initializing with local file bytes to avoid fetch/file URL issues
43
+ if (mod && typeof mod.initSync === 'function') {
44
+ try {
45
+ const here = dirname(fileURLToPath(import.meta.url));
46
+ const wasmFiles = [
47
+ resolve(here, '../five_vm_wasm_bg.wasm'),
48
+ resolve(here, '../../five_vm_wasm_bg.wasm'),
49
+ resolve(here, '../assets/vm/five_vm_wasm_bg.wasm'),
50
+ resolve(here, '../../assets/vm/five_vm_wasm_bg.wasm'),
51
+ ];
52
+ for (const wf of wasmFiles) {
53
+ if (existsSync(wf)) {
54
+ // eslint-disable-next-line no-await-in-loop
55
+ mod.initSync(readFileSync(wf));
56
+ break;
57
+ }
58
+ }
59
+ }
60
+ catch (syncErr) {
61
+ tried.push({ path: candidate, error: syncErr });
62
+ }
63
+ }
64
+ // Initialize node-friendly wasm-pack bundle if it exposes a default init (fallback)
65
+ if (mod && typeof mod.default === 'function') {
66
+ try {
67
+ // eslint-disable-next-line no-await-in-loop
68
+ await mod.default();
69
+ }
70
+ catch (initErr) {
71
+ tried.push({ path: candidate, error: initErr });
72
+ }
73
+ }
74
+ if (mod) {
75
+ wasmModule = mod;
76
+ return wasmModule;
77
+ }
78
+ tried.push({ path: candidate, error: 'Module import returned null/undefined' });
79
+ }
80
+ catch (e) {
81
+ tried.push({ path: candidate, error: e });
82
+ }
83
+ }
84
+ const attempted = tried
85
+ .map(t => ` - ${t.path}: ${t.error instanceof Error ? t.error.message : String(t.error)}`)
86
+ .join('\n');
87
+ console.error('Fatal Error: Could not load the Five VM WASM module. Tried:\n' + attempted);
88
+ throw new Error(`Five VM WASM module not found or failed to load. Please run "npm run build:wasm" to build the required WebAssembly module.`);
89
+ }
90
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/wasm/loader.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,IAAI,UAAU,GAAQ,IAAI,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,yDAAyD;IACzD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAK,CAAC,WAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,MAAM,cAAc,GAAG;QACrB,sDAAsD;QACtD,uBAAuB;QACvB,oBAAoB;KACrB,CAAC;IACF,MAAM,iBAAiB,GAAG;QACxB,kEAAkE;QAClE,iCAAiC;QACjC,8BAA8B;KAC/B,CAAC;IAEF,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,oCAAoC;IACpC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,EAAE,GAAG,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAwC,EAAE,CAAC;IAEtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,4CAA4C;YAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAmB,CAAC,CAAC;YAC9C,qGAAqG;YACrG,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrD,MAAM,SAAS,GAAG;wBAChB,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC;wBACxC,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC;wBAC3C,OAAO,CAAC,IAAI,EAAE,mCAAmC,CAAC;wBAClD,OAAO,CAAC,IAAI,EAAE,sCAAsC,CAAC;qBACtD,CAAC;oBACF,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;wBAC3B,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;4BACnB,4CAA4C;4BAC3C,GAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;4BACxC,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,oFAAoF;YACpF,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACtD,IAAI,CAAC;oBACH,4CAA4C;oBAC5C,MAAO,GAAW,CAAC,OAAO,EAAE,CAAC;gBAC/B,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACR,UAAU,GAAG,GAAG,CAAC;gBACjB,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;SAC1F,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,+DAA+D,GAAG,SAAS,CAAC,CAAC;IAC3F,MAAM,IAAI,KAAK,CACb,4HAA4H,CAC7H,CAAC;AACJ,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { VMExecutionOptions, VMExecutionResult, AccountInfo, Logger } from '../types.js';
2
+ export declare class FiveVM {
3
+ private vm;
4
+ private logger;
5
+ private initialized;
6
+ constructor(logger: Logger);
7
+ initialize(): Promise<void>;
8
+ private isWasmOnlyExecution;
9
+ private hasFiveMagic;
10
+ private looksLikeScriptHeader;
11
+ private looksLikeOptimizedHeader;
12
+ execute(options: VMExecutionOptions): Promise<VMExecutionResult>;
13
+ executeFunction(bytecode: Uint8Array, functionIndex: number, parameters: Array<{
14
+ type: string;
15
+ value: any;
16
+ }>, accounts?: AccountInfo[]): Promise<VMExecutionResult>;
17
+ getState(): Promise<any>;
18
+ validateBytecode(bytecode: Uint8Array): Promise<{
19
+ valid: boolean;
20
+ error?: string;
21
+ }>;
22
+ getVMConstants(): any;
23
+ private convertAccountsToWasm;
24
+ private createVMError;
25
+ getVMInfo(): {
26
+ version: string;
27
+ features: string[];
28
+ };
29
+ isReady(): boolean;
30
+ cleanup(): void;
31
+ }
32
+ //# sourceMappingURL=vm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../../src/wasm/vm.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,MAAM,EAEP,MAAM,aAAa,CAAC;AAerB,qBAAa,MAAM;IACjB,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,MAAM;IAIpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4HjC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,wBAAwB;IAY1B,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8JhE,eAAe,CACnB,QAAQ,EAAE,UAAU,EACpB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,EAC/C,QAAQ,CAAC,EAAE,WAAW,EAAE,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAyCvB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAaxB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBzF,cAAc,IAAI,GAAG;IAarB,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,aAAa;IAiBrB,SAAS,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAiBpD,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,440 @@
1
+ // Five VM WASM integration.
2
+ import { existsSync, readFileSync } from 'fs';
3
+ import { dirname, resolve } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ import { ConfigManager } from '../config/ConfigManager.js';
6
+ let FiveVMWasm;
7
+ let WasmAccount;
8
+ let ParameterEncoder;
9
+ let wrap_with_script_header;
10
+ const SCRIPT_HEADER_LEN = 64; // ScriptHeader::LEN (see five-protocol)
11
+ const OPTIMIZED_HEADER_LEN = 7; // OptimizedHeader V2 size (magic + features + counts)
12
+ const FIVE_MAGIC = [0x35, 0x49, 0x56, 0x45];
13
+ export class FiveVM {
14
+ vm = null;
15
+ logger;
16
+ initialized = false;
17
+ constructor(logger) {
18
+ this.logger = logger;
19
+ }
20
+ async initialize() {
21
+ try {
22
+ console.log('[DEBUG] Starting VM WASM initialization...');
23
+ const cfg = await ConfigManager.getInstance().get();
24
+ const prefer = cfg.wasm?.loader || 'auto';
25
+ const configured = Array.isArray(cfg.wasm?.modulePaths) ? cfg.wasm.modulePaths : [];
26
+ const nodeCandidates = [
27
+ '../../five_vm_wasm.js',
28
+ '../five_vm_wasm.js',
29
+ ];
30
+ const bundlerCandidates = [
31
+ '../../assets/vm/five_vm_wasm.js',
32
+ '../assets/vm/five_vm_wasm.js',
33
+ ];
34
+ let candidates = [];
35
+ candidates.push(...configured);
36
+ if (prefer === 'node') {
37
+ candidates.push(...nodeCandidates);
38
+ }
39
+ else if (prefer === 'bundler') {
40
+ candidates.push(...bundlerCandidates);
41
+ }
42
+ else {
43
+ candidates.push(...nodeCandidates, ...bundlerCandidates);
44
+ }
45
+ let wasmModule = null;
46
+ const tried = [];
47
+ for (const candidate of candidates) {
48
+ try {
49
+ // Dynamic import of Five VM WASM bindings
50
+ // Note: ESM import is resolved relative to this file
51
+ // eslint-disable-next-line no-await-in-loop
52
+ let mod = null;
53
+ try {
54
+ mod = await import(candidate);
55
+ }
56
+ catch (esmErr) {
57
+ // If ESM import fails and path looks like our CJS asset, try createRequire
58
+ try {
59
+ const { createRequire } = await import('module');
60
+ const here = dirname(fileURLToPath(import.meta.url));
61
+ const abs = resolve(here, candidate);
62
+ const req = createRequire(import.meta.url);
63
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
64
+ mod = req(abs);
65
+ }
66
+ catch (cjsErr) {
67
+ tried.push({ path: candidate, error: cjsErr });
68
+ mod = null;
69
+ }
70
+ }
71
+ // If initSync is available, prefer initializing with local file bytes to avoid fetch/file URL issues
72
+ if (mod && typeof mod.initSync === 'function') {
73
+ try {
74
+ const here = dirname(fileURLToPath(import.meta.url));
75
+ const wasmFiles = [
76
+ resolve(here, '../five_vm_wasm_bg.wasm'), // dist/five_vm_wasm_bg.wasm
77
+ resolve(here, '../../five_vm_wasm_bg.wasm'), // five-cli/five_vm_wasm_bg.wasm (unlikely)
78
+ resolve(here, '../assets/vm/five_vm_wasm_bg.wasm'), // dist/assets/vm
79
+ resolve(here, '../../assets/vm/five_vm_wasm_bg.wasm') // assets/vm
80
+ ];
81
+ for (const wf of wasmFiles) {
82
+ if (existsSync(wf)) {
83
+ // eslint-disable-next-line no-await-in-loop
84
+ mod.initSync(readFileSync(wf));
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ catch (syncErr) {
90
+ tried.push({ path: candidate, error: syncErr });
91
+ }
92
+ }
93
+ // Initialize node-friendly wasm-pack bundle if it exposes a default init (fallback)
94
+ if (mod && typeof mod.default === 'function') {
95
+ try {
96
+ // eslint-disable-next-line no-await-in-loop
97
+ await mod.default();
98
+ }
99
+ catch (initErr) {
100
+ // Don't continue yet; allow export validation below to decide
101
+ tried.push({ path: candidate, error: initErr });
102
+ }
103
+ }
104
+ if (mod && mod.FiveVMWasm && mod.WasmAccount && mod.ParameterEncoder) {
105
+ wasmModule = mod;
106
+ console.log(`[WASM VM] Loaded module from: ${candidate}`);
107
+ break;
108
+ }
109
+ tried.push({ path: candidate, error: 'Missing expected exports' });
110
+ }
111
+ catch (e) {
112
+ tried.push({ path: candidate, error: e });
113
+ }
114
+ }
115
+ if (!wasmModule) {
116
+ const attempted = tried
117
+ .map(t => ` - ${t.path}: ${t.error instanceof Error ? t.error.message : String(t.error)}`)
118
+ .join('\n');
119
+ throw this.createVMError(`Failed to load WASM VM: Five VM WASM modules not found.\nAttempted:\n${attempted}\nPlease run \"npm run build:wasm\" to build assets.`);
120
+ }
121
+ FiveVMWasm = wasmModule.FiveVMWasm;
122
+ WasmAccount = wasmModule.WasmAccount;
123
+ ParameterEncoder = wasmModule.ParameterEncoder;
124
+ if (typeof wasmModule.wrap_with_script_header !== 'function') {
125
+ const attempted = tried
126
+ .map(t => ` - ${t.path}: ${t.error instanceof Error ? t.error.message : String(t.error)}`)
127
+ .join('\n');
128
+ throw this.createVMError(`WASM VM missing required export wrap_with_script_header.\nAttempted:\n${attempted}\nPlease rebuild WASM assets: npm -C five-wasm run build`);
129
+ }
130
+ wrap_with_script_header = wasmModule.wrap_with_script_header;
131
+ console.log('[WASM VM] Using Rust header wrapper for ScriptHeader generation');
132
+ this.initialized = true;
133
+ }
134
+ catch (error) {
135
+ throw this.createVMError('Five VM WASM modules not found. Please run "npm run build:wasm" to build the required WebAssembly modules.', error);
136
+ }
137
+ }
138
+ isWasmOnlyExecution() {
139
+ const args = process.argv;
140
+ if (args.includes('local')) {
141
+ return true;
142
+ }
143
+ const scriptName = process.argv[1];
144
+ if (scriptName && (scriptName.includes('test-runner') || scriptName.includes('local'))) {
145
+ return true;
146
+ }
147
+ return true;
148
+ }
149
+ hasFiveMagic(data) {
150
+ if (data.length < FIVE_MAGIC.length) {
151
+ return false;
152
+ }
153
+ return FIVE_MAGIC.every((byte, index) => data[index] === byte);
154
+ }
155
+ looksLikeScriptHeader(data) {
156
+ if (data.length < SCRIPT_HEADER_LEN) {
157
+ return false;
158
+ }
159
+ if (!this.hasFiveMagic(data)) {
160
+ return false;
161
+ }
162
+ const encodedLen = data[4] + (data[5] << 8) + (data[6] << 16);
163
+ const payloadLen = data.length - SCRIPT_HEADER_LEN;
164
+ return encodedLen === payloadLen;
165
+ }
166
+ looksLikeOptimizedHeader(data) {
167
+ if (data.length < OPTIMIZED_HEADER_LEN) {
168
+ return false;
169
+ }
170
+ if (!this.hasFiveMagic(data)) {
171
+ return false;
172
+ }
173
+ return !this.looksLikeScriptHeader(data);
174
+ }
175
+ async execute(options) {
176
+ if (!this.initialized) {
177
+ throw this.createVMError('VM not initialized');
178
+ }
179
+ const startTime = Date.now();
180
+ try {
181
+ let scriptData;
182
+ const hasScriptHeader = this.looksLikeScriptHeader(options.bytecode);
183
+ const hasOptimizedHeader = this.looksLikeOptimizedHeader(options.bytecode);
184
+ if (hasScriptHeader || hasOptimizedHeader) {
185
+ scriptData = options.bytecode;
186
+ if (hasOptimizedHeader) {
187
+ console.log(`[WASM VM] Detected optimized header (${options.bytecode.length} bytes); executing without re-wrapping`);
188
+ }
189
+ }
190
+ else if (this.isWasmOnlyExecution()) {
191
+ console.log('[WASM VM] Legacy bytecode detected; wrapping for WASM-only execution');
192
+ if (!wrap_with_script_header) {
193
+ throw this.createVMError('WASM header wrapping function not available');
194
+ }
195
+ const wrapped = wrap_with_script_header(options.bytecode);
196
+ scriptData = new Uint8Array(wrapped);
197
+ }
198
+ else {
199
+ // Network execution requires proper deployment
200
+ throw this.createVMError('Network execution requires deployed bytecode with ScriptHeader. Use deployment flow for localnet/devnet/mainnet.');
201
+ }
202
+ this.vm = new FiveVMWasm(scriptData);
203
+ this.logger.debug(`Executing script data (${scriptData.length} bytes)`);
204
+ const wasmAccounts = this.convertAccountsToWasm(options.accounts || []);
205
+ // Prepare input data
206
+ const inputData = options.inputData || new Uint8Array(0);
207
+ const result = this.vm.execute_partial(inputData, wasmAccounts);
208
+ const executionTime = Date.now() - startTime;
209
+ let resultValue = null;
210
+ let success = false;
211
+ let status = 'Failed';
212
+ let errorMessage = undefined;
213
+ this.logger.debug(`VM result type: ${typeof result}, value: ${JSON.stringify(result)}`);
214
+ if (typeof result === 'string') {
215
+ if (result.startsWith('Ok(')) {
216
+ success = true;
217
+ status = 'Completed';
218
+ const u64Match = result.match(/Ok\(Some\(U64\((\d+)\)\)\)/);
219
+ const u8Match = result.match(/Ok\(Some\(U8\((\d+)\)\)\)/);
220
+ const i64Match = result.match(/Ok\(Some\(I64\((-?\d+)\)\)\)/);
221
+ const boolMatch = result.match(/Ok\(Some\(Bool\((true|false)\)\)\)/);
222
+ if (u64Match) {
223
+ resultValue = { type: 'U64', value: parseInt(u64Match[1]) };
224
+ }
225
+ else if (u8Match) {
226
+ resultValue = { type: 'U8', value: parseInt(u8Match[1]) };
227
+ }
228
+ else if (i64Match) {
229
+ resultValue = { type: 'I64', value: parseInt(i64Match[1]) };
230
+ }
231
+ else if (boolMatch) {
232
+ resultValue = { type: 'Bool', value: boolMatch[1] === 'true' };
233
+ }
234
+ else if (result === 'Ok(None)') {
235
+ resultValue = null;
236
+ }
237
+ else {
238
+ const fallbackMatch = result.match(/Ok\(Some\(\w+\((\d+)\)\)\)/);
239
+ if (fallbackMatch) {
240
+ resultValue = parseInt(fallbackMatch[1]);
241
+ }
242
+ }
243
+ this.logger.debug(`Parsed result value: ${JSON.stringify(resultValue)}`);
244
+ }
245
+ else if (result.startsWith('Err(')) {
246
+ success = false;
247
+ status = 'Failed';
248
+ errorMessage = result.replace('Err(', '').replace(')', '');
249
+ }
250
+ }
251
+ else {
252
+ this.logger.debug(`Object result properties: ${Object.getOwnPropertyNames(result)}`);
253
+ this.logger.debug(`Object result methods: ${Object.getOwnPropertyNames(Object.getPrototypeOf(result))}`);
254
+ const resultStatus = typeof result.status === 'function' ? result.status() : result.status;
255
+ success = resultStatus === 'Completed';
256
+ status = resultStatus || 'Completed'; // Default to Completed for partial execution
257
+ const resultErrorMessage = typeof result.error_message === 'function' ? result.error_message() : result.error_message;
258
+ errorMessage = resultErrorMessage;
259
+ this.logger.debug(`has_result_value type: ${typeof result.has_result_value}, value: ${result.has_result_value}`);
260
+ this.logger.debug(`get_result_value type: ${typeof result.get_result_value}, value: ${result.get_result_value}`);
261
+ if (result.has_result_value) {
262
+ const rawValue = result.get_result_value;
263
+ if (typeof rawValue === 'bigint') {
264
+ resultValue = Number(rawValue);
265
+ this.logger.debug(`Got BigInt result value, converted to number: ${resultValue}`);
266
+ }
267
+ else {
268
+ resultValue = rawValue;
269
+ this.logger.debug(`Got result value from WASM getter: ${JSON.stringify(resultValue)}`);
270
+ }
271
+ }
272
+ else if (result.result_value !== undefined) {
273
+ resultValue = result.result_value;
274
+ this.logger.debug(`Got result value from result_value: ${JSON.stringify(resultValue)}`);
275
+ }
276
+ try {
277
+ if (resultValue === null && result.result_value !== undefined) {
278
+ resultValue = result.result_value;
279
+ this.logger.debug(`Got result value from direct property access: ${JSON.stringify(resultValue)}`);
280
+ }
281
+ }
282
+ catch (e) {
283
+ this.logger.debug(`Failed to access result_value property: ${e}`);
284
+ }
285
+ }
286
+ const vmResult = {
287
+ success,
288
+ result: resultValue,
289
+ computeUnitsUsed: (typeof result === 'object' ? result.compute_units_used : 0) || 0,
290
+ executionTime,
291
+ logs: [],
292
+ status,
293
+ stoppedAt: typeof result === 'object' ? result.stopped_at_opcode_name : undefined,
294
+ errorMessage
295
+ };
296
+ this.logger.debug(`VM execution completed in ${executionTime}ms with status: ${status}`);
297
+ return vmResult;
298
+ }
299
+ catch (error) {
300
+ const executionTime = Date.now() - startTime;
301
+ return {
302
+ success: false,
303
+ error: {
304
+ type: 'ExecutionError',
305
+ message: error instanceof Error ? error.message : 'Unknown VM error',
306
+ instructionPointer: 0,
307
+ stackTrace: [],
308
+ errorCode: -1
309
+ },
310
+ executionTime,
311
+ logs: []
312
+ };
313
+ }
314
+ }
315
+ // Execute with fixed-width parameter encoding.
316
+ // Uses ParameterEncoder.encode_execute which produces packed bytes.
317
+ async executeFunction(bytecode, functionIndex, parameters, accounts) {
318
+ if (!this.initialized) {
319
+ throw this.createVMError('VM not initialized');
320
+ }
321
+ try {
322
+ console.log(`[WASM VM] executeFunction called:`);
323
+ console.log(` Function index: ${functionIndex}`);
324
+ console.log(` Parameters:`, parameters);
325
+ console.log(` Parameter count: ${parameters.length}`);
326
+ if (!ParameterEncoder || !ParameterEncoder.encode_execute) {
327
+ throw new Error('ParameterEncoder WASM binding not loaded or missing encode_execute');
328
+ }
329
+ const simpleValues = parameters.map(param => param.value);
330
+ const rawParams = ParameterEncoder.encode_execute(functionIndex, simpleValues);
331
+ const { BytecodeEncoder } = await import('five-sdk');
332
+ const discriminator = new Uint8Array([9]);
333
+ const functionIndexBytes = BytecodeEncoder.encodeU32(functionIndex);
334
+ const instructionData = new Uint8Array(discriminator.length + functionIndexBytes.length + rawParams.length);
335
+ instructionData.set(discriminator, 0);
336
+ instructionData.set(functionIndexBytes, discriminator.length);
337
+ instructionData.set(rawParams, discriminator.length + functionIndexBytes.length);
338
+ return await this.execute({
339
+ bytecode,
340
+ inputData: instructionData,
341
+ accounts: accounts || []
342
+ });
343
+ }
344
+ catch (error) {
345
+ console.error(`[WASM VM] Parameter encoding failed:`, error);
346
+ console.error(`[WASM VM] Encoder input was:`, { functionIndex, parameters });
347
+ console.error(`[WASM VM] Error details:`, error);
348
+ throw this.createVMError('Function execution failed', error);
349
+ }
350
+ }
351
+ async getState() {
352
+ if (!this.vm) {
353
+ throw this.createVMError('No VM instance available');
354
+ }
355
+ try {
356
+ const state = this.vm.get_state();
357
+ return JSON.parse(state);
358
+ }
359
+ catch (error) {
360
+ throw this.createVMError('Failed to get VM state', error);
361
+ }
362
+ }
363
+ async validateBytecode(bytecode) {
364
+ if (!this.initialized) {
365
+ throw this.createVMError('VM not initialized');
366
+ }
367
+ try {
368
+ const valid = FiveVMWasm.validate_bytecode(bytecode);
369
+ return { valid };
370
+ }
371
+ catch (error) {
372
+ return {
373
+ valid: false,
374
+ error: error instanceof Error ? error.message : 'Unknown validation error'
375
+ };
376
+ }
377
+ }
378
+ getVMConstants() {
379
+ if (!this.initialized) {
380
+ throw this.createVMError('VM not initialized');
381
+ }
382
+ try {
383
+ const constants = FiveVMWasm.get_constants();
384
+ return JSON.parse(constants);
385
+ }
386
+ catch (error) {
387
+ throw this.createVMError('Failed to get VM constants', error);
388
+ }
389
+ }
390
+ convertAccountsToWasm(accounts) {
391
+ const wasmAccounts = [];
392
+ for (const account of accounts) {
393
+ try {
394
+ const wasmAccount = new WasmAccount(account.key, account.data || new Uint8Array(0), account.lamports || 0, account.isWritable || false, account.isSigner || false, account.owner || new Uint8Array(32));
395
+ wasmAccounts.push(wasmAccount);
396
+ }
397
+ catch (error) {
398
+ this.logger.warn(`Failed to convert account ${account.key}: ${error}`);
399
+ }
400
+ }
401
+ return wasmAccounts;
402
+ }
403
+ createVMError(message, cause) {
404
+ const error = new Error(message);
405
+ error.name = 'VMError';
406
+ error.code = 'VM_ERROR';
407
+ error.category = 'wasm';
408
+ error.exitCode = 1;
409
+ if (cause) {
410
+ error.details = {
411
+ cause: cause.message,
412
+ stack: cause.stack
413
+ };
414
+ }
415
+ return error;
416
+ }
417
+ getVMInfo() {
418
+ if (!this.initialized) {
419
+ throw this.createVMError('VM not initialized');
420
+ }
421
+ return {
422
+ version: '1.0.0',
423
+ features: [
424
+ 'partial-execution',
425
+ 'system-call-detection',
426
+ 'fixed-parameter-encoding',
427
+ 'account-simulation',
428
+ 'bytecode-validation'
429
+ ]
430
+ };
431
+ }
432
+ isReady() {
433
+ return this.initialized;
434
+ }
435
+ cleanup() {
436
+ this.vm = null;
437
+ this.logger.debug('VM resources cleaned up');
438
+ }
439
+ }
440
+ //# sourceMappingURL=vm.js.map