@deroll/cm 0.2.0-alpha.0 → 0.2.0-alpha.2

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/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Q=Object.create;var w=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var nt=(o,n)=>{for(var e in n)w(o,e,{get:n[e],enumerable:!0})},P=(o,n,e,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of R(n))!et.call(o,i)&&i!==e&&w(o,i,{get:()=>n[i],enumerable:!(r=Z(n,i))||r.enumerable});return o};var H=(o,n,e)=>(e=o!=null?Q(tt(o)):{},P(n||!o||!o.__esModule?w(e,"default",{value:o,enumerable:!0}):e,o)),rt=o=>P(w({},"__esModule",{value:!0}),o);var Ce={};nt(Ce,{BreakReason:()=>B,CleanupCall:()=>G,CmioYieldCommand:()=>z,CmioYieldReason:()=>x,Constant:()=>A,ErrorCode:()=>M,MAX_MCYCLE:()=>k,MachineError:()=>c,PmaConstant:()=>Yt,Reg:()=>V,RollupsFatalError:()=>d,RollupsInputRejectedError:()=>v,UarchBreakReason:()=>$,connect:()=>we,create:()=>zt,empty:()=>$t,getDefaultConfig:()=>Gt,getLastError:()=>Wt,getRegAddress:()=>Kt,load:()=>Vt,rollups:()=>ge,spawn:()=>T,verifyResetUarch:()=>Rt,verifySendCmioResponse:()=>te,verifyStep:()=>Qt,verifyStepUarch:()=>Zt});module.exports=rt(Ce);var Y=H(require("koffi"),1);var D=H(require("koffi"),1),O=require("os"),b=require("path");function it(){let o=(0,O.platform)(),n=[];switch(o){case"linux":process.env.LD_LIBRARY_PATH&&n.push(...process.env.LD_LIBRARY_PATH.split(":"));break;case"darwin":process.env.DYLD_LIBRARY_PATH&&n.push(...process.env.DYLD_LIBRARY_PATH.split(":")),process.env.DYLD_FALLBACK_LIBRARY_PATH&&n.push(...process.env.DYLD_FALLBACK_LIBRARY_PATH.split(":"));break;case"win32":process.env.PATH&&n.push(...process.env.PATH.split(";"));break}return n}function ot(o){let n=(0,O.platform)();switch(n){case"darwin":return`lib${o}.dylib`;case"linux":return`lib${o}.so`;case"win32":return`${o}.dll`;default:throw new Error(`Unsupported platform: ${n}`)}}function y(o,n=[]){let e=ot(o),r=it(),i=["/usr/lib","/usr/local/lib","/opt/homebrew/lib","/opt/local/lib",".",(0,b.join)(process.cwd(),"lib"),(0,b.join)(process.cwd(),"build")],m=[...n,...r,...i];for(let s of m)try{let f=(0,b.join)(s,e);return D.default.load(f)}catch{}throw new Error(`Failed to load library '${e}'. Tried paths: ${m.join(", ")}`)}var u=y("cartesi");Y.default.opaque("cm_machine");var ct=u.func("const char* cm_get_last_error_message()"),I=u.func("int cm_get_default_config(const cm_machine* m, _Out_ const char** config)"),N=u.func("int cm_get_reg_address(const cm_machine* m, int reg, _Out_ uint64_t* val)"),st=u.func("int cm_new(_Out_ cm_machine** new_m)"),at=u.func("int cm_clone_empty(const cm_machine* m, _Out_ cm_machine** new_m)"),ut=u.func("int cm_is_empty(const cm_machine* m, _Out_ bool* yes)"),mt=u.func("void cm_delete(cm_machine* m)"),lt=u.func("int cm_create(cm_machine* m, const char* config, const char* runtime_config)"),ft=u.func("int cm_create_new(const char* config, const char* runtime_config, _Out_ cm_machine** new_m)"),ht=u.func("int cm_load(cm_machine* m, const char* dir, const char* runtime_config)"),_t=u.func("int cm_load_new(const char* dir, const char* runtime_config, _Out_ cm_machine** new_m)"),dt=u.func("int cm_store(const cm_machine* m, const char* dir)"),pt=u.func("int cm_destroy(cm_machine* m)"),yt=u.func("int cm_set_runtime_config(cm_machine* m, const char* runtime_config)"),vt=u.func("int cm_get_runtime_config(const cm_machine* m, _Out_ const char** runtime_config)"),wt=u.func("int cm_replace_memory_range(cm_machine* m, uint64_t start, uint64_t length, bool shared, const char* image_filename)"),bt=u.func("int cm_get_initial_config(const cm_machine* m, _Out_ const char** config)"),Mt=u.func("int cm_get_memory_ranges(const cm_machine* m, _Out_ const char** ranges)"),gt=u.func("int cm_get_root_hash(const cm_machine* m, _Out_ uint8_t* hash)"),Ct=u.func("int cm_get_proof(const cm_machine* m, uint64_t address, int32_t log2_size, _Out_ const char** proof)"),Ot=u.func("int cm_read_word(const cm_machine* m, uint64_t address, _Out_ uint64_t* val)"),kt=u.func("int cm_read_reg(const cm_machine* m, int reg, _Out_ uint64_t* val)"),At=u.func("int cm_write_reg(cm_machine* m, int reg, uint64_t val)"),Bt=u.func("int cm_read_memory(const cm_machine* m, uint64_t address, uint8_t* data, uint64_t length)"),xt=u.func("int cm_write_memory(cm_machine* m, uint64_t address, const uint8_t* data, uint64_t length)"),St=u.func("int cm_read_virtual_memory(const cm_machine* m, uint64_t address, uint8_t* data, uint64_t length)"),Tt=u.func("int cm_write_virtual_memory(cm_machine* m, uint64_t address, const uint8_t* data, uint64_t length)"),Ft=u.func("int cm_translate_virtual_address(const cm_machine* m, uint64_t vaddr, uint64_t* paddr)"),Lt=u.func("int cm_run(cm_machine* m, uint64_t mcycle_end, _Out_ int* break_reason)"),Xt=u.func("int cm_run_uarch(cm_machine* m, uint64_t uarch_cycle_end, _Out_ int* uarch_break_reason)"),Ut=u.func("int cm_reset_uarch(cm_machine* m)"),Pt=u.func("int cm_receive_cmio_request(const cm_machine* m, _Out_ uint8_t* cmd, _Out_ uint16_t* reason, _Inout_ uint8_t* data, _Inout_ uint64_t* length)"),Ht=u.func("int cm_send_cmio_response(cm_machine* m, uint16_t reason, const uint8_t* data, uint64_t length)"),Dt=u.func("int cm_log_step(cm_machine* m, uint64_t mcycle_count, const char* log_filename, _Out_ int* break_reason)"),It=u.func("int cm_log_step_uarch(cm_machine* m, int32_t log_type, _Out_ const char** log)"),Nt=u.func("int cm_log_reset_uarch(cm_machine* m, int32_t log_type, _Out_ const char** log)"),jt=u.func("int cm_log_send_cmio_response(cm_machine* m, uint16_t reason, const uint8_t* data, uint64_t length, int32_t log_type, _Out_ const char** log)"),j=u.func("int cm_verify_step(const cm_machine* m, const uint8_t* root_hash_before, const char* log_filename, uint64_t mcycle_count, const uint8_t* root_hash_after, _Out_ int* break_reason)"),J=u.func("int cm_verify_step_uarch(const cm_machine* m, const uint8_t* root_hash_before, const char* log, const uint8_t* root_hash_after)"),E=u.func("int cm_verify_reset_uarch(const cm_machine* m, const uint8_t* root_hash_before, const char* log, const uint8_t* root_hash_after)"),q=u.func("int cm_verify_send_cmio_response(const cm_machine* m, uint16_t reason, const uint8_t* data, uint64_t length, const uint8_t* root_hash_before, const char* log, const uint8_t* root_hash_after)"),Jt=u.func("int cm_verify_merkle_tree(cm_machine* m, _Out_ bool* result)"),Et=u.func("int cm_verify_dirty_page_maps(cm_machine* m, _Out_ bool* result)");var qt=new FinalizationRegistry(o=>{o&&mt(o)}),h=class o{constructor(n){this.machine=null;this.machine=n,qt.register(this,n)}static new(){let n=[null],e=st(n);if(e!==0)throw c.fromCode(e);return new o(n[0])}cloneEmpty(){let n=[null],e=at(this.machine,n);if(e!==0)throw c.fromCode(e);return new o(n[0])}static createNew(n,e){let r=[null],i=ft(JSON.stringify(n),e?JSON.stringify(e):null,r);if(i!==0)throw c.fromCode(i);return new o(r[0])}static loadNew(n,e){let r=[null],i=_t(n,e?JSON.stringify(e):null,r);if(i!==0)throw c.fromCode(i);return new o(r[0])}static getLastError(){return ct()}getDefaultConfig(){let n=[null],e=I(this.machine,n);if(e!==0)throw c.fromCode(e);return JSON.parse(n[0])}static getDefaultConfig(){let n=[null],e=I(null,n);if(e!==0)throw c.fromCode(e);return JSON.parse(n[0])}getRegAddress(n){let e=[0n],r=N(this.machine,n,e);if(r!==0)throw c.fromCode(r);return e[0]}static getRegAddress(n){let e=[0n],r=N(null,n,e);if(r!==0)throw c.fromCode(r);return e[0]}isEmpty(){let n=[!1],e=ut(this.machine,n);if(e!==0)throw c.fromCode(e);return n[0]}create(n,e){let r=lt(this.machine,JSON.stringify(n),e?JSON.stringify(e):null);if(r!==0)throw c.fromCode(r);return this}load(n,e){let r=ht(this.machine,n,e?JSON.stringify(e):null);if(r!==0)throw c.fromCode(r);return this}store(n){let e=dt(this.machine,n);if(e!==0)throw c.fromCode(e);return this}destroy(){let n=pt(this.machine);if(n!==0)throw c.fromCode(n)}setRuntimeConfig(n){let e=yt(this.machine,JSON.stringify(n));if(e!==0)throw c.fromCode(e)}getRuntimeConfig(){let n=[null],e=vt(this.machine,n);if(e!==0)throw c.fromCode(e);return JSON.parse(n[0])}replaceMemoryRange(n,e,r,i){let m=wt(this.machine,n,e,r,i||null);if(m!==0)throw c.fromCode(m)}getInitialConfig(){let n=[null],e=bt(this.machine,n);if(e!==0)throw c.fromCode(e);return JSON.parse(n[0])}getMemoryRanges(){let n=[null],e=Mt(this.machine,n);if(e!==0)throw c.fromCode(e);return JSON.parse(n[0])}getRootHash(){let n=Buffer.alloc(32),e=gt(this.machine,n);if(e!==0)throw c.fromCode(e);return n}getProof(n,e){let r=[null],i=Ct(this.machine,n,e,r);if(i!==0)throw c.fromCode(i);return JSON.parse(r[0])}readWord(n){let e=[0n],r=Ot(this.machine,n,e);if(r!==0)throw c.fromCode(r);return e[0]}readReg(n){let e=[0n],r=kt(this.machine,n,e);if(r!==0)throw c.fromCode(r);return e[0]}writeReg(n,e){let r=At(this.machine,n,e);if(r!==0)throw c.fromCode(r)}readMemory(n,e){let r=Buffer.alloc(Number(e)),i=Bt(this.machine,n,r,e);if(i!==0)throw c.fromCode(i);return r}writeMemory(n,e){let r=xt(this.machine,n,e,BigInt(e.length));if(r!==0)throw c.fromCode(r)}readVirtualMemory(n,e){let r=Buffer.alloc(Number(e)),i=St(this.machine,n,r,e);if(i!==0)throw c.fromCode(i);return r}writeVirtualMemory(n,e){let r=Tt(this.machine,n,e,BigInt(e.length));if(r!==0)throw c.fromCode(r)}translateVirtualAddress(n){let e=[0n],r=Ft(this.machine,n,e);if(r!==0)throw c.fromCode(r);return e[0]}run(n=k){let e=[0],r=Lt(this.machine,n,e);if(r!==0)throw c.fromCode(r);return e[0]}runUarch(n){let e=[0],r=Xt(this.machine,n,e);if(r!==0)throw c.fromCode(r);return e[0]}resetUarch(){let n=Ut(this.machine);if(n!==0)throw c.fromCode(n)}receiveCmioRequest(){let n=[0],e=[0],r=Buffer.allocUnsafe(2*1024*1024),i=[r.length],m=Pt(this.machine,n,e,r,i);if(m!==0)throw c.fromCode(m);return{cmd:n[0],reason:e[0],data:r.subarray(0,i[0])}}sendCmioResponse(n,e){let r=Ht(this.machine,n,e,BigInt(e.length));if(r!==0)throw c.fromCode(r)}logStep(n,e){let r=[0],i=Dt(this.machine,n,e,r);if(i!==0)throw c.fromCode(i);return r[0]}logStepUarch(n){let e=[null],r=0;r|=n.has_annotations?1:0,r|=n.has_large_data?2:0;let i=It(this.machine,r,e);if(i!==0)throw c.fromCode(i);return JSON.parse(e[0])}logResetUarch(n){let e=[null],r=0;r|=n.has_annotations?1:0,r|=n.has_large_data?2:0;let i=Nt(this.machine,r,e);if(i!==0)throw c.fromCode(i);return JSON.parse(e[0])}logSendCmioResponse(n,e,r){let i=[null],m=0;m|=r.has_annotations?1:0,m|=r.has_large_data?2:0;let s=jt(this.machine,n,e,BigInt(e.length),m,i);if(s!==0)throw c.fromCode(s);return i[0]}verifyStep(n,e,r,i){let m=[0],s=j(this.machine,n,e,r,i,m);if(s!==0)throw c.fromCode(s);return m[0]}static verifyStep(n,e,r,i){let m=[0],s=j(null,n,e,r,i,m);if(s!==0)throw c.fromCode(s);return m[0]}verifyStepUarch(n,e,r){let i=J(this.machine,n,JSON.stringify(e),r);if(i!==0)throw c.fromCode(i)}static verifyStepUarch(n,e,r){let i=J(null,n,JSON.stringify(e),r);if(i!==0)throw c.fromCode(i)}verifyResetUarch(n,e,r){let i=E(this.machine,n,JSON.stringify(e),r);if(i!==0)throw c.fromCode(i)}static verifyResetUarch(n,e,r){let i=E(null,n,JSON.stringify(e),r);if(i!==0)throw c.fromCode(i)}verifySendCmioResponse(n,e,r,i,m){let s=q(this.machine,n,e,BigInt(e.length),r,JSON.stringify(i),m);if(s!==0)throw c.fromCode(s)}static verifySendCmioResponse(n,e,r,i,m){let s=q(null,n,e,BigInt(e.length),r,JSON.stringify(i),m);if(s!==0)throw c.fromCode(s)}verifyMerkleTree(){let n=[!1],e=Jt(this.machine,n);if(e!==0)throw c.fromCode(e);return n[0]}verifyDirtyPageMaps(){let n=[!1],e=Et(this.machine,n);if(e!==0)throw c.fromCode(e);return n[0]}};var k=0xffffffffffffffffffn,A=(i=>(i[i.HashSize=32]="HashSize",i[i.TreeLog2WordSize=5]="TreeLog2WordSize",i[i.TreeLog2PageSize=12]="TreeLog2PageSize",i[i.TreeLog2RootSize=64]="TreeLog2RootSize",i))(A||{}),Yt={CmioRxBufferStart:0x60000000n,CmioRxBufferLog2Size:21,CmioTxBufferStart:0x60800000n,CmioTxBufferLog2Size:21,RamStart:0x80000000n},M=(a=>(a[a.Ok=0]="Ok",a[a.InvalidArgument=-1]="InvalidArgument",a[a.DomainError=-2]="DomainError",a[a.LengthError=-3]="LengthError",a[a.OutOfRange=-4]="OutOfRange",a[a.LogicError=-5]="LogicError",a[a.RuntimeError=-6]="RuntimeError",a[a.RangeError=-7]="RangeError",a[a.OverflowError=-8]="OverflowError",a[a.UnderflowError=-9]="UnderflowError",a[a.RegexError=-10]="RegexError",a[a.SystemError=-11]="SystemError",a[a.BadTypeid=-12]="BadTypeid",a[a.BadCast=-13]="BadCast",a[a.BadAnyCast=-14]="BadAnyCast",a[a.BadOptionalAccess=-15]="BadOptionalAccess",a[a.BadWeakPtr=-16]="BadWeakPtr",a[a.BadFunctionCall=-17]="BadFunctionCall",a[a.BadAlloc=-18]="BadAlloc",a[a.BadArrayNewLength=-19]="BadArrayNewLength",a[a.BadException=-20]="BadException",a[a.BadVariantAccess=-21]="BadVariantAccess",a[a.Exception=-22]="Exception",a[a.Unknown=-23]="Unknown",a))(M||{}),c=class o extends Error{constructor(n,e){let r=`Cartesi Machine Error: ${e} (code: ${n})`;super(r),this.name="MachineError",this.code=n,this.description=e,Error.captureStackTrace&&Error.captureStackTrace(this,o)}static fromCode(n){let e=h.getLastError();return new o(n,e)}},B=(s=>(s[s.Failed=0]="Failed",s[s.Halted=1]="Halted",s[s.YieldedManually=2]="YieldedManually",s[s.YieldedAutomatically=3]="YieldedAutomatically",s[s.YieldedSoftly=4]="YieldedSoftly",s[s.ReachedTargetMcycle=5]="ReachedTargetMcycle",s))(B||{}),$=(r=>(r[r.ReachedTargetCycle=0]="ReachedTargetCycle",r[r.UarchHalted=1]="UarchHalted",r[r.Failed=2]="Failed",r))($||{}),z=(e=>(e[e.Automatic=0]="Automatic",e[e.Manual=1]="Manual",e))(z||{}),x=(l=>(l[l.AutomaticProgress=1]="AutomaticProgress",l[l.AutomaticTxOutput=2]="AutomaticTxOutput",l[l.AutomaticTxReport=4]="AutomaticTxReport",l[l.ManualRxAccepted=1]="ManualRxAccepted",l[l.ManualRxRejected=2]="ManualRxRejected",l[l.ManualTxException=4]="ManualTxException",l[l.AdvanceState=0]="AdvanceState",l[l.InspectState=1]="InspectState",l))(x||{}),V=(t=>(t[t.X0=0]="X0",t[t.X1=1]="X1",t[t.X2=2]="X2",t[t.X3=3]="X3",t[t.X4=4]="X4",t[t.X5=5]="X5",t[t.X6=6]="X6",t[t.X7=7]="X7",t[t.X8=8]="X8",t[t.X9=9]="X9",t[t.X10=10]="X10",t[t.X11=11]="X11",t[t.X12=12]="X12",t[t.X13=13]="X13",t[t.X14=14]="X14",t[t.X15=15]="X15",t[t.X16=16]="X16",t[t.X17=17]="X17",t[t.X18=18]="X18",t[t.X19=19]="X19",t[t.X20=20]="X20",t[t.X21=21]="X21",t[t.X22=22]="X22",t[t.X23=23]="X23",t[t.X24=24]="X24",t[t.X25=25]="X25",t[t.X26=26]="X26",t[t.X27=27]="X27",t[t.X28=28]="X28",t[t.X29=29]="X29",t[t.X30=30]="X30",t[t.X31=31]="X31",t[t.F0=32]="F0",t[t.F1=33]="F1",t[t.F2=34]="F2",t[t.F3=35]="F3",t[t.F4=36]="F4",t[t.F5=37]="F5",t[t.F6=38]="F6",t[t.F7=39]="F7",t[t.F8=40]="F8",t[t.F9=41]="F9",t[t.F10=42]="F10",t[t.F11=43]="F11",t[t.F12=44]="F12",t[t.F13=45]="F13",t[t.F14=46]="F14",t[t.F15=47]="F15",t[t.F16=48]="F16",t[t.F17=49]="F17",t[t.F18=50]="F18",t[t.F19=51]="F19",t[t.F20=52]="F20",t[t.F21=53]="F21",t[t.F22=54]="F22",t[t.F23=55]="F23",t[t.F24=56]="F24",t[t.F25=57]="F25",t[t.F26=58]="F26",t[t.F27=59]="F27",t[t.F28=60]="F28",t[t.F29=61]="F29",t[t.F30=62]="F30",t[t.F31=63]="F31",t[t.Pc=64]="Pc",t[t.Fcsr=65]="Fcsr",t[t.Mvendorid=66]="Mvendorid",t[t.Marchid=67]="Marchid",t[t.Mimpid=68]="Mimpid",t[t.Mcycle=69]="Mcycle",t[t.Icycleinstret=70]="Icycleinstret",t[t.Mstatus=71]="Mstatus",t[t.Mtvec=72]="Mtvec",t[t.Mscratch=73]="Mscratch",t[t.Mepc=74]="Mepc",t[t.Mcause=75]="Mcause",t[t.Mtval=76]="Mtval",t[t.Misa=77]="Misa",t[t.Mie=78]="Mie",t[t.Mip=79]="Mip",t[t.Medeleg=80]="Medeleg",t[t.Mideleg=81]="Mideleg",t[t.Mcounteren=82]="Mcounteren",t[t.Menvcfg=83]="Menvcfg",t[t.Stvec=84]="Stvec",t[t.Sscratch=85]="Sscratch",t[t.Sepc=86]="Sepc",t[t.Scause=87]="Scause",t[t.Stval=88]="Stval",t[t.Satp=89]="Satp",t[t.Scounteren=90]="Scounteren",t[t.Senvcfg=91]="Senvcfg",t[t.Ilrsc=92]="Ilrsc",t[t.Iprv=93]="Iprv",t[t.IflagsX=94]="IflagsX",t[t.IflagsY=95]="IflagsY",t[t.IflagsH=96]="IflagsH",t[t.Iunrep=97]="Iunrep",t[t.ClintMtimecmp=98]="ClintMtimecmp",t[t.PlicGirqpend=99]="PlicGirqpend",t[t.PlicGirqsrvd=100]="PlicGirqsrvd",t[t.HtifToHost=101]="HtifToHost",t[t.HtifFromHost=102]="HtifFromHost",t[t.HtifIhalt=103]="HtifIhalt",t[t.HtifIconsole=104]="HtifIconsole",t[t.HtifIyield=105]="HtifIyield",t[t.UarchX0=106]="UarchX0",t[t.UarchX1=107]="UarchX1",t[t.UarchX2=108]="UarchX2",t[t.UarchX3=109]="UarchX3",t[t.UarchX4=110]="UarchX4",t[t.UarchX5=111]="UarchX5",t[t.UarchX6=112]="UarchX6",t[t.UarchX7=113]="UarchX7",t[t.UarchX8=114]="UarchX8",t[t.UarchX9=115]="UarchX9",t[t.UarchX10=116]="UarchX10",t[t.UarchX11=117]="UarchX11",t[t.UarchX12=118]="UarchX12",t[t.UarchX13=119]="UarchX13",t[t.UarchX14=120]="UarchX14",t[t.UarchX15=121]="UarchX15",t[t.UarchX16=122]="UarchX16",t[t.UarchX17=123]="UarchX17",t[t.UarchX18=124]="UarchX18",t[t.UarchX19=125]="UarchX19",t[t.UarchX20=126]="UarchX20",t[t.UarchX21=127]="UarchX21",t[t.UarchX22=128]="UarchX22",t[t.UarchX23=129]="UarchX23",t[t.UarchX24=130]="UarchX24",t[t.UarchX25=131]="UarchX25",t[t.UarchX26=132]="UarchX26",t[t.UarchX27=133]="UarchX27",t[t.UarchX28=134]="UarchX28",t[t.UarchX29=135]="UarchX29",t[t.UarchX30=136]="UarchX30",t[t.UarchX31=137]="UarchX31",t[t.UarchPc=138]="UarchPc",t[t.UarchCycle=139]="UarchCycle",t[t.UarchHaltFlag=140]="UarchHaltFlag",t[t.HtifToHostDev=141]="HtifToHostDev",t[t.HtifToHostCmd=142]="HtifToHostCmd",t[t.HtifToHostReason=143]="HtifToHostReason",t[t.HtifToHostData=144]="HtifToHostData",t[t.HtifFromHostDev=145]="HtifFromHostDev",t[t.HtifFromHostCmd=146]="HtifFromHostCmd",t[t.HtifFromHostReason=147]="HtifFromHostReason",t[t.HtifFromHostData=148]="HtifFromHostData",t[t.Unknown_=149]="Unknown_",t[t.First_=150]="First_",t[t.Last_=151]="Last_",t))(V||{});function $t(){return h.new()}function zt(o,n){return h.createNew(o,n)}function Vt(o,n){return h.loadNew(o,n)}function Wt(){return h.getLastError()}function Gt(){return h.getDefaultConfig()}function Kt(o){return h.getRegAddress(o)}function Qt(o,n,e,r){return h.verifyStep(o,n,e,r)}function Zt(o,n,e){h.verifyStepUarch(o,n,e)}function Rt(o,n,e){h.verifyResetUarch(o,n,e)}function te(o,n,e,r,i){h.verifySendCmioResponse(o,n,e,r,i)}var _=y("cartesi_jsonrpc"),ee=y("c"),ne=_.func("int cm_jsonrpc_spawn_server(const char *address, int64_t spawn_timeout_ms, _Out_ cm_machine **new_m, _Out_ const char **bound_address, _Out_ uint32_t *pid)"),re=_.func("int cm_jsonrpc_connect_server(const char *address, int64_t connect_timeout_ms, _Out_ cm_machine **new_m)"),ie=_.func("int cm_jsonrpc_fork_server(const cm_machine *m, _Out_ cm_machine **forked_m, _Out_ const char **address, _Out_ uint32_t *pid)"),oe=_.func("int cm_jsonrpc_shutdown_server(cm_machine *m)"),ce=_.func("int cm_jsonrpc_rebind_server(cm_machine *m, const char *address, _Out_ const char **address_bound)"),se=_.func("int cm_jsonrpc_get_server_version(const cm_machine *m, _Out_ const char **version)"),ae=_.func("int cm_jsonrpc_emancipate_server(cm_machine *m)"),ue=_.func("int cm_jsonrpc_set_timeout(cm_machine *m, int64_t ms)"),me=_.func("int cm_jsonrpc_get_timeout(cm_machine *m, _Out_ int64_t *ms)"),le=_.func("int cm_jsonrpc_set_cleanup_call(cm_machine *m, int call)"),fe=_.func("int cm_jsonrpc_get_cleanup_call(cm_machine *m, _Out_ int *call)"),he=_.func("int cm_jsonrpc_get_server_address(cm_machine *m, _Out_ const char **address)"),_e=_.func("int cm_jsonrpc_delay_next_request(cm_machine *m, uint64_t ms)"),S=ee.func("int fcntl(int fd, int cmd, int arg)"),de=1,W=2,pe=1;function ye(o){let n=S(o,de,0);if(n===-1)throw new Error(`Failed to get flags for fd ${o}`);let e=n&~pe;if(S(o,W,e)===-1)throw new Error(`Failed to set flags for fd ${o}`);return n}function ve(o,n){if(S(o,W,n)===-1)throw new Error(`Failed to set flags for fd ${o}`)}var p=class o extends h{constructor(){super(...arguments);this.serverAddress=null;this.serverPid=null}static spawn(e="127.0.0.1:0",r=-1){let i=ye(1);try{let m=[null],s=[null],f=[null],l=ne(e,r,m,s,f);if(l!==0)throw c.fromCode(l);if(s[0]===null||f[0]===null)throw new Error("Failed to get output parameters from spawn server");let C=new o(m[0]);return C.serverAddress=s[0],C.serverPid=f[0],C}finally{ve(1,i)}}static connect(e,r=-1){let i=[null],m=re(e,r,i);if(m!==0)throw c.fromCode(m);let s=new o(i[0]);return s.serverAddress=e,s}fork(){let e=[null],r=[null],i=[null],m=ie(this.machine,e,r,i);if(m!==0)throw c.fromCode(m);if(r[0]===null||i[0]===null)throw new Error("Failed to get output parameters from fork server");let s=new o(e[0]);return s.serverAddress=r[0],s.serverPid=i[0],s}shutdown(){let e=oe(this.machine);if(e!==0)throw c.fromCode(e)}rebind(e){let r=[null],i=ce(this.machine,e,r);if(i!==0)throw c.fromCode(i);if(r[0]===null)throw new Error("Failed to get bound address from rebind server");return this.serverAddress=r[0],r[0]}getServerVersion(){let e=[null],r=se(this.machine,e);if(r!==0)throw c.fromCode(r);if(e[0]===null)throw new Error("Failed to get server version");return e[0]}emancipate(){let e=ae(this.machine);if(e!==0)throw c.fromCode(e)}setTimeout(e){let r=ue(this.machine,e);if(r!==0)throw c.fromCode(r)}getTimeout(){let e=[null],r=me(this.machine,e);if(r!==0)throw c.fromCode(r);if(e[0]===null)throw new Error("Failed to get timeout");return e[0]}setCleanupCall(e){let r=le(this.machine,e);if(r!==0)throw c.fromCode(r);return this}getCleanupCall(){let e=[null],r=fe(this.machine,e);if(r!==0)throw c.fromCode(r);if(e[0]===null)throw new Error("Failed to get cleanup call");return e[0]}getServerAddress(){let e=[null],r=he(this.machine,e);if(r!==0)throw c.fromCode(r);if(e[0]===null)throw new Error("Failed to get server address");return e[0]}delayNextRequest(e){let r=_e(this.machine,e);if(r!==0)throw c.fromCode(r)}getBoundAddress(){return this.serverAddress}getServerPid(){return this.serverPid}load(e,r){return super.load(e,r),this}cloneEmpty(){return super.cloneEmpty(),this}create(e,r){return super.create(e,r),this}store(e){return super.store(e),this}};var G=(r=>(r[r.Nothing=0]="Nothing",r[r.Destroy=1]="Destroy",r[r.Shutdown=2]="Shutdown",r))(G||{});function T(o="127.0.0.1:0",n=-1){return p.spawn(o,n)}function we(o,n=-1){return p.connect(o,n)}var d=class extends Error{constructor(n){super(n),this.name="RollupsFatalError"}},v=class extends Error{constructor(){super("Input rejected"),this.name="RollupsInputRejectedError"}};function be(o){return new U(o)}function K(o,n){return new X(o,n?.noRollback??!1)}var F="127.0.0.1:0",L=-1;function Me(o,n){let{runtimeConfig:e}=n??{address:F,timeout:L,runtimeConfig:void 0},r=n?.address??F,i=n?.timeout??L,m=T(r,i).load(o,e);return K(m,n)}function ge(o,n){return n=n??{noRollback:!1,address:F,timeout:L},typeof o=="string"?Me(o,n):o instanceof p?K(o,n):be(o)}var g=class{advance(n,e){let r=function*(){let i=this.startTransaction();for(i.sendCmioResponse(0,n);;){let m=i.run();switch(m){case 2:{let{reason:s,data:f}=i.receiveCmioRequest();switch(s){case 1:return this.commitTransaction(i),f;case 2:throw this.rollbackTransaction(i),new v;case 4:{this.rollbackTransaction(i);let l=f.toString("utf-8");throw new d(l)}default:throw this.rollbackTransaction(i),new d(`Unexpected yield reason: ${s}`)}}case 3:{let{reason:s,data:f}=i.receiveCmioRequest();switch(s){case 1:{try{yield{type:"progress",data:f.readUInt32LE()}}catch{}break}case 2:{yield{type:"output",data:f};break}case 4:{yield{type:"report",data:f};break}}continue}default:throw this.rollbackTransaction(i),new d(`Unexpected break reason: ${m}`)}}}.bind(this);if(e?.collect){let i=[],m=[],s=r();for(;;){let f=s.next();if(f.done)return{outputs:i,reports:m,outputsMerkleRoot:f.value};switch(f.value.type){case"output":i.push(f.value.data);break;case"report":m.push(f.value.data);break;case"progress":break}}}return r()}inspect(n,e){let r=function*(){let i=this.startTransaction();for(i.sendCmioResponse(1,n);;){let m=i.run();switch(m){case 2:{let{reason:s,data:f}=i.receiveCmioRequest();switch(s){case 1:{this.rollbackTransaction(i);return}case 2:throw this.rollbackTransaction(i),new v;case 4:{this.rollbackTransaction(i);let l=f.toString("utf-8");throw new d(l)}default:throw this.rollbackTransaction(i),new d(`Unexpected yield reason: ${s}`)}}case 3:{let{reason:s,data:f}=i.receiveCmioRequest();switch(s){case 1:break;case 2:break;case 4:{yield f;break}}continue}default:throw this.rollbackTransaction(i),new d(`Unexpected break reason: ${m}`)}}}.bind(this);return e?.collect?[...r()]:r()}},X=class extends g{constructor(n,e=!1){super(),this.machine=n,this.noRollback=e}startTransaction(){return this.noRollback?this.machine:this.machine.fork()}commitTransaction(n){this.noRollback||(this.machine.shutdown(),this.machine=n)}rollbackTransaction(n){this.noRollback||n.shutdown()}shutdown(){this.machine.shutdown()}store(n){return this.machine.store(n),this}},U=class extends g{constructor(n){super(),this.machine=n}startTransaction(){return this.machine}commitTransaction(n){this.machine=n}rollbackTransaction(n){this.machine=n}shutdown(){}store(n){return this.machine.store(n),this}};0&&(module.exports={BreakReason,CleanupCall,CmioYieldCommand,CmioYieldReason,Constant,ErrorCode,MAX_MCYCLE,MachineError,PmaConstant,Reg,RollupsFatalError,RollupsInputRejectedError,UarchBreakReason,connect,create,empty,getDefaultConfig,getLastError,getRegAddress,load,rollups,spawn,verifyResetUarch,verifySendCmioResponse,verifyStep,verifyStepUarch});
1
+ "use strict";var K=Object.create;var w=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty;var et=(o,e)=>{for(var n in e)w(o,n,{get:e[n],enumerable:!0})},U=(o,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Z(e))!tt.call(o,i)&&i!==n&&w(o,i,{get:()=>e[i],enumerable:!(r=Q(e,i))||r.enumerable});return o};var P=(o,e,n)=>(n=o!=null?K(R(o)):{},U(e||!o||!o.__esModule?w(n,"default",{value:o,enumerable:!0}):n,o)),nt=o=>U(w({},"__esModule",{value:!0}),o);var ge={};et(ge,{BreakReason:()=>A,CleanupCall:()=>W,CmioYieldCommand:()=>$,CmioYieldReason:()=>B,Constant:()=>k,ErrorCode:()=>M,MAX_MCYCLE:()=>O,MachineError:()=>s,PmaConstant:()=>qt,Reg:()=>z,RollupsFatalError:()=>d,RollupsInputRejectedError:()=>v,UarchBreakReason:()=>Y,connect:()=>ve,create:()=>$t,empty:()=>Yt,getDefaultConfig:()=>Wt,getLastError:()=>Vt,getRegAddress:()=>Gt,load:()=>zt,rollups:()=>Me,spawn:()=>S,verifyResetUarch:()=>Zt,verifySendCmioResponse:()=>Rt,verifyStep:()=>Kt,verifyStepUarch:()=>Qt});module.exports=nt(ge);var q=P(require("koffi"),1);var H=P(require("koffi"),1),C=require("os"),b=require("path");function rt(){let o=(0,C.platform)(),e=[];switch(o){case"linux":process.env.LD_LIBRARY_PATH&&e.push(...process.env.LD_LIBRARY_PATH.split(":"));break;case"darwin":process.env.DYLD_LIBRARY_PATH&&e.push(...process.env.DYLD_LIBRARY_PATH.split(":")),process.env.DYLD_FALLBACK_LIBRARY_PATH&&e.push(...process.env.DYLD_FALLBACK_LIBRARY_PATH.split(":"));break;case"win32":process.env.PATH&&e.push(...process.env.PATH.split(";"));break}return e}function it(o){let e=(0,C.platform)();switch(e){case"darwin":return`lib${o}.dylib`;case"linux":return`lib${o}.so`;case"win32":return`${o}.dll`;default:throw new Error(`Unsupported platform: ${e}`)}}function y(o,e=[]){let n=it(o),r=rt(),i=["/usr/lib","/usr/local/lib","/opt/homebrew/lib","/opt/local/lib",".",(0,b.join)(process.cwd(),"lib"),(0,b.join)(process.cwd(),"build")],u=[...e,...r,...i];for(let a of u)try{let f=(0,b.join)(a,n);return H.default.load(f)}catch{}throw new Error(`Failed to load library '${n}'. Tried paths: ${u.join(", ")}`)}var m=y("cartesi");q.default.opaque("cm_machine");var ot=m.func("const char* cm_get_last_error_message()"),j=m.func("int cm_get_default_config(const cm_machine* m, _Out_ const char** config)"),D=m.func("int cm_get_reg_address(const cm_machine* m, int reg, _Out_ uint64_t* val)"),st=m.func("int cm_new(_Out_ cm_machine** new_m)"),ct=m.func("int cm_clone_empty(const cm_machine* m, _Out_ cm_machine** new_m)"),at=m.func("int cm_is_empty(const cm_machine* m, _Out_ bool* yes)"),ut=m.func("void cm_delete(cm_machine* m)"),mt=m.func("int cm_create(cm_machine* m, const char* config, const char* runtime_config)"),lt=m.func("int cm_create_new(const char* config, const char* runtime_config, _Out_ cm_machine** new_m)"),ft=m.func("int cm_load(cm_machine* m, const char* dir, const char* runtime_config)"),ht=m.func("int cm_load_new(const char* dir, const char* runtime_config, _Out_ cm_machine** new_m)"),_t=m.func("int cm_store(const cm_machine* m, const char* dir)"),dt=m.func("int cm_destroy(cm_machine* m)"),pt=m.func("int cm_set_runtime_config(cm_machine* m, const char* runtime_config)"),yt=m.func("int cm_get_runtime_config(const cm_machine* m, _Out_ const char** runtime_config)"),vt=m.func("int cm_replace_memory_range(cm_machine* m, uint64_t start, uint64_t length, bool shared, const char* image_filename)"),wt=m.func("int cm_get_initial_config(const cm_machine* m, _Out_ const char** config)"),bt=m.func("int cm_get_memory_ranges(const cm_machine* m, _Out_ const char** ranges)"),Mt=m.func("int cm_get_root_hash(const cm_machine* m, _Out_ uint8_t* hash)"),gt=m.func("int cm_get_proof(const cm_machine* m, uint64_t address, int32_t log2_size, _Out_ const char** proof)"),Ct=m.func("int cm_read_word(const cm_machine* m, uint64_t address, _Out_ uint64_t* val)"),Ot=m.func("int cm_read_reg(const cm_machine* m, int reg, _Out_ uint64_t* val)"),kt=m.func("int cm_write_reg(cm_machine* m, int reg, uint64_t val)"),At=m.func("int cm_read_memory(const cm_machine* m, uint64_t address, uint8_t* data, uint64_t length)"),Bt=m.func("int cm_write_memory(cm_machine* m, uint64_t address, const uint8_t* data, uint64_t length)"),xt=m.func("int cm_read_virtual_memory(const cm_machine* m, uint64_t address, uint8_t* data, uint64_t length)"),St=m.func("int cm_write_virtual_memory(cm_machine* m, uint64_t address, const uint8_t* data, uint64_t length)"),Tt=m.func("int cm_translate_virtual_address(const cm_machine* m, uint64_t vaddr, uint64_t* paddr)"),Ft=m.func("int cm_run(cm_machine* m, uint64_t mcycle_end, _Out_ int* break_reason)"),Lt=m.func("int cm_run_uarch(cm_machine* m, uint64_t uarch_cycle_end, _Out_ int* uarch_break_reason)"),Xt=m.func("int cm_reset_uarch(cm_machine* m)"),Ut=m.func("int cm_receive_cmio_request(const cm_machine* m, _Out_ uint8_t* cmd, _Out_ uint16_t* reason, _Inout_ uint8_t* data, _Inout_ uint64_t* length)"),Pt=m.func("int cm_send_cmio_response(cm_machine* m, uint16_t reason, const uint8_t* data, uint64_t length)"),Ht=m.func("int cm_log_step(cm_machine* m, uint64_t mcycle_count, const char* log_filename, _Out_ int* break_reason)"),jt=m.func("int cm_log_step_uarch(cm_machine* m, int32_t log_type, _Out_ const char** log)"),Dt=m.func("int cm_log_reset_uarch(cm_machine* m, int32_t log_type, _Out_ const char** log)"),It=m.func("int cm_log_send_cmio_response(cm_machine* m, uint16_t reason, const uint8_t* data, uint64_t length, int32_t log_type, _Out_ const char** log)"),I=m.func("int cm_verify_step(const cm_machine* m, const uint8_t* root_hash_before, const char* log_filename, uint64_t mcycle_count, const uint8_t* root_hash_after, _Out_ int* break_reason)"),N=m.func("int cm_verify_step_uarch(const cm_machine* m, const uint8_t* root_hash_before, const char* log, const uint8_t* root_hash_after)"),J=m.func("int cm_verify_reset_uarch(const cm_machine* m, const uint8_t* root_hash_before, const char* log, const uint8_t* root_hash_after)"),E=m.func("int cm_verify_send_cmio_response(const cm_machine* m, uint16_t reason, const uint8_t* data, uint64_t length, const uint8_t* root_hash_before, const char* log, const uint8_t* root_hash_after)"),Nt=m.func("int cm_verify_merkle_tree(cm_machine* m, _Out_ bool* result)"),Jt=m.func("int cm_verify_dirty_page_maps(cm_machine* m, _Out_ bool* result)");var Et=new FinalizationRegistry(o=>{o&&ut(o)}),h=class o{machine=null;static new(){let e=[null],n=st(e);if(n!==0)throw s.fromCode(n);return new o(e[0])}cloneEmpty(){let e=[null],n=ct(this.machine,e);if(n!==0)throw s.fromCode(n);return new o(e[0])}static createNew(e,n){let r=[null],i=lt(JSON.stringify(e),n?JSON.stringify(n):null,r);if(i!==0)throw s.fromCode(i);return new o(r[0])}static loadNew(e,n){let r=[null],i=ht(e,n?JSON.stringify(n):null,r);if(i!==0)throw s.fromCode(i);return new o(r[0])}constructor(e){this.machine=e,Et.register(this,e)}static getLastError(){return ot()}getDefaultConfig(){let e=[null],n=j(this.machine,e);if(n!==0)throw s.fromCode(n);return JSON.parse(e[0])}static getDefaultConfig(){let e=[null],n=j(null,e);if(n!==0)throw s.fromCode(n);return JSON.parse(e[0])}getRegAddress(e){let n=[0n],r=D(this.machine,e,n);if(r!==0)throw s.fromCode(r);return n[0]}static getRegAddress(e){let n=[0n],r=D(null,e,n);if(r!==0)throw s.fromCode(r);return n[0]}isEmpty(){let e=[!1],n=at(this.machine,e);if(n!==0)throw s.fromCode(n);return e[0]}create(e,n){let r=mt(this.machine,JSON.stringify(e),n?JSON.stringify(n):null);if(r!==0)throw s.fromCode(r);return this}load(e,n){let r=ft(this.machine,e,n?JSON.stringify(n):null);if(r!==0)throw s.fromCode(r);return this}store(e){let n=_t(this.machine,e);if(n!==0)throw s.fromCode(n);return this}destroy(){let e=dt(this.machine);if(e!==0)throw s.fromCode(e)}setRuntimeConfig(e){let n=pt(this.machine,JSON.stringify(e));if(n!==0)throw s.fromCode(n)}getRuntimeConfig(){let e=[null],n=yt(this.machine,e);if(n!==0)throw s.fromCode(n);return JSON.parse(e[0])}replaceMemoryRange(e,n,r,i){let u=vt(this.machine,e,n,r,i||null);if(u!==0)throw s.fromCode(u)}getInitialConfig(){let e=[null],n=wt(this.machine,e);if(n!==0)throw s.fromCode(n);return JSON.parse(e[0])}getMemoryRanges(){let e=[null],n=bt(this.machine,e);if(n!==0)throw s.fromCode(n);return JSON.parse(e[0])}getRootHash(){let e=Buffer.alloc(32),n=Mt(this.machine,e);if(n!==0)throw s.fromCode(n);return e}getProof(e,n){let r=[null],i=gt(this.machine,e,n,r);if(i!==0)throw s.fromCode(i);return JSON.parse(r[0])}readWord(e){let n=[0n],r=Ct(this.machine,e,n);if(r!==0)throw s.fromCode(r);return n[0]}readReg(e){let n=[0n],r=Ot(this.machine,e,n);if(r!==0)throw s.fromCode(r);return n[0]}writeReg(e,n){let r=kt(this.machine,e,n);if(r!==0)throw s.fromCode(r)}readMemory(e,n){let r=Buffer.alloc(Number(n)),i=At(this.machine,e,r,n);if(i!==0)throw s.fromCode(i);return r}writeMemory(e,n){let r=Bt(this.machine,e,n,BigInt(n.length));if(r!==0)throw s.fromCode(r)}readVirtualMemory(e,n){let r=Buffer.alloc(Number(n)),i=xt(this.machine,e,r,n);if(i!==0)throw s.fromCode(i);return r}writeVirtualMemory(e,n){let r=St(this.machine,e,n,BigInt(n.length));if(r!==0)throw s.fromCode(r)}translateVirtualAddress(e){let n=[0n],r=Tt(this.machine,e,n);if(r!==0)throw s.fromCode(r);return n[0]}run(e=O){let n=[0],r=Ft(this.machine,e,n);if(r!==0)throw s.fromCode(r);return n[0]}runUarch(e){let n=[0],r=Lt(this.machine,e,n);if(r!==0)throw s.fromCode(r);return n[0]}resetUarch(){let e=Xt(this.machine);if(e!==0)throw s.fromCode(e)}receiveCmioRequest(){let e=[0],n=[0],r=Buffer.allocUnsafe(2*1024*1024),i=[r.length],u=Ut(this.machine,e,n,r,i);if(u!==0)throw s.fromCode(u);return{cmd:e[0],reason:n[0],data:r.subarray(0,i[0])}}sendCmioResponse(e,n){let r=Pt(this.machine,e,n,BigInt(n.length));if(r!==0)throw s.fromCode(r)}logStep(e,n){let r=[0],i=Ht(this.machine,e,n,r);if(i!==0)throw s.fromCode(i);return r[0]}logStepUarch(e){let n=[null],r=0;r|=e.has_annotations?1:0,r|=e.has_large_data?2:0;let i=jt(this.machine,r,n);if(i!==0)throw s.fromCode(i);return JSON.parse(n[0])}logResetUarch(e){let n=[null],r=0;r|=e.has_annotations?1:0,r|=e.has_large_data?2:0;let i=Dt(this.machine,r,n);if(i!==0)throw s.fromCode(i);return JSON.parse(n[0])}logSendCmioResponse(e,n,r){let i=[null],u=0;u|=r.has_annotations?1:0,u|=r.has_large_data?2:0;let a=It(this.machine,e,n,BigInt(n.length),u,i);if(a!==0)throw s.fromCode(a);return i[0]}verifyStep(e,n,r,i){let u=[0],a=I(this.machine,e,n,r,i,u);if(a!==0)throw s.fromCode(a);return u[0]}static verifyStep(e,n,r,i){let u=[0],a=I(null,e,n,r,i,u);if(a!==0)throw s.fromCode(a);return u[0]}verifyStepUarch(e,n,r){let i=N(this.machine,e,JSON.stringify(n),r);if(i!==0)throw s.fromCode(i)}static verifyStepUarch(e,n,r){let i=N(null,e,JSON.stringify(n),r);if(i!==0)throw s.fromCode(i)}verifyResetUarch(e,n,r){let i=J(this.machine,e,JSON.stringify(n),r);if(i!==0)throw s.fromCode(i)}static verifyResetUarch(e,n,r){let i=J(null,e,JSON.stringify(n),r);if(i!==0)throw s.fromCode(i)}verifySendCmioResponse(e,n,r,i,u){let a=E(this.machine,e,n,BigInt(n.length),r,JSON.stringify(i),u);if(a!==0)throw s.fromCode(a)}static verifySendCmioResponse(e,n,r,i,u){let a=E(null,e,n,BigInt(n.length),r,JSON.stringify(i),u);if(a!==0)throw s.fromCode(a)}verifyMerkleTree(){let e=[!1],n=Nt(this.machine,e);if(n!==0)throw s.fromCode(n);return e[0]}verifyDirtyPageMaps(){let e=[!1],n=Jt(this.machine,e);if(n!==0)throw s.fromCode(n);return e[0]}};var O=0xffffffffffffffffffn,k=(i=>(i[i.HashSize=32]="HashSize",i[i.TreeLog2WordSize=5]="TreeLog2WordSize",i[i.TreeLog2PageSize=12]="TreeLog2PageSize",i[i.TreeLog2RootSize=64]="TreeLog2RootSize",i))(k||{}),qt={CmioRxBufferStart:0x60000000n,CmioRxBufferLog2Size:21,CmioTxBufferStart:0x60800000n,CmioTxBufferLog2Size:21,RamStart:0x80000000n},M=(c=>(c[c.Ok=0]="Ok",c[c.InvalidArgument=-1]="InvalidArgument",c[c.DomainError=-2]="DomainError",c[c.LengthError=-3]="LengthError",c[c.OutOfRange=-4]="OutOfRange",c[c.LogicError=-5]="LogicError",c[c.RuntimeError=-6]="RuntimeError",c[c.RangeError=-7]="RangeError",c[c.OverflowError=-8]="OverflowError",c[c.UnderflowError=-9]="UnderflowError",c[c.RegexError=-10]="RegexError",c[c.SystemError=-11]="SystemError",c[c.BadTypeid=-12]="BadTypeid",c[c.BadCast=-13]="BadCast",c[c.BadAnyCast=-14]="BadAnyCast",c[c.BadOptionalAccess=-15]="BadOptionalAccess",c[c.BadWeakPtr=-16]="BadWeakPtr",c[c.BadFunctionCall=-17]="BadFunctionCall",c[c.BadAlloc=-18]="BadAlloc",c[c.BadArrayNewLength=-19]="BadArrayNewLength",c[c.BadException=-20]="BadException",c[c.BadVariantAccess=-21]="BadVariantAccess",c[c.Exception=-22]="Exception",c[c.Unknown=-23]="Unknown",c))(M||{}),s=class o extends Error{code;description;constructor(e,n){let r=`Cartesi Machine Error: ${n} (code: ${e})`;super(r),this.name="MachineError",this.code=e,this.description=n,Error.captureStackTrace&&Error.captureStackTrace(this,o)}static fromCode(e){let n=h.getLastError();return new o(e,n)}},A=(a=>(a[a.Failed=0]="Failed",a[a.Halted=1]="Halted",a[a.YieldedManually=2]="YieldedManually",a[a.YieldedAutomatically=3]="YieldedAutomatically",a[a.YieldedSoftly=4]="YieldedSoftly",a[a.ReachedTargetMcycle=5]="ReachedTargetMcycle",a))(A||{}),Y=(r=>(r[r.ReachedTargetCycle=0]="ReachedTargetCycle",r[r.UarchHalted=1]="UarchHalted",r[r.Failed=2]="Failed",r))(Y||{}),$=(n=>(n[n.Automatic=0]="Automatic",n[n.Manual=1]="Manual",n))($||{}),B=(l=>(l[l.AutomaticProgress=1]="AutomaticProgress",l[l.AutomaticTxOutput=2]="AutomaticTxOutput",l[l.AutomaticTxReport=4]="AutomaticTxReport",l[l.ManualRxAccepted=1]="ManualRxAccepted",l[l.ManualRxRejected=2]="ManualRxRejected",l[l.ManualTxException=4]="ManualTxException",l[l.AdvanceState=0]="AdvanceState",l[l.InspectState=1]="InspectState",l))(B||{}),z=(t=>(t[t.X0=0]="X0",t[t.X1=1]="X1",t[t.X2=2]="X2",t[t.X3=3]="X3",t[t.X4=4]="X4",t[t.X5=5]="X5",t[t.X6=6]="X6",t[t.X7=7]="X7",t[t.X8=8]="X8",t[t.X9=9]="X9",t[t.X10=10]="X10",t[t.X11=11]="X11",t[t.X12=12]="X12",t[t.X13=13]="X13",t[t.X14=14]="X14",t[t.X15=15]="X15",t[t.X16=16]="X16",t[t.X17=17]="X17",t[t.X18=18]="X18",t[t.X19=19]="X19",t[t.X20=20]="X20",t[t.X21=21]="X21",t[t.X22=22]="X22",t[t.X23=23]="X23",t[t.X24=24]="X24",t[t.X25=25]="X25",t[t.X26=26]="X26",t[t.X27=27]="X27",t[t.X28=28]="X28",t[t.X29=29]="X29",t[t.X30=30]="X30",t[t.X31=31]="X31",t[t.F0=32]="F0",t[t.F1=33]="F1",t[t.F2=34]="F2",t[t.F3=35]="F3",t[t.F4=36]="F4",t[t.F5=37]="F5",t[t.F6=38]="F6",t[t.F7=39]="F7",t[t.F8=40]="F8",t[t.F9=41]="F9",t[t.F10=42]="F10",t[t.F11=43]="F11",t[t.F12=44]="F12",t[t.F13=45]="F13",t[t.F14=46]="F14",t[t.F15=47]="F15",t[t.F16=48]="F16",t[t.F17=49]="F17",t[t.F18=50]="F18",t[t.F19=51]="F19",t[t.F20=52]="F20",t[t.F21=53]="F21",t[t.F22=54]="F22",t[t.F23=55]="F23",t[t.F24=56]="F24",t[t.F25=57]="F25",t[t.F26=58]="F26",t[t.F27=59]="F27",t[t.F28=60]="F28",t[t.F29=61]="F29",t[t.F30=62]="F30",t[t.F31=63]="F31",t[t.Pc=64]="Pc",t[t.Fcsr=65]="Fcsr",t[t.Mvendorid=66]="Mvendorid",t[t.Marchid=67]="Marchid",t[t.Mimpid=68]="Mimpid",t[t.Mcycle=69]="Mcycle",t[t.Icycleinstret=70]="Icycleinstret",t[t.Mstatus=71]="Mstatus",t[t.Mtvec=72]="Mtvec",t[t.Mscratch=73]="Mscratch",t[t.Mepc=74]="Mepc",t[t.Mcause=75]="Mcause",t[t.Mtval=76]="Mtval",t[t.Misa=77]="Misa",t[t.Mie=78]="Mie",t[t.Mip=79]="Mip",t[t.Medeleg=80]="Medeleg",t[t.Mideleg=81]="Mideleg",t[t.Mcounteren=82]="Mcounteren",t[t.Menvcfg=83]="Menvcfg",t[t.Stvec=84]="Stvec",t[t.Sscratch=85]="Sscratch",t[t.Sepc=86]="Sepc",t[t.Scause=87]="Scause",t[t.Stval=88]="Stval",t[t.Satp=89]="Satp",t[t.Scounteren=90]="Scounteren",t[t.Senvcfg=91]="Senvcfg",t[t.Ilrsc=92]="Ilrsc",t[t.Iprv=93]="Iprv",t[t.IflagsX=94]="IflagsX",t[t.IflagsY=95]="IflagsY",t[t.IflagsH=96]="IflagsH",t[t.Iunrep=97]="Iunrep",t[t.ClintMtimecmp=98]="ClintMtimecmp",t[t.PlicGirqpend=99]="PlicGirqpend",t[t.PlicGirqsrvd=100]="PlicGirqsrvd",t[t.HtifToHost=101]="HtifToHost",t[t.HtifFromHost=102]="HtifFromHost",t[t.HtifIhalt=103]="HtifIhalt",t[t.HtifIconsole=104]="HtifIconsole",t[t.HtifIyield=105]="HtifIyield",t[t.UarchX0=106]="UarchX0",t[t.UarchX1=107]="UarchX1",t[t.UarchX2=108]="UarchX2",t[t.UarchX3=109]="UarchX3",t[t.UarchX4=110]="UarchX4",t[t.UarchX5=111]="UarchX5",t[t.UarchX6=112]="UarchX6",t[t.UarchX7=113]="UarchX7",t[t.UarchX8=114]="UarchX8",t[t.UarchX9=115]="UarchX9",t[t.UarchX10=116]="UarchX10",t[t.UarchX11=117]="UarchX11",t[t.UarchX12=118]="UarchX12",t[t.UarchX13=119]="UarchX13",t[t.UarchX14=120]="UarchX14",t[t.UarchX15=121]="UarchX15",t[t.UarchX16=122]="UarchX16",t[t.UarchX17=123]="UarchX17",t[t.UarchX18=124]="UarchX18",t[t.UarchX19=125]="UarchX19",t[t.UarchX20=126]="UarchX20",t[t.UarchX21=127]="UarchX21",t[t.UarchX22=128]="UarchX22",t[t.UarchX23=129]="UarchX23",t[t.UarchX24=130]="UarchX24",t[t.UarchX25=131]="UarchX25",t[t.UarchX26=132]="UarchX26",t[t.UarchX27=133]="UarchX27",t[t.UarchX28=134]="UarchX28",t[t.UarchX29=135]="UarchX29",t[t.UarchX30=136]="UarchX30",t[t.UarchX31=137]="UarchX31",t[t.UarchPc=138]="UarchPc",t[t.UarchCycle=139]="UarchCycle",t[t.UarchHaltFlag=140]="UarchHaltFlag",t[t.HtifToHostDev=141]="HtifToHostDev",t[t.HtifToHostCmd=142]="HtifToHostCmd",t[t.HtifToHostReason=143]="HtifToHostReason",t[t.HtifToHostData=144]="HtifToHostData",t[t.HtifFromHostDev=145]="HtifFromHostDev",t[t.HtifFromHostCmd=146]="HtifFromHostCmd",t[t.HtifFromHostReason=147]="HtifFromHostReason",t[t.HtifFromHostData=148]="HtifFromHostData",t[t.Unknown_=149]="Unknown_",t[t.First_=150]="First_",t[t.Last_=151]="Last_",t))(z||{});function Yt(){return h.new()}function $t(o,e){return h.createNew(o,e)}function zt(o,e){return h.loadNew(o,e)}function Vt(){return h.getLastError()}function Wt(){return h.getDefaultConfig()}function Gt(o){return h.getRegAddress(o)}function Kt(o,e,n,r){return h.verifyStep(o,e,n,r)}function Qt(o,e,n){h.verifyStepUarch(o,e,n)}function Zt(o,e,n){h.verifyResetUarch(o,e,n)}function Rt(o,e,n,r,i){h.verifySendCmioResponse(o,e,n,r,i)}var _=y("cartesi_jsonrpc"),te=y("c"),ee=_.func("int cm_jsonrpc_spawn_server(const char *address, int64_t spawn_timeout_ms, _Out_ cm_machine **new_m, _Out_ const char **bound_address, _Out_ uint32_t *pid)"),ne=_.func("int cm_jsonrpc_connect_server(const char *address, int64_t connect_timeout_ms, _Out_ cm_machine **new_m)"),re=_.func("int cm_jsonrpc_fork_server(const cm_machine *m, _Out_ cm_machine **forked_m, _Out_ const char **address, _Out_ uint32_t *pid)"),ie=_.func("int cm_jsonrpc_shutdown_server(cm_machine *m)"),oe=_.func("int cm_jsonrpc_rebind_server(cm_machine *m, const char *address, _Out_ const char **address_bound)"),se=_.func("int cm_jsonrpc_get_server_version(const cm_machine *m, _Out_ const char **version)"),ce=_.func("int cm_jsonrpc_emancipate_server(cm_machine *m)"),ae=_.func("int cm_jsonrpc_set_timeout(cm_machine *m, int64_t ms)"),ue=_.func("int cm_jsonrpc_get_timeout(cm_machine *m, _Out_ int64_t *ms)"),me=_.func("int cm_jsonrpc_set_cleanup_call(cm_machine *m, int call)"),le=_.func("int cm_jsonrpc_get_cleanup_call(cm_machine *m, _Out_ int *call)"),fe=_.func("int cm_jsonrpc_get_server_address(cm_machine *m, _Out_ const char **address)"),he=_.func("int cm_jsonrpc_delay_next_request(cm_machine *m, uint64_t ms)"),x=te.func("int fcntl(int fd, int cmd, int arg)"),_e=1,V=2,de=1;function pe(o){let e=x(o,_e,0);if(e===-1)throw new Error(`Failed to get flags for fd ${o}`);let n=e&~de;if(x(o,V,n)===-1)throw new Error(`Failed to set flags for fd ${o}`);return e}function ye(o,e){if(x(o,V,e)===-1)throw new Error(`Failed to set flags for fd ${o}`)}var p=class o extends h{serverAddress=null;serverPid=null;static spawn(e="127.0.0.1:0",n=-1){let r=pe(1);try{let i=[null],u=[null],a=[null],f=ee(e,n,i,u,a);if(f!==0)throw s.fromCode(f);if(u[0]===null||a[0]===null)throw new Error("Failed to get output parameters from spawn server");let l=new o(i[0]);return l.serverAddress=u[0],l.serverPid=a[0],l}finally{ye(1,r)}}static connect(e,n=-1){let r=[null],i=ne(e,n,r);if(i!==0)throw s.fromCode(i);let u=new o(r[0]);return u.serverAddress=e,u}fork(){let e=[null],n=[null],r=[null],i=re(this.machine,e,n,r);if(i!==0)throw s.fromCode(i);if(n[0]===null||r[0]===null)throw new Error("Failed to get output parameters from fork server");let u=new o(e[0]);return u.serverAddress=n[0],u.serverPid=r[0],u}shutdown(){let e=ie(this.machine);if(e!==0)throw s.fromCode(e)}rebind(e){let n=[null],r=oe(this.machine,e,n);if(r!==0)throw s.fromCode(r);if(n[0]===null)throw new Error("Failed to get bound address from rebind server");return this.serverAddress=n[0],n[0]}getServerVersion(){let e=[null],n=se(this.machine,e);if(n!==0)throw s.fromCode(n);if(e[0]===null)throw new Error("Failed to get server version");return e[0]}emancipate(){let e=ce(this.machine);if(e!==0)throw s.fromCode(e)}setTimeout(e){let n=ae(this.machine,e);if(n!==0)throw s.fromCode(n)}getTimeout(){let e=[null],n=ue(this.machine,e);if(n!==0)throw s.fromCode(n);if(e[0]===null)throw new Error("Failed to get timeout");return e[0]}setCleanupCall(e){let n=me(this.machine,e);if(n!==0)throw s.fromCode(n);return this}getCleanupCall(){let e=[null],n=le(this.machine,e);if(n!==0)throw s.fromCode(n);if(e[0]===null)throw new Error("Failed to get cleanup call");return e[0]}getServerAddress(){let e=[null],n=fe(this.machine,e);if(n!==0)throw s.fromCode(n);if(e[0]===null)throw new Error("Failed to get server address");return e[0]}delayNextRequest(e){let n=he(this.machine,e);if(n!==0)throw s.fromCode(n)}getBoundAddress(){return this.serverAddress}getServerPid(){return this.serverPid}load(e,n){return super.load(e,n),this}cloneEmpty(){return super.cloneEmpty(),this}create(e,n){return super.create(e,n),this}store(e){return super.store(e),this}};var W=(r=>(r[r.Nothing=0]="Nothing",r[r.Destroy=1]="Destroy",r[r.Shutdown=2]="Shutdown",r))(W||{});function S(o="127.0.0.1:0",e=-1){return p.spawn(o,e)}function ve(o,e=-1){return p.connect(o,e)}var d=class extends Error{constructor(e){super(e),this.name="RollupsFatalError"}},v=class extends Error{constructor(){super("Input rejected"),this.name="RollupsInputRejectedError"}};function we(o){return new X(o)}function G(o,e){return new L(o,e?.noRollback??!1)}var T="127.0.0.1:0",F=-1;function be(o,e){let{runtimeConfig:n}=e??{address:T,timeout:F,runtimeConfig:void 0},r=e?.address??T,i=e?.timeout??F,u=S(r,i).load(o,n);return G(u,e)}function Me(o,e){return e=e??{noRollback:!1,address:T,timeout:F},typeof o=="string"?be(o,e):o instanceof p?G(o,e):we(o)}var g=class{advance(e,n){let r=function*(){let i=this.startTransaction();for(i.sendCmioResponse(0,e);;){let u=i.run();switch(u){case 2:{let{reason:a,data:f}=i.receiveCmioRequest();switch(a){case 1:return this.commitTransaction(i),f;case 2:throw this.rollbackTransaction(i),new v;case 4:{this.rollbackTransaction(i);let l=f.toString("utf-8");throw new d(l)}default:throw this.rollbackTransaction(i),new d(`Unexpected yield reason: ${a}`)}}case 3:{let{reason:a,data:f}=i.receiveCmioRequest();switch(a){case 1:{try{yield{type:"progress",data:f.readUInt32LE()}}catch{}break}case 2:{yield{type:"output",data:f};break}case 4:{yield{type:"report",data:f};break}}continue}default:throw this.rollbackTransaction(i),new d(`Unexpected break reason: ${u}`)}}}.bind(this);if(n?.collect){let i=[],u=[],a=r();for(;;){let f=a.next();if(f.done)return{outputs:i,reports:u,outputsMerkleRoot:f.value};switch(f.value.type){case"output":i.push(f.value.data);break;case"report":u.push(f.value.data);break;case"progress":break}}}return r()}inspect(e,n){let r=function*(){let i=this.startTransaction();for(i.sendCmioResponse(1,e);;){let u=i.run();switch(u){case 2:{let{reason:a,data:f}=i.receiveCmioRequest();switch(a){case 1:{this.rollbackTransaction(i);return}case 2:throw this.rollbackTransaction(i),new v;case 4:{this.rollbackTransaction(i);let l=f.toString("utf-8");throw new d(l)}default:throw this.rollbackTransaction(i),new d(`Unexpected yield reason: ${a}`)}}case 3:{let{reason:a,data:f}=i.receiveCmioRequest();switch(a){case 1:break;case 2:break;case 4:{yield f;break}}continue}default:throw this.rollbackTransaction(i),new d(`Unexpected break reason: ${u}`)}}}.bind(this);return n?.collect?[...r()]:r()}},L=class extends g{machine;noRollback;constructor(e,n=!1){super(),this.machine=e,this.noRollback=n}startTransaction(){return this.noRollback?this.machine:this.machine.fork()}commitTransaction(e){this.noRollback||(this.machine.shutdown(),this.machine=e)}rollbackTransaction(e){this.noRollback||e.shutdown()}shutdown(){this.machine.shutdown()}store(e){return this.machine.store(e),this}},X=class extends g{machine;constructor(e){super(),this.machine=e}startTransaction(){return this.machine}commitTransaction(e){this.machine=e}rollbackTransaction(e){this.machine=e}shutdown(){}store(e){return this.machine.store(e),this}};0&&(module.exports={BreakReason,CleanupCall,CmioYieldCommand,CmioYieldReason,Constant,ErrorCode,MAX_MCYCLE,MachineError,PmaConstant,Reg,RollupsFatalError,RollupsInputRejectedError,UarchBreakReason,connect,create,empty,getDefaultConfig,getLastError,getRegAddress,load,rollups,spawn,verifyResetUarch,verifySendCmioResponse,verifyStep,verifyStepUarch});
2
2
  //# sourceMappingURL=index.cjs.map