mikrojs 0.0.0 → 0.0.8

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 (497) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/bin/mikrojs.js +3 -0
  4. package/dist/_exports/ble.d.ts +3 -0
  5. package/dist/_exports/ble.d.ts.map +1 -0
  6. package/dist/_exports/ble.js +2 -0
  7. package/dist/_exports/ble.js.map +1 -0
  8. package/dist/_exports/cbor.d.ts +3 -0
  9. package/dist/_exports/cbor.d.ts.map +1 -0
  10. package/dist/_exports/cbor.js +2 -0
  11. package/dist/_exports/cbor.js.map +1 -0
  12. package/dist/_exports/console.d.ts +2 -0
  13. package/dist/_exports/console.d.ts.map +1 -0
  14. package/dist/_exports/console.js +2 -0
  15. package/dist/_exports/console.js.map +1 -0
  16. package/dist/_exports/env.d.ts +2 -0
  17. package/dist/_exports/env.d.ts.map +1 -0
  18. package/dist/_exports/env.js +2 -0
  19. package/dist/_exports/env.js.map +1 -0
  20. package/dist/_exports/format.d.ts +2 -0
  21. package/dist/_exports/format.d.ts.map +1 -0
  22. package/dist/_exports/format.js +2 -0
  23. package/dist/_exports/format.js.map +1 -0
  24. package/dist/_exports/fs.d.ts +2 -0
  25. package/dist/_exports/fs.d.ts.map +1 -0
  26. package/dist/_exports/fs.js +2 -0
  27. package/dist/_exports/fs.js.map +1 -0
  28. package/dist/_exports/http/helpers.d.ts +3 -0
  29. package/dist/_exports/http/helpers.d.ts.map +1 -0
  30. package/dist/_exports/http/helpers.js +5 -0
  31. package/dist/_exports/http/helpers.js.map +1 -0
  32. package/dist/_exports/http/request.d.ts +4 -0
  33. package/dist/_exports/http/request.d.ts.map +1 -0
  34. package/dist/_exports/http/request.js +10 -0
  35. package/dist/_exports/http/request.js.map +1 -0
  36. package/dist/_exports/i2c.d.ts +2 -0
  37. package/dist/_exports/i2c.d.ts.map +1 -0
  38. package/dist/_exports/i2c.js +2 -0
  39. package/dist/_exports/i2c.js.map +1 -0
  40. package/dist/_exports/index.d.ts +61 -0
  41. package/dist/_exports/index.d.ts.map +1 -0
  42. package/dist/_exports/index.js +4 -0
  43. package/dist/_exports/index.js.map +1 -0
  44. package/dist/_exports/inspect.d.ts +2 -0
  45. package/dist/_exports/inspect.d.ts.map +1 -0
  46. package/dist/_exports/inspect.js +2 -0
  47. package/dist/_exports/inspect.js.map +1 -0
  48. package/dist/_exports/kv/nvs.d.ts +3 -0
  49. package/dist/_exports/kv/nvs.d.ts.map +1 -0
  50. package/dist/_exports/kv/nvs.js +2 -0
  51. package/dist/_exports/kv/nvs.js.map +1 -0
  52. package/dist/_exports/kv/rtc.d.ts +3 -0
  53. package/dist/_exports/kv/rtc.d.ts.map +1 -0
  54. package/dist/_exports/kv/rtc.js +2 -0
  55. package/dist/_exports/kv/rtc.js.map +1 -0
  56. package/dist/_exports/neopixel.d.ts +2 -0
  57. package/dist/_exports/neopixel.d.ts.map +1 -0
  58. package/dist/_exports/neopixel.js +2 -0
  59. package/dist/_exports/neopixel.js.map +1 -0
  60. package/dist/_exports/pin.d.ts +2 -0
  61. package/dist/_exports/pin.d.ts.map +1 -0
  62. package/dist/_exports/pin.js +2 -0
  63. package/dist/_exports/pin.js.map +1 -0
  64. package/dist/_exports/pwm.d.ts +2 -0
  65. package/dist/_exports/pwm.d.ts.map +1 -0
  66. package/dist/_exports/pwm.js +2 -0
  67. package/dist/_exports/pwm.js.map +1 -0
  68. package/dist/_exports/reader.d.ts +2 -0
  69. package/dist/_exports/reader.d.ts.map +1 -0
  70. package/dist/_exports/reader.js +2 -0
  71. package/dist/_exports/reader.js.map +1 -0
  72. package/dist/_exports/result.d.ts +2 -0
  73. package/dist/_exports/result.d.ts.map +1 -0
  74. package/dist/_exports/result.js +2 -0
  75. package/dist/_exports/result.js.map +1 -0
  76. package/dist/_exports/schema.d.ts +2 -0
  77. package/dist/_exports/schema.d.ts.map +1 -0
  78. package/dist/_exports/schema.js +2 -0
  79. package/dist/_exports/schema.js.map +1 -0
  80. package/dist/_exports/sim.d.ts +199 -0
  81. package/dist/_exports/sim.d.ts.map +1 -0
  82. package/dist/_exports/sim.js +8 -0
  83. package/dist/_exports/sim.js.map +1 -0
  84. package/dist/_exports/sleep.d.ts +2 -0
  85. package/dist/_exports/sleep.d.ts.map +1 -0
  86. package/dist/_exports/sleep.js +2 -0
  87. package/dist/_exports/sleep.js.map +1 -0
  88. package/dist/_exports/sntp.d.ts +3 -0
  89. package/dist/_exports/sntp.d.ts.map +1 -0
  90. package/dist/_exports/sntp.js +2 -0
  91. package/dist/_exports/sntp.js.map +1 -0
  92. package/dist/_exports/spi.d.ts +2 -0
  93. package/dist/_exports/spi.d.ts.map +1 -0
  94. package/dist/_exports/spi.js +2 -0
  95. package/dist/_exports/spi.js.map +1 -0
  96. package/dist/_exports/stdio.d.ts +2 -0
  97. package/dist/_exports/stdio.d.ts.map +1 -0
  98. package/dist/_exports/stdio.js +2 -0
  99. package/dist/_exports/stdio.js.map +1 -0
  100. package/dist/_exports/stream.d.ts +2 -0
  101. package/dist/_exports/stream.d.ts.map +1 -0
  102. package/dist/_exports/stream.js +2 -0
  103. package/dist/_exports/stream.js.map +1 -0
  104. package/dist/_exports/sys.d.ts +2 -0
  105. package/dist/_exports/sys.d.ts.map +1 -0
  106. package/dist/_exports/sys.js +2 -0
  107. package/dist/_exports/sys.js.map +1 -0
  108. package/dist/_exports/test.d.ts +2 -0
  109. package/dist/_exports/test.d.ts.map +1 -0
  110. package/dist/_exports/test.js +2 -0
  111. package/dist/_exports/test.js.map +1 -0
  112. package/dist/_exports/uart.d.ts +2 -0
  113. package/dist/_exports/uart.d.ts.map +1 -0
  114. package/dist/_exports/uart.js +2 -0
  115. package/dist/_exports/uart.js.map +1 -0
  116. package/dist/_exports/wifi.d.ts +3 -0
  117. package/dist/_exports/wifi.d.ts.map +1 -0
  118. package/dist/_exports/wifi.js +2 -0
  119. package/dist/_exports/wifi.js.map +1 -0
  120. package/dist/cli/cli.d.ts +3 -0
  121. package/dist/cli/cli.d.ts.map +1 -0
  122. package/dist/cli/cli.js +215 -0
  123. package/dist/cli/cli.js.map +1 -0
  124. package/dist/cli/cliWrapper.d.ts +3 -0
  125. package/dist/cli/cliWrapper.d.ts.map +1 -0
  126. package/dist/cli/cliWrapper.js +40 -0
  127. package/dist/cli/cliWrapper.js.map +1 -0
  128. package/dist/cli/commands/build-runtime.d.ts +14 -0
  129. package/dist/cli/commands/build-runtime.d.ts.map +1 -0
  130. package/dist/cli/commands/build-runtime.js +122 -0
  131. package/dist/cli/commands/build-runtime.js.map +1 -0
  132. package/dist/cli/commands/build.d.ts +31 -0
  133. package/dist/cli/commands/build.d.ts.map +1 -0
  134. package/dist/cli/commands/build.js +145 -0
  135. package/dist/cli/commands/build.js.map +1 -0
  136. package/dist/cli/commands/clean.d.ts +16 -0
  137. package/dist/cli/commands/clean.d.ts.map +1 -0
  138. package/dist/cli/commands/clean.js +148 -0
  139. package/dist/cli/commands/clean.js.map +1 -0
  140. package/dist/cli/commands/console.d.ts +19 -0
  141. package/dist/cli/commands/console.d.ts.map +1 -0
  142. package/dist/cli/commands/console.js +32 -0
  143. package/dist/cli/commands/console.js.map +1 -0
  144. package/dist/cli/commands/deploy.d.ts +63 -0
  145. package/dist/cli/commands/deploy.d.ts.map +1 -0
  146. package/dist/cli/commands/deploy.js +242 -0
  147. package/dist/cli/commands/deploy.js.map +1 -0
  148. package/dist/cli/commands/dev.d.ts +41 -0
  149. package/dist/cli/commands/dev.d.ts.map +1 -0
  150. package/dist/cli/commands/dev.js +170 -0
  151. package/dist/cli/commands/dev.js.map +1 -0
  152. package/dist/cli/commands/docs.d.ts +7 -0
  153. package/dist/cli/commands/docs.d.ts.map +1 -0
  154. package/dist/cli/commands/docs.js +20 -0
  155. package/dist/cli/commands/docs.js.map +1 -0
  156. package/dist/cli/commands/env.d.ts +59 -0
  157. package/dist/cli/commands/env.d.ts.map +1 -0
  158. package/dist/cli/commands/env.js +257 -0
  159. package/dist/cli/commands/env.js.map +1 -0
  160. package/dist/cli/commands/erase.d.ts +18 -0
  161. package/dist/cli/commands/erase.d.ts.map +1 -0
  162. package/dist/cli/commands/erase.js +90 -0
  163. package/dist/cli/commands/erase.js.map +1 -0
  164. package/dist/cli/commands/flash.d.ts +30 -0
  165. package/dist/cli/commands/flash.d.ts.map +1 -0
  166. package/dist/cli/commands/flash.js +243 -0
  167. package/dist/cli/commands/flash.js.map +1 -0
  168. package/dist/cli/commands/home.d.ts +7 -0
  169. package/dist/cli/commands/home.d.ts.map +1 -0
  170. package/dist/cli/commands/home.js +20 -0
  171. package/dist/cli/commands/home.js.map +1 -0
  172. package/dist/cli/commands/ls.d.ts +17 -0
  173. package/dist/cli/commands/ls.d.ts.map +1 -0
  174. package/dist/cli/commands/ls.js +62 -0
  175. package/dist/cli/commands/ls.js.map +1 -0
  176. package/dist/cli/commands/sim/clean.d.ts +7 -0
  177. package/dist/cli/commands/sim/clean.d.ts.map +1 -0
  178. package/dist/cli/commands/sim/clean.js +34 -0
  179. package/dist/cli/commands/sim/clean.js.map +1 -0
  180. package/dist/cli/commands/sim/deploy.d.ts +46 -0
  181. package/dist/cli/commands/sim/deploy.d.ts.map +1 -0
  182. package/dist/cli/commands/sim/deploy.js +127 -0
  183. package/dist/cli/commands/sim/deploy.js.map +1 -0
  184. package/dist/cli/commands/sim/dev.d.ts +52 -0
  185. package/dist/cli/commands/sim/dev.d.ts.map +1 -0
  186. package/dist/cli/commands/sim/dev.js +380 -0
  187. package/dist/cli/commands/sim/dev.js.map +1 -0
  188. package/dist/cli/commands/sim/env.d.ts +56 -0
  189. package/dist/cli/commands/sim/env.d.ts.map +1 -0
  190. package/dist/cli/commands/sim/env.js +204 -0
  191. package/dist/cli/commands/sim/env.js.map +1 -0
  192. package/dist/cli/commands/sim/profile.d.ts +67 -0
  193. package/dist/cli/commands/sim/profile.d.ts.map +1 -0
  194. package/dist/cli/commands/sim/profile.js +356 -0
  195. package/dist/cli/commands/sim/profile.js.map +1 -0
  196. package/dist/cli/commands/sim/repl.d.ts +16 -0
  197. package/dist/cli/commands/sim/repl.d.ts.map +1 -0
  198. package/dist/cli/commands/sim/repl.js +119 -0
  199. package/dist/cli/commands/sim/repl.js.map +1 -0
  200. package/dist/cli/commands/sim/reset.d.ts +11 -0
  201. package/dist/cli/commands/sim/reset.d.ts.map +1 -0
  202. package/dist/cli/commands/sim/reset.js +59 -0
  203. package/dist/cli/commands/sim/reset.js.map +1 -0
  204. package/dist/cli/commands/sim/scaffold.d.ts +11 -0
  205. package/dist/cli/commands/sim/scaffold.d.ts.map +1 -0
  206. package/dist/cli/commands/sim/scaffold.js +41 -0
  207. package/dist/cli/commands/sim/scaffold.js.map +1 -0
  208. package/dist/cli/commands/sim/test.d.ts +49 -0
  209. package/dist/cli/commands/sim/test.d.ts.map +1 -0
  210. package/dist/cli/commands/sim/test.js +364 -0
  211. package/dist/cli/commands/sim/test.js.map +1 -0
  212. package/dist/cli/commands/sim.d.ts +228 -0
  213. package/dist/cli/commands/sim.d.ts.map +1 -0
  214. package/dist/cli/commands/sim.js +69 -0
  215. package/dist/cli/commands/sim.js.map +1 -0
  216. package/dist/cli/commands/tail.d.ts +14 -0
  217. package/dist/cli/commands/tail.d.ts.map +1 -0
  218. package/dist/cli/commands/tail.js +50 -0
  219. package/dist/cli/commands/tail.js.map +1 -0
  220. package/dist/cli/commands/test.d.ts +39 -0
  221. package/dist/cli/commands/test.d.ts.map +1 -0
  222. package/dist/cli/commands/test.js +432 -0
  223. package/dist/cli/commands/test.js.map +1 -0
  224. package/dist/cli/components/DevicePicker.d.ts +9 -0
  225. package/dist/cli/components/DevicePicker.d.ts.map +1 -0
  226. package/dist/cli/components/DevicePicker.js +71 -0
  227. package/dist/cli/components/DevicePicker.js.map +1 -0
  228. package/dist/cli/components/EnvEditor.d.ts +12 -0
  229. package/dist/cli/components/EnvEditor.d.ts.map +1 -0
  230. package/dist/cli/components/EnvEditor.js +201 -0
  231. package/dist/cli/components/EnvEditor.js.map +1 -0
  232. package/dist/cli/components/TextInput.d.ts +28 -0
  233. package/dist/cli/components/TextInput.d.ts.map +1 -0
  234. package/dist/cli/components/TextInput.js +73 -0
  235. package/dist/cli/components/TextInput.js.map +1 -0
  236. package/dist/cli/components/TitledBox.d.ts +27 -0
  237. package/dist/cli/components/TitledBox.d.ts.map +1 -0
  238. package/dist/cli/components/TitledBox.js +111 -0
  239. package/dist/cli/components/TitledBox.js.map +1 -0
  240. package/dist/cli/hooks/useDevices.d.ts +23 -0
  241. package/dist/cli/hooks/useDevices.d.ts.map +1 -0
  242. package/dist/cli/hooks/useDevices.js +19 -0
  243. package/dist/cli/hooks/useDevices.js.map +1 -0
  244. package/dist/cli/lib/RenderAndExit.d.ts +6 -0
  245. package/dist/cli/lib/RenderAndExit.d.ts.map +1 -0
  246. package/dist/cli/lib/RenderAndExit.js +8 -0
  247. package/dist/cli/lib/RenderAndExit.js.map +1 -0
  248. package/dist/cli/lib/Spinner.d.ts +11 -0
  249. package/dist/cli/lib/Spinner.d.ts.map +1 -0
  250. package/dist/cli/lib/Spinner.js +22 -0
  251. package/dist/cli/lib/Spinner.js.map +1 -0
  252. package/dist/cli/lib/agent.d.ts +38 -0
  253. package/dist/cli/lib/agent.d.ts.map +1 -0
  254. package/dist/cli/lib/agent.js +87 -0
  255. package/dist/cli/lib/agent.js.map +1 -0
  256. package/dist/cli/lib/boards.d.ts +23 -0
  257. package/dist/cli/lib/boards.d.ts.map +1 -0
  258. package/dist/cli/lib/boards.js +67 -0
  259. package/dist/cli/lib/boards.js.map +1 -0
  260. package/dist/cli/lib/build.d.ts +47 -0
  261. package/dist/cli/lib/build.d.ts.map +1 -0
  262. package/dist/cli/lib/build.js +533 -0
  263. package/dist/cli/lib/build.js.map +1 -0
  264. package/dist/cli/lib/connectSim.d.ts +21 -0
  265. package/dist/cli/lib/connectSim.d.ts.map +1 -0
  266. package/dist/cli/lib/connectSim.js +20 -0
  267. package/dist/cli/lib/connectSim.js.map +1 -0
  268. package/dist/cli/lib/deploy.d.ts +42 -0
  269. package/dist/cli/lib/deploy.d.ts.map +1 -0
  270. package/dist/cli/lib/deploy.js +121 -0
  271. package/dist/cli/lib/deploy.js.map +1 -0
  272. package/dist/cli/lib/deployProgress.d.ts +8 -0
  273. package/dist/cli/lib/deployProgress.d.ts.map +1 -0
  274. package/dist/cli/lib/deployProgress.js +32 -0
  275. package/dist/cli/lib/deployProgress.js.map +1 -0
  276. package/dist/cli/lib/dotenv.d.ts +16 -0
  277. package/dist/cli/lib/dotenv.d.ts.map +1 -0
  278. package/dist/cli/lib/dotenv.js +33 -0
  279. package/dist/cli/lib/dotenv.js.map +1 -0
  280. package/dist/cli/lib/esbuild.d.ts +7 -0
  281. package/dist/cli/lib/esbuild.d.ts.map +1 -0
  282. package/dist/cli/lib/esbuild.js +15 -0
  283. package/dist/cli/lib/esbuild.js.map +1 -0
  284. package/dist/cli/lib/esptool.d.ts +41 -0
  285. package/dist/cli/lib/esptool.d.ts.map +1 -0
  286. package/dist/cli/lib/esptool.js +43 -0
  287. package/dist/cli/lib/esptool.js.map +1 -0
  288. package/dist/cli/lib/firmware.d.ts +24 -0
  289. package/dist/cli/lib/firmware.d.ts.map +1 -0
  290. package/dist/cli/lib/firmware.js +406 -0
  291. package/dist/cli/lib/firmware.js.map +1 -0
  292. package/dist/cli/lib/firmwareCompat.d.ts +19 -0
  293. package/dist/cli/lib/firmwareCompat.d.ts.map +1 -0
  294. package/dist/cli/lib/firmwareCompat.js +31 -0
  295. package/dist/cli/lib/firmwareCompat.js.map +1 -0
  296. package/dist/cli/lib/heapBaseline.d.ts +15 -0
  297. package/dist/cli/lib/heapBaseline.d.ts.map +1 -0
  298. package/dist/cli/lib/heapBaseline.js +39 -0
  299. package/dist/cli/lib/heapBaseline.js.map +1 -0
  300. package/dist/cli/lib/ink-table/index.d.ts +88 -0
  301. package/dist/cli/lib/ink-table/index.d.ts.map +1 -0
  302. package/dist/cli/lib/ink-table/index.js +217 -0
  303. package/dist/cli/lib/ink-table/index.js.map +1 -0
  304. package/dist/cli/lib/loadMikroConfig.d.ts +7 -0
  305. package/dist/cli/lib/loadMikroConfig.d.ts.map +1 -0
  306. package/dist/cli/lib/loadMikroConfig.js +26 -0
  307. package/dist/cli/lib/loadMikroConfig.js.map +1 -0
  308. package/dist/cli/lib/minify.d.ts +3 -0
  309. package/dist/cli/lib/minify.d.ts.map +1 -0
  310. package/dist/cli/lib/minify.js +89 -0
  311. package/dist/cli/lib/minify.js.map +1 -0
  312. package/dist/cli/lib/openSim.d.ts +29 -0
  313. package/dist/cli/lib/openSim.d.ts.map +1 -0
  314. package/dist/cli/lib/openSim.js +32 -0
  315. package/dist/cli/lib/openSim.js.map +1 -0
  316. package/dist/cli/lib/ospawn.d.ts +34 -0
  317. package/dist/cli/lib/ospawn.d.ts.map +1 -0
  318. package/dist/cli/lib/ospawn.js +90 -0
  319. package/dist/cli/lib/ospawn.js.map +1 -0
  320. package/dist/cli/lib/parseMinifier.d.ts +10 -0
  321. package/dist/cli/lib/parseMinifier.d.ts.map +1 -0
  322. package/dist/cli/lib/parseMinifier.js +49 -0
  323. package/dist/cli/lib/parseMinifier.js.map +1 -0
  324. package/dist/cli/lib/parseSize.d.ts +6 -0
  325. package/dist/cli/lib/parseSize.d.ts.map +1 -0
  326. package/dist/cli/lib/parseSize.js +25 -0
  327. package/dist/cli/lib/parseSize.js.map +1 -0
  328. package/dist/cli/lib/projectRoot.d.ts +11 -0
  329. package/dist/cli/lib/projectRoot.d.ts.map +1 -0
  330. package/dist/cli/lib/projectRoot.js +28 -0
  331. package/dist/cli/lib/projectRoot.js.map +1 -0
  332. package/dist/cli/lib/protocol.d.ts +144 -0
  333. package/dist/cli/lib/protocol.d.ts.map +1 -0
  334. package/dist/cli/lib/protocol.js +385 -0
  335. package/dist/cli/lib/protocol.js.map +1 -0
  336. package/dist/cli/lib/recover.d.ts +25 -0
  337. package/dist/cli/lib/recover.d.ts.map +1 -0
  338. package/dist/cli/lib/recover.js +144 -0
  339. package/dist/cli/lib/recover.js.map +1 -0
  340. package/dist/cli/lib/resolveEntry.d.ts +7 -0
  341. package/dist/cli/lib/resolveEntry.d.ts.map +1 -0
  342. package/dist/cli/lib/resolveEntry.js +30 -0
  343. package/dist/cli/lib/resolveEntry.js.map +1 -0
  344. package/dist/cli/lib/runHooks.d.ts +34 -0
  345. package/dist/cli/lib/runHooks.d.ts.map +1 -0
  346. package/dist/cli/lib/runHooks.js +90 -0
  347. package/dist/cli/lib/runHooks.js.map +1 -0
  348. package/dist/cli/lib/serial/InkReplConsole.d.ts +27 -0
  349. package/dist/cli/lib/serial/InkReplConsole.d.ts.map +1 -0
  350. package/dist/cli/lib/serial/InkReplConsole.js +24 -0
  351. package/dist/cli/lib/serial/InkReplConsole.js.map +1 -0
  352. package/dist/cli/lib/serial/InkReplMode.d.ts +38 -0
  353. package/dist/cli/lib/serial/InkReplMode.d.ts.map +1 -0
  354. package/dist/cli/lib/serial/InkReplMode.js +90 -0
  355. package/dist/cli/lib/serial/InkReplMode.js.map +1 -0
  356. package/dist/cli/lib/serial/ReplConsole.d.ts +21 -0
  357. package/dist/cli/lib/serial/ReplConsole.d.ts.map +1 -0
  358. package/dist/cli/lib/serial/ReplConsole.js +249 -0
  359. package/dist/cli/lib/serial/ReplConsole.js.map +1 -0
  360. package/dist/cli/lib/serial/devSession.d.ts +57 -0
  361. package/dist/cli/lib/serial/devSession.d.ts.map +1 -0
  362. package/dist/cli/lib/serial/devSession.js +160 -0
  363. package/dist/cli/lib/serial/devSession.js.map +1 -0
  364. package/dist/cli/lib/serial/dispatchReplCommand.d.ts +25 -0
  365. package/dist/cli/lib/serial/dispatchReplCommand.d.ts.map +1 -0
  366. package/dist/cli/lib/serial/dispatchReplCommand.js +27 -0
  367. package/dist/cli/lib/serial/dispatchReplCommand.js.map +1 -0
  368. package/dist/cli/lib/serial/openSession.d.ts +28 -0
  369. package/dist/cli/lib/serial/openSession.d.ts.map +1 -0
  370. package/dist/cli/lib/serial/openSession.js +48 -0
  371. package/dist/cli/lib/serial/openSession.js.map +1 -0
  372. package/dist/cli/lib/serial/replStateMachine.d.ts +169 -0
  373. package/dist/cli/lib/serial/replStateMachine.d.ts.map +1 -0
  374. package/dist/cli/lib/serial/replStateMachine.js +657 -0
  375. package/dist/cli/lib/serial/replStateMachine.js.map +1 -0
  376. package/dist/cli/lib/serial/runAgentRepl.d.ts +33 -0
  377. package/dist/cli/lib/serial/runAgentRepl.d.ts.map +1 -0
  378. package/dist/cli/lib/serial/runAgentRepl.js +80 -0
  379. package/dist/cli/lib/serial/runAgentRepl.js.map +1 -0
  380. package/dist/cli/lib/session.d.ts +163 -0
  381. package/dist/cli/lib/session.d.ts.map +1 -0
  382. package/dist/cli/lib/session.js +490 -0
  383. package/dist/cli/lib/session.js.map +1 -0
  384. package/dist/cli/lib/simConfig.d.ts +15 -0
  385. package/dist/cli/lib/simConfig.d.ts.map +1 -0
  386. package/dist/cli/lib/simConfig.js +25 -0
  387. package/dist/cli/lib/simConfig.js.map +1 -0
  388. package/dist/cli/lib/simPid.d.ts +30 -0
  389. package/dist/cli/lib/simPid.d.ts.map +1 -0
  390. package/dist/cli/lib/simPid.js +120 -0
  391. package/dist/cli/lib/simPid.js.map +1 -0
  392. package/dist/cli/lib/simTransport.d.ts +17 -0
  393. package/dist/cli/lib/simTransport.d.ts.map +1 -0
  394. package/dist/cli/lib/simTransport.js +80 -0
  395. package/dist/cli/lib/simTransport.js.map +1 -0
  396. package/dist/cli/lib/testRunner.d.ts +86 -0
  397. package/dist/cli/lib/testRunner.d.ts.map +1 -0
  398. package/dist/cli/lib/testRunner.js +469 -0
  399. package/dist/cli/lib/testRunner.js.map +1 -0
  400. package/dist/cli/lib/transport.d.ts +34 -0
  401. package/dist/cli/lib/transport.d.ts.map +1 -0
  402. package/dist/cli/lib/transport.js +117 -0
  403. package/dist/cli/lib/transport.js.map +1 -0
  404. package/dist/cli/lib/useObservable.d.ts +4 -0
  405. package/dist/cli/lib/useObservable.d.ts.map +1 -0
  406. package/dist/cli/lib/useObservable.js +22 -0
  407. package/dist/cli/lib/useObservable.js.map +1 -0
  408. package/dist/cli/lib/watcher.d.ts +10 -0
  409. package/dist/cli/lib/watcher.d.ts.map +1 -0
  410. package/dist/cli/lib/watcher.js +34 -0
  411. package/dist/cli/lib/watcher.js.map +1 -0
  412. package/dist/constants.d.ts +13 -0
  413. package/dist/constants.d.ts.map +1 -0
  414. package/dist/constants.js +27 -0
  415. package/dist/constants.js.map +1 -0
  416. package/dist/simulator/builtins/ble.d.ts +3 -0
  417. package/dist/simulator/builtins/ble.d.ts.map +1 -0
  418. package/dist/simulator/builtins/ble.js +46 -0
  419. package/dist/simulator/builtins/ble.js.map +1 -0
  420. package/dist/simulator/builtins/console.d.ts +8 -0
  421. package/dist/simulator/builtins/console.d.ts.map +1 -0
  422. package/dist/simulator/builtins/console.js +24 -0
  423. package/dist/simulator/builtins/console.js.map +1 -0
  424. package/dist/simulator/builtins/http.d.ts +3 -0
  425. package/dist/simulator/builtins/http.d.ts.map +1 -0
  426. package/dist/simulator/builtins/http.js +90 -0
  427. package/dist/simulator/builtins/http.js.map +1 -0
  428. package/dist/simulator/builtins/i2c.d.ts +3 -0
  429. package/dist/simulator/builtins/i2c.d.ts.map +1 -0
  430. package/dist/simulator/builtins/i2c.js +17 -0
  431. package/dist/simulator/builtins/i2c.js.map +1 -0
  432. package/dist/simulator/builtins/index.d.ts +7 -0
  433. package/dist/simulator/builtins/index.d.ts.map +1 -0
  434. package/dist/simulator/builtins/index.js +49 -0
  435. package/dist/simulator/builtins/index.js.map +1 -0
  436. package/dist/simulator/builtins/kv.d.ts +3 -0
  437. package/dist/simulator/builtins/kv.d.ts.map +1 -0
  438. package/dist/simulator/builtins/kv.js +39 -0
  439. package/dist/simulator/builtins/kv.js.map +1 -0
  440. package/dist/simulator/builtins/neopixel.d.ts +3 -0
  441. package/dist/simulator/builtins/neopixel.d.ts.map +1 -0
  442. package/dist/simulator/builtins/neopixel.js +15 -0
  443. package/dist/simulator/builtins/neopixel.js.map +1 -0
  444. package/dist/simulator/builtins/nvs-kv.d.ts +3 -0
  445. package/dist/simulator/builtins/nvs-kv.d.ts.map +1 -0
  446. package/dist/simulator/builtins/nvs-kv.js +69 -0
  447. package/dist/simulator/builtins/nvs-kv.js.map +1 -0
  448. package/dist/simulator/builtins/pin.d.ts +3 -0
  449. package/dist/simulator/builtins/pin.d.ts.map +1 -0
  450. package/dist/simulator/builtins/pin.js +32 -0
  451. package/dist/simulator/builtins/pin.js.map +1 -0
  452. package/dist/simulator/builtins/pwm.d.ts +3 -0
  453. package/dist/simulator/builtins/pwm.d.ts.map +1 -0
  454. package/dist/simulator/builtins/pwm.js +31 -0
  455. package/dist/simulator/builtins/pwm.js.map +1 -0
  456. package/dist/simulator/builtins/sleep.d.ts +3 -0
  457. package/dist/simulator/builtins/sleep.d.ts.map +1 -0
  458. package/dist/simulator/builtins/sleep.js +33 -0
  459. package/dist/simulator/builtins/sleep.js.map +1 -0
  460. package/dist/simulator/builtins/sntp.d.ts +3 -0
  461. package/dist/simulator/builtins/sntp.d.ts.map +1 -0
  462. package/dist/simulator/builtins/sntp.js +14 -0
  463. package/dist/simulator/builtins/sntp.js.map +1 -0
  464. package/dist/simulator/builtins/spi.d.ts +3 -0
  465. package/dist/simulator/builtins/spi.d.ts.map +1 -0
  466. package/dist/simulator/builtins/spi.js +16 -0
  467. package/dist/simulator/builtins/spi.js.map +1 -0
  468. package/dist/simulator/builtins/types.d.ts +24 -0
  469. package/dist/simulator/builtins/types.d.ts.map +1 -0
  470. package/dist/simulator/builtins/types.js +2 -0
  471. package/dist/simulator/builtins/types.js.map +1 -0
  472. package/dist/simulator/builtins/uart.d.ts +3 -0
  473. package/dist/simulator/builtins/uart.d.ts.map +1 -0
  474. package/dist/simulator/builtins/uart.js +22 -0
  475. package/dist/simulator/builtins/uart.js.map +1 -0
  476. package/dist/simulator/builtins/wifi.d.ts +3 -0
  477. package/dist/simulator/builtins/wifi.d.ts.map +1 -0
  478. package/dist/simulator/builtins/wifi.js +55 -0
  479. package/dist/simulator/builtins/wifi.js.map +1 -0
  480. package/dist/simulator/devRunner.d.ts +41 -0
  481. package/dist/simulator/devRunner.d.ts.map +1 -0
  482. package/dist/simulator/devRunner.js +201 -0
  483. package/dist/simulator/devRunner.js.map +1 -0
  484. package/dist/simulator/loadSimStubs.d.ts +15 -0
  485. package/dist/simulator/loadSimStubs.d.ts.map +1 -0
  486. package/dist/simulator/loadSimStubs.js +54 -0
  487. package/dist/simulator/loadSimStubs.js.map +1 -0
  488. package/dist/simulator/simProcess.d.ts +11 -0
  489. package/dist/simulator/simProcess.d.ts.map +1 -0
  490. package/dist/simulator/simProcess.js +957 -0
  491. package/dist/simulator/simProcess.js.map +1 -0
  492. package/dist/simulator/simTemplates.d.ts +6 -0
  493. package/dist/simulator/simTemplates.d.ts.map +1 -0
  494. package/dist/simulator/simTemplates.js +21 -0
  495. package/dist/simulator/simTemplates.js.map +1 -0
  496. package/package.json +123 -2
  497. package/runtime.d.ts +95 -0
