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 @@
1
+ {"version":3,"file":"parseMinifier.js","sourceRoot":"","sources":["../../../src/cli/lib/parseMinifier.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AACvE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;AACpE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEtF,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAiB,CAAC;QAAE,OAAO,KAAiB,CAAA;IACpE,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,yCAAyC,CAAC,CAAA;AACtF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAoB,CAAC;QAAE,OAAO,KAAoB,CAAA;IAC9E,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,iCAAiC,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAiB,CAAC;QAAE,OAAO,KAAiB,CAAA;IACrE,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,mDAAmD,CAAC,CAAA;AACjG,CAAC;AAED;;gEAEgE;AAChE,MAAM,cAAc,GAAgE;IAClF,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;CACT,CAAA;AAED,MAAM,kBAAkB,GAA6B;IACnD,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAA;AAED;;;cAGc;AACd,MAAM,UAAU,cAAc,CAC5B,SAAmB,EACnB,UAAuD;IAEvD,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAA;AACpE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Parse a size value with optional K/M/G suffix into bytes.
3
+ * Accepts numbers (passed through) or strings like "300k", "1.5M", "2g".
4
+ */
5
+ export declare function parseSize(value: number | string): number;
6
+ //# sourceMappingURL=parseSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseSize.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/parseSize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAoBxD"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Parse a size value with optional K/M/G suffix into bytes.
3
+ * Accepts numbers (passed through) or strings like "300k", "1.5M", "2g".
4
+ */
5
+ export function parseSize(value) {
6
+ if (typeof value === 'number')
7
+ return value;
8
+ const match = value.match(/^(\d+(?:\.\d+)?)\s*([kmg]?)b?$/i);
9
+ if (!match) {
10
+ throw new Error(`Invalid size: ${value}. Use a number with optional K/M/G suffix (e.g. 300K, 1M)`);
11
+ }
12
+ const num = parseFloat(match[1]);
13
+ const unit = (match[2] || '').toLowerCase();
14
+ switch (unit) {
15
+ case 'k':
16
+ return num * 1024;
17
+ case 'm':
18
+ return num * 1024 * 1024;
19
+ case 'g':
20
+ return num * 1024 * 1024 * 1024;
21
+ default:
22
+ return num;
23
+ }
24
+ }
25
+ //# sourceMappingURL=parseSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseSize.js","sourceRoot":"","sources":["../../../src/cli/lib/parseSize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAsB;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,2DAA2D,CAClF,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,GAAG,GAAG,IAAI,CAAA;QACnB,KAAK,GAAG;YACN,OAAO,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;QAC1B,KAAK,GAAG;YACN,OAAO,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;QACjC;YACE,OAAO,GAAG,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Walk up from cwd looking for package.json or mikro.config.ts.
3
+ * Returns the directory containing the first match, or cwd as fallback.
4
+ */
5
+ export declare function resolveProjectRoot(): string;
6
+ /**
7
+ * Return the path to the .mikro/ directory in the project root,
8
+ * creating it if it doesn't exist.
9
+ */
10
+ export declare function getMikroDir(): string;
11
+ //# sourceMappingURL=projectRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectRoot.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/projectRoot.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAW3C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC"}
@@ -0,0 +1,28 @@
1
+ import { existsSync, mkdirSync } from 'node:fs';
2
+ import * as pathlib from 'node:path';
3
+ /**
4
+ * Walk up from cwd looking for package.json or mikro.config.ts.
5
+ * Returns the directory containing the first match, or cwd as fallback.
6
+ */
7
+ export function resolveProjectRoot() {
8
+ let dir = process.cwd();
9
+ const root = pathlib.parse(dir).root;
10
+ while (dir !== root) {
11
+ if (existsSync(pathlib.join(dir, 'package.json')))
12
+ return dir;
13
+ if (existsSync(pathlib.join(dir, 'mikro.config.ts')))
14
+ return dir;
15
+ dir = pathlib.dirname(dir);
16
+ }
17
+ return process.cwd();
18
+ }
19
+ /**
20
+ * Return the path to the .mikro/ directory in the project root,
21
+ * creating it if it doesn't exist.
22
+ */
23
+ export function getMikroDir() {
24
+ const dir = pathlib.join(resolveProjectRoot(), '.mikro');
25
+ mkdirSync(dir, { recursive: true });
26
+ return dir;
27
+ }
28
+ //# sourceMappingURL=projectRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectRoot.js","sourceRoot":"","sources":["../../../src/cli/lib/projectRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAEpC;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IAEpC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,GAAG,CAAA;QAC7D,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAA;QAChE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAA;IACxD,SAAS,CAAC,GAAG,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IACjC,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Unified MIK Protocol — TLV-framed messaging between CLI and device.
3
+ *
4
+ * Frame format: [type: u8][length: u32le][payload: bytes] (5-byte header)
5
+ *
6
+ * Replaces the previous separate REPL, deploy, and config protocols with
7
+ * a single framing scheme. On connect the CLI sends CMD_HELLO; the device
8
+ * replies with MSG_READY containing its identity. The device never sends
9
+ * MSG_READY unprompted, which keeps the wire silent for passive viewers
10
+ * (e.g. idf.py monitor).
11
+ */
12
+ export declare const CTRL_R = 18;
13
+ export declare const MSG_READY = 1;
14
+ export declare const MSG_LOG = 2;
15
+ export declare const MSG_WARN = 3;
16
+ export declare const MSG_ERROR = 4;
17
+ export declare const MSG_RESULT = 5;
18
+ export declare const MSG_INFO = 6;
19
+ export declare const MSG_COMPLETIONS = 7;
20
+ export declare const MSG_EVAL_ERROR = 8;
21
+ export declare const MSG_PROMPT = 9;
22
+ export declare const MSG_TEST = 11;
23
+ export declare const MSG_DEBUG = 12;
24
+ /** Emitted once after the last test file's run_done when the device drove
25
+ * a supervisor-mode manifest. Signals "no more tests coming" to the CLI. */
26
+ export declare const MSG_MANIFEST_DONE = 13;
27
+ export declare const MSG_OK = 128;
28
+ export declare const MSG_ERR = 129;
29
+ export declare const MSG_CHECKSUM_RESULT = 130;
30
+ export declare const MSG_CONFIG_ENTRIES = 131;
31
+ export declare const CMD_EVAL = 16;
32
+ export declare const CMD_COMPLETE = 17;
33
+ export declare const CMD_DIRECTIVE = 19;
34
+ export declare const CMD_EXIT = 20;
35
+ export declare const CMD_HELLO = 21;
36
+ /** Begins a streaming file PUT. Payload: u16le name_len | name | u32le total_size.
37
+ * Device opens the staged file and replies OK; body arrives in one or more
38
+ * CMD_DEPLOY_PUT_CHUNK frames so no single TLV frame ever exceeds the USJ
39
+ * RX ring. */
40
+ export declare const CMD_DEPLOY_PUT = 32;
41
+ export declare const CMD_DEPLOY_DONE = 33;
42
+ export declare const CMD_DEPLOY_ABORT = 34;
43
+ export declare const CMD_DEPLOY_ERASE = 35;
44
+ /** Appends body bytes to the file opened by the preceding CMD_DEPLOY_PUT.
45
+ * Payload is raw file data; device fwrites + replies OK per chunk and
46
+ * closes the file when total_remaining reaches zero. */
47
+ export declare const CMD_DEPLOY_PUT_CHUNK = 36;
48
+ export declare const CMD_DEPLOY_KEEP = 38;
49
+ export declare const CMD_DEPLOY_CHECKSUM = 39;
50
+ export declare const CMD_RESTART = 40;
51
+ export declare const CMD_RUNTIME_PAUSE = 41;
52
+ export declare const CMD_RUNTIME_RESUME = 42;
53
+ export declare const CMD_CONFIG_LIST = 64;
54
+ export declare const CMD_CONFIG_SET = 65;
55
+ export declare const CMD_CONFIG_DELETE = 66;
56
+ /** Env entry flags */
57
+ export declare const ENV_FLAG_SECRET = 1;
58
+ /** Header size: 1 byte type + 4 bytes u32le length */
59
+ export declare const HEADER_SIZE = 5;
60
+ /** Sane ceiling on frame payload size. The wire format allows up to 4 GB, but
61
+ * any MIK frame the CLI receives in practice is at most a few KB. This guards
62
+ * against false-positive frame starts when the byte stream contains raw
63
+ * boot-log text that happens to coincide with a valid message-type byte —
64
+ * e.g. the banner's trailing `\r\n` is `0d 0a`, and `0x0d` (MSG_MANIFEST_DONE)
65
+ * would otherwise have the parser read `0a 31 38 36` ("\n186") as a
66
+ * ~907 MB length and stall forever waiting for the payload. */
67
+ export declare const MAX_FRAME_PAYLOAD: number;
68
+ export interface Frame {
69
+ type: number;
70
+ payload: Buffer;
71
+ }
72
+ /** Build a TLV frame: [type: u8][length: u32le][payload] */
73
+ export declare function buildFrame(type: number, payload?: string | Buffer): Buffer;
74
+ /** Parse a single TLV frame from a buffer at the given offset.
75
+ * Returns null if the buffer doesn't contain a complete frame. */
76
+ export declare function parseFrame(buf: Buffer, offset?: number): {
77
+ frame: Frame;
78
+ bytesConsumed: number;
79
+ } | null;
80
+ export declare function buildEvalCommand(code: string): Buffer;
81
+ export declare function buildCompleteCommand(partial: string): Buffer;
82
+ export declare function buildDirectiveCommand(directive: string): Buffer;
83
+ export declare function buildExitCommand(): Buffer;
84
+ export declare function buildHelloCommand(): Buffer;
85
+ export declare function buildRestartCommand(): Buffer;
86
+ export declare function buildRuntimePauseCommand(): Buffer;
87
+ export declare function buildRuntimeResumeCommand(): Buffer;
88
+ /** Build a DEPLOY_PUT (begin) payload: u16le name_len | name | u32le total_size.
89
+ * The file body itself is NOT included — it follows in CMD_DEPLOY_PUT_CHUNK
90
+ * frames built via {@link buildDeployPutChunkCommand}. Splitting the body
91
+ * across multiple commands keeps any single TLV frame well under the
92
+ * device's USJ RX ring, regardless of file size. */
93
+ export declare function buildDeployPutCommand(filename: string, totalSize: number): Buffer;
94
+ /** Build a DEPLOY_PUT_CHUNK frame: payload is raw body bytes (slice of file
95
+ * data). The host sends one CHUNK per ~2 KB of body and awaits MSG_OK
96
+ * between frames so the device's RX ring can never overrun. */
97
+ export declare function buildDeployPutChunkCommand(data: Buffer): Buffer;
98
+ export declare function buildDeployDoneCommand(): Buffer;
99
+ export declare function buildDeployAbortCommand(): Buffer;
100
+ export declare function buildDeployEraseCommand(): Buffer;
101
+ /** Build DEPLOY_KEEP payload: u16le name_len | name */
102
+ export declare function buildDeployKeepCommand(filename: string): Buffer;
103
+ /** Build DEPLOY_CHECKSUM payload: u16le name_len | name | sha256[32] */
104
+ export declare function buildDeployChecksumCommand(filename: string, hash: Buffer): Buffer;
105
+ export declare function buildConfigListCommand(): Buffer;
106
+ /** Build CONFIG_SET payload: u8 flags | u16le key_len | key | u16le val_len | value */
107
+ export declare function buildConfigSetCommand(key: string, value: string, secret: boolean): Buffer;
108
+ /** Build CONFIG_DELETE payload: u16le key_len | key */
109
+ export declare function buildConfigDeleteCommand(key: string): Buffer;
110
+ export type MessageType = 'ready' | 'log' | 'warn' | 'error' | 'result' | 'info' | 'debug' | 'completions' | 'eval_error' | 'prompt' | 'ok' | 'err' | 'checksum_result' | 'config_entries' | 'test' | 'manifest_done';
111
+ export interface Message {
112
+ type: MessageType;
113
+ payload: Buffer;
114
+ }
115
+ /** Parse a frame into a typed message. Returns null for unknown types. */
116
+ export declare function frameToMessage(frame: Frame): Message | null;
117
+ export interface CompletionResult {
118
+ prefix: string;
119
+ items: string[];
120
+ }
121
+ /** Parse a CBOR-encoded completions message payload */
122
+ export declare function parseCompletions(data: Uint8Array): CompletionResult | null;
123
+ /** Result of feeding data to the FrameParser: complete frames + any raw bytes */
124
+ export interface ParseResult {
125
+ frames: Frame[];
126
+ /** Raw bytes skipped before valid frames (boot logs, stray bytes) */
127
+ raw: Buffer | null;
128
+ }
129
+ /** Accumulates incoming data and yields complete frames.
130
+ * Bytes with unknown type values are collected as raw output. */
131
+ export declare class FrameParser {
132
+ private buf;
133
+ private rawAccum;
134
+ /** Feed data and return complete frames + any raw bytes that were skipped */
135
+ feed(data: Buffer | Uint8Array): ParseResult;
136
+ /** Drain and return the internal buffer (for displaying stale data) */
137
+ flush(): Buffer;
138
+ /** Reset internal buffer */
139
+ reset(): void;
140
+ }
141
+ /** Returns true if the code has unmatched brackets/parens/braces,
142
+ * unterminated strings, or template literals. */
143
+ export declare function isIncomplete(code: string): boolean;
144
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,385 @@
1
+ /**
2
+ * Unified MIK Protocol — TLV-framed messaging between CLI and device.
3
+ *
4
+ * Frame format: [type: u8][length: u32le][payload: bytes] (5-byte header)
5
+ *
6
+ * Replaces the previous separate REPL, deploy, and config protocols with
7
+ * a single framing scheme. On connect the CLI sends CMD_HELLO; the device
8
+ * replies with MSG_READY containing its identity. The device never sends
9
+ * MSG_READY unprompted, which keeps the wire silent for passive viewers
10
+ * (e.g. idf.py monitor).
11
+ */
12
+ import { decode as decodeCbor } from 'cbor2';
13
+ // ── Escape hatch ───────────────────────────────────────────────────
14
+ // Raw CTRL_R byte triggers hard restart regardless of protocol state.
15
+ export const CTRL_R = 0x12;
16
+ // ── Device → CLI message types ─────────────────────────────────────
17
+ export const MSG_READY = 0x01;
18
+ export const MSG_LOG = 0x02;
19
+ export const MSG_WARN = 0x03;
20
+ export const MSG_ERROR = 0x04;
21
+ export const MSG_RESULT = 0x05;
22
+ export const MSG_INFO = 0x06;
23
+ export const MSG_COMPLETIONS = 0x07;
24
+ export const MSG_EVAL_ERROR = 0x08;
25
+ export const MSG_PROMPT = 0x09;
26
+ export const MSG_TEST = 0x0b;
27
+ export const MSG_DEBUG = 0x0c;
28
+ /** Emitted once after the last test file's run_done when the device drove
29
+ * a supervisor-mode manifest. Signals "no more tests coming" to the CLI. */
30
+ export const MSG_MANIFEST_DONE = 0x0d;
31
+ export const MSG_OK = 0x80;
32
+ export const MSG_ERR = 0x81;
33
+ export const MSG_CHECKSUM_RESULT = 0x82;
34
+ export const MSG_CONFIG_ENTRIES = 0x83;
35
+ // ── CLI → Device command types ─────────────────────────────────────
36
+ export const CMD_EVAL = 0x10;
37
+ export const CMD_COMPLETE = 0x11;
38
+ export const CMD_DIRECTIVE = 0x13;
39
+ export const CMD_EXIT = 0x14;
40
+ export const CMD_HELLO = 0x15;
41
+ /** Begins a streaming file PUT. Payload: u16le name_len | name | u32le total_size.
42
+ * Device opens the staged file and replies OK; body arrives in one or more
43
+ * CMD_DEPLOY_PUT_CHUNK frames so no single TLV frame ever exceeds the USJ
44
+ * RX ring. */
45
+ export const CMD_DEPLOY_PUT = 0x20;
46
+ export const CMD_DEPLOY_DONE = 0x21;
47
+ export const CMD_DEPLOY_ABORT = 0x22;
48
+ export const CMD_DEPLOY_ERASE = 0x23;
49
+ /** Appends body bytes to the file opened by the preceding CMD_DEPLOY_PUT.
50
+ * Payload is raw file data; device fwrites + replies OK per chunk and
51
+ * closes the file when total_remaining reaches zero. */
52
+ export const CMD_DEPLOY_PUT_CHUNK = 0x24;
53
+ // 0x25 retired: deploy env mutation now flows through CMD_CONFIG_SET/DELETE.
54
+ export const CMD_DEPLOY_KEEP = 0x26;
55
+ export const CMD_DEPLOY_CHECKSUM = 0x27;
56
+ export const CMD_RESTART = 0x28;
57
+ export const CMD_RUNTIME_PAUSE = 0x29;
58
+ export const CMD_RUNTIME_RESUME = 0x2a;
59
+ export const CMD_CONFIG_LIST = 0x40;
60
+ export const CMD_CONFIG_SET = 0x41;
61
+ export const CMD_CONFIG_DELETE = 0x42;
62
+ /** Env entry flags */
63
+ export const ENV_FLAG_SECRET = 0x01;
64
+ // ── Frame format ───────────────────────────────────────────────────
65
+ /** Header size: 1 byte type + 4 bytes u32le length */
66
+ export const HEADER_SIZE = 5;
67
+ /** Sane ceiling on frame payload size. The wire format allows up to 4 GB, but
68
+ * any MIK frame the CLI receives in practice is at most a few KB. This guards
69
+ * against false-positive frame starts when the byte stream contains raw
70
+ * boot-log text that happens to coincide with a valid message-type byte —
71
+ * e.g. the banner's trailing `\r\n` is `0d 0a`, and `0x0d` (MSG_MANIFEST_DONE)
72
+ * would otherwise have the parser read `0a 31 38 36` ("\n186") as a
73
+ * ~907 MB length and stall forever waiting for the payload. */
74
+ export const MAX_FRAME_PAYLOAD = 256 * 1024;
75
+ /** Build a TLV frame: [type: u8][length: u32le][payload] */
76
+ export function buildFrame(type, payload = Buffer.alloc(0)) {
77
+ const data = typeof payload === 'string' ? Buffer.from(payload, 'utf-8') : payload;
78
+ const frame = Buffer.alloc(HEADER_SIZE + data.length);
79
+ frame[0] = type;
80
+ frame.writeUInt32LE(data.length, 1);
81
+ data.copy(frame, HEADER_SIZE);
82
+ return frame;
83
+ }
84
+ /** Parse a single TLV frame from a buffer at the given offset.
85
+ * Returns null if the buffer doesn't contain a complete frame. */
86
+ export function parseFrame(buf, offset = 0) {
87
+ if (offset + HEADER_SIZE > buf.length)
88
+ return null;
89
+ const type = buf[offset];
90
+ const length = buf.readUInt32LE(offset + 1);
91
+ if (offset + HEADER_SIZE + length > buf.length)
92
+ return null;
93
+ const payload = Buffer.from(buf.subarray(offset + HEADER_SIZE, offset + HEADER_SIZE + length));
94
+ return { frame: { type, payload }, bytesConsumed: HEADER_SIZE + length };
95
+ }
96
+ // ── CLI → Device command builders ──────────────────────────────────
97
+ export function buildEvalCommand(code) {
98
+ return buildFrame(CMD_EVAL, code);
99
+ }
100
+ export function buildCompleteCommand(partial) {
101
+ return buildFrame(CMD_COMPLETE, partial);
102
+ }
103
+ export function buildDirectiveCommand(directive) {
104
+ return buildFrame(CMD_DIRECTIVE, directive);
105
+ }
106
+ export function buildExitCommand() {
107
+ return buildFrame(CMD_EXIT);
108
+ }
109
+ export function buildHelloCommand() {
110
+ return buildFrame(CMD_HELLO);
111
+ }
112
+ export function buildRestartCommand() {
113
+ return buildFrame(CMD_RESTART);
114
+ }
115
+ export function buildRuntimePauseCommand() {
116
+ return buildFrame(CMD_RUNTIME_PAUSE);
117
+ }
118
+ export function buildRuntimeResumeCommand() {
119
+ return buildFrame(CMD_RUNTIME_RESUME);
120
+ }
121
+ // ── Deploy command builders ────────────────────────────────────────
122
+ /** Build a DEPLOY_PUT (begin) payload: u16le name_len | name | u32le total_size.
123
+ * The file body itself is NOT included — it follows in CMD_DEPLOY_PUT_CHUNK
124
+ * frames built via {@link buildDeployPutChunkCommand}. Splitting the body
125
+ * across multiple commands keeps any single TLV frame well under the
126
+ * device's USJ RX ring, regardless of file size. */
127
+ export function buildDeployPutCommand(filename, totalSize) {
128
+ const nameBytes = Buffer.from(filename, 'utf-8');
129
+ const payload = Buffer.alloc(2 + nameBytes.length + 4);
130
+ let offset = 0;
131
+ payload.writeUInt16LE(nameBytes.length, offset);
132
+ offset += 2;
133
+ nameBytes.copy(payload, offset);
134
+ offset += nameBytes.length;
135
+ payload.writeUInt32LE(totalSize, offset);
136
+ return buildFrame(CMD_DEPLOY_PUT, payload);
137
+ }
138
+ /** Build a DEPLOY_PUT_CHUNK frame: payload is raw body bytes (slice of file
139
+ * data). The host sends one CHUNK per ~2 KB of body and awaits MSG_OK
140
+ * between frames so the device's RX ring can never overrun. */
141
+ export function buildDeployPutChunkCommand(data) {
142
+ return buildFrame(CMD_DEPLOY_PUT_CHUNK, data);
143
+ }
144
+ export function buildDeployDoneCommand() {
145
+ return buildFrame(CMD_DEPLOY_DONE);
146
+ }
147
+ export function buildDeployAbortCommand() {
148
+ return buildFrame(CMD_DEPLOY_ABORT);
149
+ }
150
+ export function buildDeployEraseCommand() {
151
+ return buildFrame(CMD_DEPLOY_ERASE);
152
+ }
153
+ /** Build DEPLOY_KEEP payload: u16le name_len | name */
154
+ export function buildDeployKeepCommand(filename) {
155
+ const nameBytes = Buffer.from(filename, 'utf-8');
156
+ const payload = Buffer.alloc(2 + nameBytes.length);
157
+ payload.writeUInt16LE(nameBytes.length, 0);
158
+ nameBytes.copy(payload, 2);
159
+ return buildFrame(CMD_DEPLOY_KEEP, payload);
160
+ }
161
+ /** Build DEPLOY_CHECKSUM payload: u16le name_len | name | sha256[32] */
162
+ export function buildDeployChecksumCommand(filename, hash) {
163
+ const nameBytes = Buffer.from(filename, 'utf-8');
164
+ const payload = Buffer.alloc(2 + nameBytes.length + 32);
165
+ let offset = 0;
166
+ payload.writeUInt16LE(nameBytes.length, offset);
167
+ offset += 2;
168
+ nameBytes.copy(payload, offset);
169
+ offset += nameBytes.length;
170
+ hash.copy(payload, offset, 0, 32);
171
+ return buildFrame(CMD_DEPLOY_CHECKSUM, payload);
172
+ }
173
+ // ── Config command builders ────────────────────────────────────────
174
+ export function buildConfigListCommand() {
175
+ return buildFrame(CMD_CONFIG_LIST);
176
+ }
177
+ /** Build CONFIG_SET payload: u8 flags | u16le key_len | key | u16le val_len | value */
178
+ export function buildConfigSetCommand(key, value, secret) {
179
+ const keyBytes = Buffer.from(key, 'utf-8');
180
+ const valBytes = Buffer.from(value, 'utf-8');
181
+ const payload = Buffer.alloc(1 + 2 + keyBytes.length + 2 + valBytes.length);
182
+ let offset = 0;
183
+ payload[offset++] = secret ? ENV_FLAG_SECRET : 0x00;
184
+ payload.writeUInt16LE(keyBytes.length, offset);
185
+ offset += 2;
186
+ keyBytes.copy(payload, offset);
187
+ offset += keyBytes.length;
188
+ payload.writeUInt16LE(valBytes.length, offset);
189
+ offset += 2;
190
+ valBytes.copy(payload, offset);
191
+ return buildFrame(CMD_CONFIG_SET, payload);
192
+ }
193
+ /** Build CONFIG_DELETE payload: u16le key_len | key */
194
+ export function buildConfigDeleteCommand(key) {
195
+ const keyBytes = Buffer.from(key, 'utf-8');
196
+ const payload = Buffer.alloc(2 + keyBytes.length);
197
+ payload.writeUInt16LE(keyBytes.length, 0);
198
+ keyBytes.copy(payload, 2);
199
+ return buildFrame(CMD_CONFIG_DELETE, payload);
200
+ }
201
+ const MSG_TYPE_MAP = {
202
+ [MSG_READY]: 'ready',
203
+ [MSG_LOG]: 'log',
204
+ [MSG_WARN]: 'warn',
205
+ [MSG_ERROR]: 'error',
206
+ [MSG_RESULT]: 'result',
207
+ [MSG_INFO]: 'info',
208
+ [MSG_DEBUG]: 'debug',
209
+ [MSG_COMPLETIONS]: 'completions',
210
+ [MSG_EVAL_ERROR]: 'eval_error',
211
+ [MSG_PROMPT]: 'prompt',
212
+ [MSG_OK]: 'ok',
213
+ [MSG_ERR]: 'err',
214
+ [MSG_CHECKSUM_RESULT]: 'checksum_result',
215
+ [MSG_CONFIG_ENTRIES]: 'config_entries',
216
+ [MSG_TEST]: 'test',
217
+ [MSG_MANIFEST_DONE]: 'manifest_done',
218
+ };
219
+ /** Parse a frame into a typed message. Returns null for unknown types. */
220
+ export function frameToMessage(frame) {
221
+ const type = MSG_TYPE_MAP[frame.type];
222
+ if (!type)
223
+ return null;
224
+ return { type, payload: frame.payload };
225
+ }
226
+ /** Parse a CBOR-encoded completions message payload */
227
+ export function parseCompletions(data) {
228
+ try {
229
+ const parsed = decodeCbor(data);
230
+ if (typeof parsed.prefix === 'string' && Array.isArray(parsed.items)) {
231
+ return parsed;
232
+ }
233
+ return null;
234
+ }
235
+ catch {
236
+ return null;
237
+ }
238
+ }
239
+ // ── Valid device→CLI message type set ──────────────────────────────
240
+ /** All known device→CLI message type bytes */
241
+ const VALID_MSG_TYPES = new Set(Object.keys(MSG_TYPE_MAP).map(Number));
242
+ /** Accumulates incoming data and yields complete frames.
243
+ * Bytes with unknown type values are collected as raw output. */
244
+ export class FrameParser {
245
+ buf = Buffer.alloc(0);
246
+ rawAccum = Buffer.alloc(0);
247
+ /** Feed data and return complete frames + any raw bytes that were skipped */
248
+ feed(data) {
249
+ const incoming = Buffer.from(data);
250
+ this.buf = this.buf.length > 0 ? Buffer.concat([this.buf, incoming]) : incoming;
251
+ const frames = [];
252
+ let offset = 0;
253
+ for (;;) {
254
+ if (offset + HEADER_SIZE > this.buf.length)
255
+ break;
256
+ const type = this.buf[offset];
257
+ if (!VALID_MSG_TYPES.has(type)) {
258
+ // Not a known message type: accumulate as raw bytes (boot logs, stray bytes)
259
+ this.rawAccum = Buffer.concat([this.rawAccum, this.buf.subarray(offset, offset + 1)]);
260
+ offset++;
261
+ continue;
262
+ }
263
+ const length = this.buf.readUInt32LE(offset + 1);
264
+ if (length > MAX_FRAME_PAYLOAD) {
265
+ // Corrupted frame: skip byte and resync
266
+ this.rawAccum = Buffer.concat([this.rawAccum, this.buf.subarray(offset, offset + 1)]);
267
+ offset++;
268
+ continue;
269
+ }
270
+ const result = parseFrame(this.buf, offset);
271
+ if (!result)
272
+ break;
273
+ frames.push(result.frame);
274
+ offset += result.bytesConsumed;
275
+ }
276
+ // Keep unconsumed bytes
277
+ if (offset > 0) {
278
+ this.buf = Buffer.from(this.buf.subarray(offset));
279
+ }
280
+ // Return accumulated raw bytes (if any) and reset
281
+ const raw = this.rawAccum.length > 0 ? this.rawAccum : null;
282
+ this.rawAccum = Buffer.alloc(0);
283
+ return { frames, raw };
284
+ }
285
+ /** Drain and return the internal buffer (for displaying stale data) */
286
+ flush() {
287
+ const data = Buffer.concat([this.rawAccum, this.buf]);
288
+ this.rawAccum = Buffer.alloc(0);
289
+ this.buf = Buffer.alloc(0);
290
+ return data;
291
+ }
292
+ /** Reset internal buffer */
293
+ reset() {
294
+ this.rawAccum = Buffer.alloc(0);
295
+ this.buf = Buffer.alloc(0);
296
+ }
297
+ }
298
+ // ── Incomplete expression detection ────────────────────────────────
299
+ /** Returns true if the code has unmatched brackets/parens/braces,
300
+ * unterminated strings, or template literals. */
301
+ export function isIncomplete(code) {
302
+ let level = 0;
303
+ let inSingleQuote = false;
304
+ let inDoubleQuote = false;
305
+ let inTemplate = false;
306
+ let inLineComment = false;
307
+ let inBlockComment = false;
308
+ let escape = false;
309
+ for (let i = 0; i < code.length; i++) {
310
+ const c = code[i];
311
+ if (escape) {
312
+ escape = false;
313
+ continue;
314
+ }
315
+ if (c === '\\' && (inSingleQuote || inDoubleQuote || inTemplate)) {
316
+ escape = true;
317
+ continue;
318
+ }
319
+ if (inLineComment) {
320
+ if (c === '\n')
321
+ inLineComment = false;
322
+ continue;
323
+ }
324
+ if (inBlockComment) {
325
+ if (c === '*' && i + 1 < code.length && code[i + 1] === '/') {
326
+ inBlockComment = false;
327
+ i++;
328
+ }
329
+ continue;
330
+ }
331
+ if (inSingleQuote) {
332
+ if (c === "'")
333
+ inSingleQuote = false;
334
+ continue;
335
+ }
336
+ if (inDoubleQuote) {
337
+ if (c === '"')
338
+ inDoubleQuote = false;
339
+ continue;
340
+ }
341
+ if (inTemplate) {
342
+ if (c === '`') {
343
+ inTemplate = false;
344
+ }
345
+ else if (c === '$' && i + 1 < code.length && code[i + 1] === '{') {
346
+ level++;
347
+ i++;
348
+ }
349
+ else if (c === '}' && level > 0) {
350
+ level--;
351
+ }
352
+ continue;
353
+ }
354
+ // Not inside any string or comment
355
+ if (c === '/' && i + 1 < code.length) {
356
+ if (code[i + 1] === '/') {
357
+ inLineComment = true;
358
+ i++;
359
+ continue;
360
+ }
361
+ if (code[i + 1] === '*') {
362
+ inBlockComment = true;
363
+ i++;
364
+ continue;
365
+ }
366
+ }
367
+ if (c === "'") {
368
+ inSingleQuote = true;
369
+ }
370
+ else if (c === '"') {
371
+ inDoubleQuote = true;
372
+ }
373
+ else if (c === '`') {
374
+ inTemplate = true;
375
+ }
376
+ else if (c === '(' || c === '[' || c === '{') {
377
+ level++;
378
+ }
379
+ else if (c === ')' || c === ']' || c === '}') {
380
+ level--;
381
+ }
382
+ }
383
+ return level > 0 || inSingleQuote || inDoubleQuote || inTemplate || inBlockComment;
384
+ }
385
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/cli/lib/protocol.ts"],"names":[],"mappings":"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"}