@@ -0,0 +1,490 @@
1
+ /**
2
+ * ReplSession — transport-agnostic protocol session.
3
+ *
4
+ * Usage:
5
+ * const session = connectRepl(transport)
6
+ * session.messages$.subscribe(event => ...)
7
+ * session.eval('1+1')
8
+ * await session.deploy(files, envVars)
9
+ * session.close()
10
+ */
11
+ import { createHash } from 'node:crypto';
12
+ import { decode as decodeCbor } from 'cbor2';
13
+ import { catchError, concat, filter, finalize, first, firstValueFrom, from, ignoreElements, map, merge, mergeMap, of, share, shareReplay, switchMap, tap, timeout, timer, } from 'rxjs';
14
+ import { checkFirmwareCompat } from './firmwareCompat.js';
15
+ import { buildCompleteCommand, buildConfigDeleteCommand, buildConfigListCommand, buildConfigSetCommand, buildDeployAbortCommand, buildDeployChecksumCommand, buildDeployDoneCommand, buildDeployEraseCommand, buildDeployKeepCommand, buildDeployPutChunkCommand, buildDeployPutCommand, buildDirectiveCommand, buildEvalCommand, buildExitCommand, buildHelloCommand, buildRestartCommand, buildRuntimePauseCommand, buildRuntimeResumeCommand, FrameParser, frameToMessage, parseCompletions, } from './protocol.js';
16
+ function isResponseEvent(event) {
17
+ return (event.type === 'ok' ||
18
+ event.type === 'err' ||
19
+ event.type === 'checksum_result' ||
20
+ event.type === 'config_entries');
21
+ }
22
+ // ── Checksums manifest ─────────────────────────────────────────────
23
+ const CHECKSUMS_PATH = '/app/.checksums';
24
+ function buildChecksumsManifest(hashes) {
25
+ const lines = [];
26
+ for (const [name, hash] of hashes) {
27
+ lines.push(`${hash.toString('hex')} ${name}\n`);
28
+ }
29
+ return Buffer.from(lines.join(''));
30
+ }
31
+ // ── connectRepl ────────────────────────────────────────────────────
32
+ /** Window for MSG_READY after CMD_RESTART. A healthy reboot is <1s, but
33
+ * CMD_RESTART itself only gets serviced when the device's JS thread
34
+ * yields — and apps doing display/modem work can block it for several
35
+ * seconds. 10s accommodates both without hanging forever on a wedged
36
+ * device. Callers can override via `DeployOptions.timeout`. */
37
+ const READY_TIMEOUT_MS = 10_000;
38
+ const RESPONSE_TIMEOUT_MS = 30_000;
39
+ /** How often awaitReady$ re-sends CMD_HELLO while waiting for MSG_READY.
40
+ * The device replies immediately, so a single HELLO normally suffices.
41
+ * Polling exists to cover (a) the post-restart window where the transport
42
+ * is down or the device is mid-reboot and (b) connections established
43
+ * before the device's protocol mode is up. */
44
+ const HELLO_POLL_INTERVAL_MS = 250;
45
+ /** Timeout for protocol commands whose on-device work is near-instant
46
+ * (pause, resume) but whose handler is interleaved with JS. The budget
47
+ * isn't for the command itself — it's for the longest plausible
48
+ * blocking JS native call (display SPI, flash write, etc.) that can
49
+ * delay the next handler tick. */
50
+ const JS_YIELD_TIMEOUT_MS = 10_000;
51
+ /** Body bytes per CMD_DEPLOY_PUT_CHUNK frame. Sized so a single TLV frame
52
+ * (5-byte header + body) stays well below the device's USJ RX ring with
53
+ * room for the next command's header to land alongside it. Larger chunks
54
+ * trade per-chunk round-trip cost against the risk of overrun on devices
55
+ * with smaller rings — 2 KB is the sweet spot for both the ESP32 USJ peripheral
56
+ * (RX 4 KB) and any plausible UART path. */
57
+ const PUT_CHUNK_SIZE = 2048;
58
+ function formatTimeoutError(context, timeoutMs) {
59
+ return new Error(`${context}: device did not respond within ${timeoutMs}ms — it may be unplugged, wedged in a long JS operation, or (outside dev mode) in deep sleep`);
60
+ }
61
+ export function connectRepl(transport, _connectOptions = {}) {
62
+ const frameParser = new FrameParser();
63
+ let sub;
64
+ // Buffer for raw (non-protocol) bytes so we only emit complete lines.
65
+ let rawLineBuf = '';
66
+ // Core observable: transport bytes → parsed ReplEvents (shared/hot).
67
+ // Emits a 'disconnect' event when the transport completes, then completes.
68
+ const messages$ = concat(transport.data.pipe(mergeMap((chunk) => {
69
+ const { frames, raw } = frameParser.feed(Buffer.from(chunk));
70
+ const events = [];
71
+ if (raw) {
72
+ rawLineBuf += raw.toString('utf-8');
73
+ // Emit only complete lines; keep the trailing partial for later
74
+ const lastNewline = rawLineBuf.lastIndexOf('\n');
75
+ if (lastNewline !== -1) {
76
+ const complete = rawLineBuf.slice(0, lastNewline).trim();
77
+ rawLineBuf = rawLineBuf.slice(lastNewline + 1);
78
+ if (complete)
79
+ events.push({ type: 'raw', text: complete });
80
+ }
81
+ }
82
+ for (const frame of frames) {
83
+ const event = frameToEvent(frame);
84
+ if (event)
85
+ events.push(event);
86
+ }
87
+ return events;
88
+ }), finalize(() => {
89
+ frameParser.flush();
90
+ rawLineBuf = '';
91
+ })), [{ type: 'disconnect' }]).pipe(share());
92
+ // Keep the pipeline alive (shared observables need at least one subscriber)
93
+ sub = messages$.subscribe();
94
+ // ready$: emits each time the device sends MSG_READY (after boot or restart).
95
+ // Tagged with a sequence number AND arrival timestamp so awaitReady$ can
96
+ // distinguish a genuinely post-restart ready from one that pre-dates the
97
+ // reboot. After `session.restart()`, two failure modes need filtering:
98
+ // 1. The previously-cached MSG_READY replayed by shareReplay (caught by
99
+ // sequence number — restart() snapshots the current seq).
100
+ // 2. A pre-restart MSG_READY that was already in the OS read buffer or
101
+ // otherwise in flight when restart() ran, so it arrives shortly
102
+ // *after* the seq snapshot but is still from the pre-reboot device
103
+ // state. The sequence check passes for these, but the timestamp
104
+ // doesn't: a real post-reboot MSG_READY arrives at least one boot
105
+ // cycle (~500 ms) later. We require a 1 s blackout to be safe.
106
+ // Both conditions together prevent deploy from sending CMD_RUNTIME_PAUSE
107
+ // while the device is still rebooting (which lands during the USB-CDC
108
+ // re-enumeration window and gets dropped).
109
+ let readySeq = 0;
110
+ let lastSeenRestartSeq = -1;
111
+ let lastRestartAt = 0;
112
+ const POST_RESTART_BLACKOUT_MS = 1000;
113
+ const readyWithMeta$ = messages$.pipe(filter((e) => e.type === 'ready'), map((e) => ({ event: e, seq: ++readySeq, arrivedAt: Date.now() })), shareReplay(1));
114
+ // Eagerly subscribe so shareReplay captures ready events
115
+ sub.add(readyWithMeta$.subscribe());
116
+ const ready$ = readyWithMeta$.pipe(map(({ event }) => event));
117
+ // Response stream: OK, ERR, CHECKSUM_RESULT, CONFIG_ENTRIES
118
+ const responses$ = messages$.pipe(filter(isResponseEvent));
119
+ /** Send a command and wait for the next response event. Wraps any
120
+ * timeout with a message naming the step, so a user seeing a
121
+ * generic rxjs TimeoutError gets context instead. */
122
+ async function sendAndWait(frame, context, timeoutMs = RESPONSE_TIMEOUT_MS) {
123
+ const response = firstValueFrom(responses$.pipe(first(), timeout(timeoutMs)));
124
+ await transport.write(frame);
125
+ try {
126
+ return await response;
127
+ }
128
+ catch (err) {
129
+ if (err instanceof Error && err.name === 'TimeoutError') {
130
+ throw formatTimeoutError(context, timeoutMs);
131
+ }
132
+ throw err;
133
+ }
134
+ }
135
+ /** Send a command and expect MSG_OK. Throws on MSG_ERR or timeout.
136
+ * Returns the OK payload so callers can inspect extra bytes (e.g. the
137
+ * changed/existed flag returned by CONFIG_SET / CONFIG_DELETE). */
138
+ async function sendExpectOk(frame, context, timeoutMs) {
139
+ const resp = await sendAndWait(frame, context, timeoutMs);
140
+ if (resp.type === 'err') {
141
+ throw new Error(`${context}: ${resp.message}`);
142
+ }
143
+ if (resp.type !== 'ok') {
144
+ throw new Error(`${context}: unexpected response type '${resp.type}'`);
145
+ }
146
+ return resp.payload;
147
+ }
148
+ /** Stream a file to the device as one CMD_DEPLOY_PUT (begin) followed by
149
+ * one or more CMD_DEPLOY_PUT_CHUNK frames. Each frame awaits MSG_OK
150
+ * before the next is sent so the device's RX ring can never overrun
151
+ * regardless of file size. Empty files are valid: BEGIN with size=0
152
+ * closes the file immediately and no chunks are sent. */
153
+ async function streamPutFile(path, data) {
154
+ await sendExpectOk(buildDeployPutCommand(path, data.length), `deploy put '${path}'`);
155
+ for (let offset = 0; offset < data.length; offset += PUT_CHUNK_SIZE) {
156
+ const chunk = data.subarray(offset, offset + PUT_CHUNK_SIZE);
157
+ await sendExpectOk(buildDeployPutChunkCommand(chunk), `deploy put chunk '${path}' @${offset}`);
158
+ }
159
+ }
160
+ /**
161
+ * Wait for device to be ready. Emits the ReadyEvent, then completes.
162
+ * Errors if the device firmware version is incompatible.
163
+ */
164
+ function awaitReady$(timeoutMs = READY_TIMEOUT_MS) {
165
+ const checkVersion = (event) => {
166
+ const compat = checkFirmwareCompat(event.version);
167
+ if (!compat.compatible) {
168
+ const got = compat.deviceVersion ?? 'unknown';
169
+ throw new Error(`Device firmware (v${got}) is incompatible with this CLI (requires ${compat.requiredRange}). Reflash with \`npm run flash\`.`);
170
+ }
171
+ };
172
+ const mapTimeout = (context, ms) => catchError((err) => {
173
+ if (err instanceof Error && err.name === 'TimeoutError') {
174
+ throw formatTimeoutError(context, ms);
175
+ }
176
+ throw err;
177
+ });
178
+ // The device only sends MSG_READY in response to CMD_HELLO, so poll
179
+ // HELLO at a steady interval until a ready arrives. The first tick fires
180
+ // immediately. Best-effort writes: during the post-restart USB-CDC
181
+ // re-enumeration window the transport may reject — swallow and retry on
182
+ // the next tick.
183
+ const hello$ = timer(0, HELLO_POLL_INTERVAL_MS).pipe(tap(() => {
184
+ transport.write(buildHelloCommand()).catch(() => { });
185
+ }), ignoreElements());
186
+ // Wait for a ready event whose sequence number is newer than the one
187
+ // captured at the most recent `session.restart()` call. This skips any
188
+ // cached pre-restart ready that shareReplay would otherwise replay, so
189
+ // we don't proceed to send commands while the device is still in the
190
+ // middle of rebooting.
191
+ const ready$ = readyWithMeta$.pipe(filter(({ seq, arrivedAt }) => seq > lastSeenRestartSeq && arrivedAt >= lastRestartAt + POST_RESTART_BLACKOUT_MS), map(({ event }) => event));
192
+ return merge(hello$, ready$).pipe(first(), timeout(timeoutMs), mapTimeout('waiting for device ready', timeoutMs), tap(checkVersion));
193
+ }
194
+ /** Promise version for config operations */
195
+ async function awaitReady() {
196
+ await firstValueFrom(awaitReady$());
197
+ }
198
+ // ── Deploy ─────────────────────────────────────────────────────
199
+ function deploy(options) {
200
+ const readyTimeoutMs = options.timeout ?? READY_TIMEOUT_MS;
201
+ return concat(of({ type: 'connecting' }), awaitReady$(readyTimeoutMs).pipe(switchMap(() => from(deployAfterReady(options)))));
202
+ }
203
+ async function* deployAfterReady(options) {
204
+ const { files, envVars = [], force = false, erase = false, restart: shouldRestart = true, alwaysRestart = false, } = options;
205
+ // Freeze the device's JS runtime so user code can't interleave log
206
+ // output (raw or MSG_LOG) with deploy traffic during the checksum and
207
+ // upload phases. The device already pauses internally on the first
208
+ // deploy command, but that leaves a brief window before the first
209
+ // command arrives; sending PAUSE explicitly up front closes it.
210
+ // A reboot implicitly resumes; otherwise we send RESUME in the finally
211
+ // block. `didRestart` (not `shouldRestart`) drives that decision because
212
+ // the no-op/abort branch skips the restart even when shouldRestart=true.
213
+ await sendExpectOk(buildRuntimePauseCommand(), 'runtime pause', JS_YIELD_TIMEOUT_MS);
214
+ let didRestart = false;
215
+ try {
216
+ // Compute local hashes
217
+ const localHashes = new Map();
218
+ for (const file of files) {
219
+ localHashes.set(file.path, createHash('sha256').update(file.data).digest());
220
+ }
221
+ const filesToPut = [];
222
+ const filesToKeep = [];
223
+ // With erase, the checksum-based KEEP optimization is unsafe: erase wipes
224
+ // the live appDir before KEEP operations copy from it, so any file marked
225
+ // KEEP would silently drop out of the deploy. Force all files to PUT.
226
+ if (force || erase) {
227
+ filesToPut.push(...files);
228
+ }
229
+ else {
230
+ // Checksum-based incremental deploy
231
+ let checksumSupported = true;
232
+ for (let i = 0; i < files.length; i++) {
233
+ const file = files[i];
234
+ yield { type: 'checking', file: file.path, index: i, total: files.length };
235
+ if (!checksumSupported) {
236
+ filesToPut.push(file);
237
+ continue;
238
+ }
239
+ const hash = localHashes.get(file.path);
240
+ const resp = await sendAndWait(buildDeployChecksumCommand(file.path, hash), `deploy checksum '${file.path}'`);
241
+ if (resp.type === 'err') {
242
+ checksumSupported = false;
243
+ filesToPut.push(file);
244
+ filesToKeep.length = 0;
245
+ continue;
246
+ }
247
+ if (resp.type === 'checksum_result' && resp.match) {
248
+ filesToKeep.push(file.path);
249
+ }
250
+ else {
251
+ filesToPut.push(file);
252
+ }
253
+ }
254
+ }
255
+ // Env vars: diff against current device state so we only mutate
256
+ // actual differences. Firmware reports per-entry changed/existed bits,
257
+ // giving the CLI a definitive "did anything change" signal without
258
+ // any local caching.
259
+ const envChanged = [];
260
+ const envRemoved = [];
261
+ if (envVars.length > 0) {
262
+ const tooLong = envVars.filter((v) => Buffer.byteLength(v.key, 'utf-8') > 15);
263
+ if (tooLong.length > 0) {
264
+ throw new Error(`Env key(s) exceed NVS 15-char limit: ${tooLong.map((v) => v.key).join(', ')}`);
265
+ }
266
+ const deviceEntries = await config.list();
267
+ const desiredKeys = new Set(envVars.map((v) => v.key));
268
+ for (const v of envVars) {
269
+ const payload = await sendExpectOk(buildConfigSetCommand(v.key, v.value, v.secret), `config set '${v.key}'`);
270
+ if (payload.length > 0 && payload[0] === 1)
271
+ envChanged.push(v.key);
272
+ }
273
+ for (const entry of deviceEntries) {
274
+ if (desiredKeys.has(entry.key))
275
+ continue;
276
+ const payload = await sendExpectOk(buildConfigDeleteCommand(entry.key), `config delete '${entry.key}'`);
277
+ if (payload.length > 0 && payload[0] === 1)
278
+ envRemoved.push(entry.key);
279
+ }
280
+ }
281
+ const envActuallyChanged = envChanged.length > 0 || envRemoved.length > 0;
282
+ const hasChanges = filesToPut.length > 0 || envActuallyChanged || erase;
283
+ // Nothing changed: abort. Restart anyway when the caller asked for
284
+ // it via alwaysRestart (mikro test wants a fresh runtime per run
285
+ // even when files+env are unchanged, so the supervisor re-picks up
286
+ // the manifest from a clean boot).
287
+ if (!hasChanges) {
288
+ await sendExpectOk(buildDeployAbortCommand(), 'deploy abort');
289
+ if (shouldRestart && alwaysRestart) {
290
+ yield { type: 'restarting' };
291
+ lastSeenRestartSeq = readySeq;
292
+ lastRestartAt = Date.now();
293
+ await transport.write(buildRestartCommand());
294
+ didRestart = true;
295
+ }
296
+ yield { type: 'complete', deployed: false, stats: { put: 0, kept: filesToKeep.length } };
297
+ return;
298
+ }
299
+ if (envActuallyChanged) {
300
+ yield { type: 'env_changed', changed: envChanged, removed: envRemoved };
301
+ }
302
+ // Erase
303
+ if (erase) {
304
+ await sendExpectOk(buildDeployEraseCommand(), 'deploy erase');
305
+ }
306
+ // KEEP unchanged files
307
+ for (const filePath of filesToKeep) {
308
+ await sendExpectOk(buildDeployKeepCommand(filePath), `deploy keep '${filePath}'`);
309
+ }
310
+ // PUT changed/new files
311
+ for (let i = 0; i < filesToPut.length; i++) {
312
+ const file = filesToPut[i];
313
+ yield { type: 'uploading', file: file.path, index: i, total: filesToPut.length };
314
+ await streamPutFile(file.path, file.data);
315
+ }
316
+ // PUT checksums manifest — but only if we actually have files to track.
317
+ // Otherwise an empty-files + erase deploy would write a stub .checksums
318
+ // file back into /app and defeat the erase.
319
+ if (filesToPut.length > 0 || filesToKeep.length > 0) {
320
+ const manifest = buildChecksumsManifest(localHashes);
321
+ await streamPutFile(CHECKSUMS_PATH, manifest);
322
+ }
323
+ // Finalize
324
+ await sendExpectOk(buildDeployDoneCommand(), 'deploy done');
325
+ if (shouldRestart) {
326
+ yield { type: 'restarting' };
327
+ lastSeenRestartSeq = readySeq;
328
+ lastRestartAt = Date.now();
329
+ await transport.write(buildRestartCommand());
330
+ didRestart = true;
331
+ }
332
+ yield {
333
+ type: 'complete',
334
+ deployed: true,
335
+ stats: { put: filesToPut.length, kept: filesToKeep.length },
336
+ };
337
+ }
338
+ finally {
339
+ // If we didn't actually restart (no-op abort, thrown error, or
340
+ // shouldRestart=false), the runtime is still paused on the device.
341
+ // Resume it so the user's app keeps running. Best-effort: a dropped
342
+ // transport leaves the session_end hook to resume anyway.
343
+ if (!didRestart) {
344
+ try {
345
+ await sendExpectOk(buildRuntimeResumeCommand(), 'runtime resume', JS_YIELD_TIMEOUT_MS);
346
+ }
347
+ catch {
348
+ // Transport likely gone; session_end on device will resume.
349
+ }
350
+ }
351
+ }
352
+ }
353
+ // ── Erase app ──────────────────────────────────────────────────
354
+ /** Erase the deployed app without going through the full deploy flow.
355
+ * Sends CMD_DEPLOY_ERASE + CMD_DEPLOY_DONE directly, so the device wipes
356
+ * /appfs/app and the DONE handler's stamp_checksums_manifest() silently
357
+ * no-ops because /appfs/app no longer exists. Nothing gets staged or
358
+ * written back. Optionally restarts the device afterwards. */
359
+ async function eraseApp(options = {}) {
360
+ const { restart: shouldRestart = true } = options;
361
+ await awaitReady();
362
+ await sendExpectOk(buildDeployEraseCommand(), 'deploy erase');
363
+ await sendExpectOk(buildDeployDoneCommand(), 'deploy done');
364
+ if (shouldRestart) {
365
+ lastSeenRestartSeq = readySeq;
366
+ lastRestartAt = Date.now();
367
+ await transport.write(buildRestartCommand());
368
+ }
369
+ }
370
+ // ── Config ─────────────────────────────────────────────────────
371
+ const config = {
372
+ async list() {
373
+ await awaitReady();
374
+ const resp = await sendAndWait(buildConfigListCommand(), 'config list');
375
+ if (resp.type === 'err')
376
+ throw new Error(`config list: ${resp.message}`);
377
+ if (resp.type === 'config_entries')
378
+ return resp.entries;
379
+ throw new Error(`config list: unexpected response type '${resp.type}'`);
380
+ },
381
+ async set(key, value, secret) {
382
+ await awaitReady();
383
+ await sendExpectOk(buildConfigSetCommand(key, value, secret), `config set '${key}'`);
384
+ },
385
+ async delete(key) {
386
+ await awaitReady();
387
+ await sendExpectOk(buildConfigDeleteCommand(key), `config delete '${key}'`);
388
+ },
389
+ };
390
+ // ── Public API ─────────────────────────────────────────────────
391
+ return {
392
+ messages$,
393
+ ready$,
394
+ awaitReady$,
395
+ eval(code) {
396
+ void transport.write(buildEvalCommand(code));
397
+ },
398
+ directive(name) {
399
+ void transport.write(buildDirectiveCommand(name));
400
+ },
401
+ complete(partial) {
402
+ void transport.write(buildCompleteCommand(partial));
403
+ },
404
+ exit() {
405
+ void transport.write(buildExitCommand());
406
+ },
407
+ deploy,
408
+ eraseApp,
409
+ config,
410
+ restart() {
411
+ // Mark the current ready cache as stale so the next awaitReady$
412
+ // skips it and waits for a fresh post-restart MSG_READY.
413
+ lastSeenRestartSeq = readySeq;
414
+ lastRestartAt = Date.now();
415
+ void transport.write(buildRestartCommand());
416
+ },
417
+ close() {
418
+ sub?.unsubscribe();
419
+ sub = undefined;
420
+ frameParser.flush();
421
+ },
422
+ };
423
+ }
424
+ // ── Frame → Event mapping ──────────────────────────────────────────
425
+ function frameToEvent(frame) {
426
+ const msg = frameToMessage(frame);
427
+ if (!msg)
428
+ return null;
429
+ switch (msg.type) {
430
+ case 'ready': {
431
+ let chip = null;
432
+ let id = null;
433
+ let version = null;
434
+ try {
435
+ const info = decodeCbor(msg.payload);
436
+ chip = info.chip ?? null;
437
+ id = info.id ?? null;
438
+ version = info.v ?? null;
439
+ }
440
+ catch {
441
+ // ignore
442
+ }
443
+ return { type: 'ready', chip, id, version };
444
+ }
445
+ case 'log':
446
+ case 'warn':
447
+ case 'error':
448
+ case 'info':
449
+ case 'debug':
450
+ case 'result':
451
+ case 'eval_error':
452
+ return { type: msg.type, text: msg.payload.toString('utf-8') };
453
+ case 'completions': {
454
+ const result = parseCompletions(msg.payload);
455
+ return result ? { type: 'completions', result } : null;
456
+ }
457
+ case 'prompt':
458
+ return { type: 'prompt', timing: msg.payload.toString('utf-8') };
459
+ case 'ok':
460
+ return { type: 'ok', payload: msg.payload };
461
+ case 'err':
462
+ return { type: 'err', message: msg.payload.toString('utf-8') };
463
+ case 'checksum_result':
464
+ return { type: 'checksum_result', match: msg.payload.length > 0 && msg.payload[0] === 1 };
465
+ case 'config_entries': {
466
+ let entries = [];
467
+ try {
468
+ entries = decodeCbor(msg.payload);
469
+ }
470
+ catch {
471
+ // ignore
472
+ }
473
+ return { type: 'config_entries', entries };
474
+ }
475
+ case 'test': {
476
+ try {
477
+ const data = JSON.parse(msg.payload.toString('utf-8'));
478
+ return { type: 'test', data };
479
+ }
480
+ catch {
481
+ return null;
482
+ }
483
+ }
484
+ case 'manifest_done':
485
+ return { type: 'manifest_done' };
486
+ default:
487
+ return null;
488
+ }
489
+ }
490
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/lib/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { MikroJSConfig } from '../../_exports/index.js';
2
+ export interface ResolvedSimConfig {
3
+ memLimit: number;
4
+ fsLimit: number;
5
+ fsRoot: string;
6
+ /** Resolved fs_read_max in bytes. Undefined means "use runtime default". */
7
+ fsReadMax: number | undefined;
8
+ }
9
+ export declare function resolveSimConfig(config: MikroJSConfig | null): ResolvedSimConfig;
10
+ /**
11
+ * Convenience: walk up from `startDir` (or cwd) looking for `mikro.config.ts`,
12
+ * then resolve the sim section with defaults filled in.
13
+ */
14
+ export declare function loadSimConfig(startDir?: string): Promise<ResolvedSimConfig>;
15
+ //# sourceMappingURL=simConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simConfig.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/simConfig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAA;AAK1D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AAKD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,iBAAiB,CAShF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGjF"}
@@ -0,0 +1,25 @@
1
+ import * as pathlib from 'node:path';
2
+ import { loadMikroConfig } from './loadMikroConfig.js';
3
+ import { parseSize } from './parseSize.js';
4
+ import { getMikroDir } from './projectRoot.js';
5
+ const DEFAULT_MEM_LIMIT = 300 * 1024;
6
+ const DEFAULT_FS_LIMIT = 1024 * 1024;
7
+ export function resolveSimConfig(config) {
8
+ const sim = config?.sim ?? {};
9
+ return {
10
+ memLimit: sim.memLimit !== undefined ? parseSize(sim.memLimit) : DEFAULT_MEM_LIMIT,
11
+ fsLimit: sim.fsLimit !== undefined ? parseSize(sim.fsLimit) : DEFAULT_FS_LIMIT,
12
+ fsRoot: sim.fsRoot ?? pathlib.join(getMikroDir(), 'sim-fs'),
13
+ // fsReadMax is a top-level option (applies on device and sim alike).
14
+ fsReadMax: config?.fsReadMax !== undefined ? parseSize(config.fsReadMax) : undefined,
15
+ };
16
+ }
17
+ /**
18
+ * Convenience: walk up from `startDir` (or cwd) looking for `mikro.config.ts`,
19
+ * then resolve the sim section with defaults filled in.
20
+ */
21
+ export async function loadSimConfig(startDir) {
22
+ const config = await loadMikroConfig(startDir ?? process.cwd());
23
+ return resolveSimConfig(config);
24
+ }
25
+ //# sourceMappingURL=simConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/simConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAGpC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAU5C,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAA;AACpC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAA;AAEpC,MAAM,UAAU,gBAAgB,CAAC,MAA4B;IAC3D,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAA;IAC7B,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAClF,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB;QAC9E,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC;QAC3D,qEAAqE;QACrE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;KACrF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAiB;IACnD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/D,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Pid file management for the simulator.
3
+ *
4
+ * One sim process at a time per project. Long-lived commands (`mikro sim dev`,
5
+ * `mikro sim repl`) claim the pid file and kill any predecessor. Short-lived
6
+ * commands (`mikro sim deploy`, `mikro sim test`, etc.) check the pid file
7
+ * and refuse to run if a sim is already alive — they would race on sim-fs
8
+ * writes or yank files out from under the running process.
9
+ */
10
+ export declare function isAlive(pid: number): boolean;
11
+ export declare function readPid(mikroDir: string): number | null;
12
+ export declare function clearPid(mikroDir: string): void;
13
+ export declare class SimAlreadyRunningError extends Error {
14
+ pid: number;
15
+ constructor(pid: number);
16
+ }
17
+ /**
18
+ * Refuse to proceed if a sim is already running. Used by short-lived commands
19
+ * (deploy, test, env, profile, clean, reset).
20
+ */
21
+ export declare function checkPid(mikroDir: string): void;
22
+ /**
23
+ * Claim the pid file for this process. If a predecessor is alive, kill it
24
+ * first (SIGTERM, then SIGKILL after a short grace period). Registers exit
25
+ * cleanup to remove the file on normal termination.
26
+ *
27
+ * Used by long-lived commands (dev, repl).
28
+ */
29
+ export declare function claimPid(mikroDir: string): Promise<void>;
30
+ //# sourceMappingURL=simPid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simPid.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/simPid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ5C;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBvD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO/C;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,GAAG,EAAE,MAAM,CAAA;gBACC,GAAG,EAAE,MAAM;CAOxB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAG/C;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC9D"}