functionalscript 0.43.1 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1074) hide show
  1. package/README.md +53 -21
  2. package/fjs/asn.1/module.f.d.mts +123 -0
  3. package/fjs/asn.1/module.f.mjs +459 -0
  4. package/fjs/asn.1/proof.f.d.mts +53 -0
  5. package/fjs/asn.1/proof.f.mjs +321 -0
  6. package/fjs/asn.1/types.d.ts +37 -0
  7. package/fjs/asserts/module.f.d.mts +51 -0
  8. package/fjs/asserts/module.f.mjs +69 -0
  9. package/fjs/asserts/proof.f.d.mts +14 -0
  10. package/fjs/asserts/proof.f.mjs +33 -0
  11. package/fjs/asserts/types.d.ts +11 -0
  12. package/fjs/basen/base128/module.f.d.mts +22 -0
  13. package/fjs/basen/base128/module.f.mjs +51 -0
  14. package/fjs/basen/base128/proof.f.d.mts +4 -0
  15. package/fjs/basen/base128/proof.f.mjs +32 -0
  16. package/fjs/basen/base64/module.f.d.mts +14 -0
  17. package/fjs/basen/base64/module.f.mjs +75 -0
  18. package/fjs/basen/base64/proof.f.d.mts +19 -0
  19. package/fjs/basen/base64/proof.f.mjs +150 -0
  20. package/fjs/basen/cbase32/module.f.d.mts +18 -0
  21. package/fjs/basen/cbase32/module.f.mjs +61 -0
  22. package/fjs/basen/cbase32/proof.f.d.mts +10 -0
  23. package/fjs/basen/cbase32/proof.f.mjs +79 -0
  24. package/fjs/basen/module.f.d.mts +30 -0
  25. package/fjs/basen/module.f.mjs +88 -0
  26. package/fjs/basen/proof.f.mjs +69 -0
  27. package/fjs/basen/types.d.ts +14 -0
  28. package/fjs/bnf/data/module.f.d.mts +47 -0
  29. package/fjs/bnf/data/module.f.mjs +188 -0
  30. package/fjs/bnf/data/proof.f.d.mts +13 -0
  31. package/fjs/bnf/data/proof.f.mjs +159 -0
  32. package/fjs/bnf/data/types.d.ts +35 -0
  33. package/fjs/bnf/descent/module.f.d.mts +48 -0
  34. package/fjs/bnf/descent/module.f.mjs +289 -0
  35. package/fjs/bnf/descent/proof.f.d.mts +14 -0
  36. package/fjs/bnf/descent/proof.f.mjs +427 -0
  37. package/fjs/bnf/descent/types.d.ts +79 -0
  38. package/fjs/bnf/ll1/module.f.d.mts +67 -0
  39. package/fjs/bnf/ll1/module.f.mjs +341 -0
  40. package/fjs/bnf/ll1/proof.f.d.mts +18 -0
  41. package/fjs/bnf/ll1/proof.f.mjs +413 -0
  42. package/fjs/bnf/ll1/types.d.ts +65 -0
  43. package/fjs/bnf/module.f.d.mts +173 -0
  44. package/fjs/bnf/module.f.mjs +339 -0
  45. package/fjs/bnf/proof.f.d.mts +19 -0
  46. package/fjs/bnf/proof.f.mjs +165 -0
  47. package/fjs/bnf/testlib.f.d.mts +10 -0
  48. package/fjs/bnf/testlib.f.mjs +196 -0
  49. package/fjs/bnf/token_symbol/module.f.d.mts +36 -0
  50. package/fjs/bnf/token_symbol/module.f.mjs +63 -0
  51. package/fjs/bnf/token_symbol/proof.f.mjs +46 -0
  52. package/fjs/bnf/token_symbol/types.d.ts +27 -0
  53. package/fjs/bnf/types.d.ts +74 -0
  54. package/fjs/cas/cli/module.f.d.mts +17 -0
  55. package/fjs/cas/cli/module.f.mjs +73 -0
  56. package/fjs/cas/cli/proof.f.d.mts +20 -0
  57. package/fjs/cas/cli/proof.f.mjs +120 -0
  58. package/fjs/cas/evo/module.f.d.mts +157 -0
  59. package/fjs/cas/evo/module.f.mjs +563 -0
  60. package/fjs/cas/evo/proof.f.d.mts +55 -0
  61. package/fjs/cas/evo/proof.f.mjs +752 -0
  62. package/fjs/cas/evo/types.d.ts +111 -0
  63. package/fjs/cas/module.f.d.mts +68 -0
  64. package/fjs/cas/module.f.mjs +350 -0
  65. package/fjs/cas/proof.f.d.mts +29 -0
  66. package/fjs/cas/proof.f.mjs +371 -0
  67. package/fjs/cas/types.d.ts +35 -0
  68. package/fjs/ci/bun/module.f.d.mts +11 -0
  69. package/fjs/ci/bun/module.f.mjs +20 -0
  70. package/fjs/ci/common/module.f.d.mts +80 -0
  71. package/fjs/ci/common/module.f.mjs +88 -0
  72. package/fjs/ci/common/types.d.ts +27 -0
  73. package/fjs/ci/config/module.f.d.mts +45 -0
  74. package/fjs/ci/config/module.f.mjs +89 -0
  75. package/fjs/ci/deno/module.f.d.mts +16 -0
  76. package/fjs/ci/deno/module.f.mjs +29 -0
  77. package/fjs/ci/deno/proof.f.d.mts +4 -0
  78. package/fjs/ci/deno/proof.f.mjs +26 -0
  79. package/fjs/ci/module.f.d.mts +19 -0
  80. package/fjs/ci/module.f.mjs +89 -0
  81. package/fjs/ci/nix/module.f.d.mts +69 -0
  82. package/fjs/ci/nix/module.f.mjs +136 -0
  83. package/fjs/ci/nix/proof.f.d.mts +30 -0
  84. package/fjs/ci/nix/proof.f.mjs +146 -0
  85. package/fjs/ci/nix/types.d.ts +16 -0
  86. package/fjs/ci/node/module.f.d.mts +48 -0
  87. package/fjs/ci/node/module.f.mjs +139 -0
  88. package/fjs/ci/node/proof.f.mjs +18 -0
  89. package/fjs/ci/proof.f.d.mts +22 -0
  90. package/fjs/ci/proof.f.mjs +220 -0
  91. package/fjs/ci/rust/module.f.d.mts +15 -0
  92. package/fjs/ci/rust/module.f.mjs +108 -0
  93. package/fjs/ci/types.d.ts +9 -0
  94. package/fjs/cli/module.f.d.mts +16 -0
  95. package/fjs/cli/module.f.mjs +51 -0
  96. package/fjs/cli/proof.f.d.mts +18 -0
  97. package/fjs/cli/proof.f.mjs +132 -0
  98. package/fjs/cli/types.d.ts +15 -0
  99. package/fjs/common/monoid/module.f.d.mts +145 -0
  100. package/fjs/common/monoid/module.f.mjs +267 -0
  101. package/fjs/common/monoid/proof.f.d.mts +21 -0
  102. package/fjs/common/monoid/proof.f.mjs +142 -0
  103. package/fjs/common/monoid/types.d.ts +73 -0
  104. package/fjs/crypto/hmac/module.f.d.mts +32 -0
  105. package/fjs/crypto/hmac/module.f.mjs +65 -0
  106. package/fjs/crypto/hmac/proof.f.mjs +34 -0
  107. package/fjs/crypto/pow/module.f.d.mts +43 -0
  108. package/fjs/crypto/pow/module.f.mjs +93 -0
  109. package/fjs/crypto/pow/proof.f.mjs +121 -0
  110. package/fjs/crypto/pow/types.d.ts +19 -0
  111. package/fjs/crypto/secp/module.f.d.mts +61 -0
  112. package/fjs/crypto/secp/module.f.mjs +204 -0
  113. package/fjs/crypto/secp/proof.f.d.mts +11 -0
  114. package/fjs/crypto/secp/proof.f.mjs +139 -0
  115. package/fjs/crypto/secp/types.d.ts +36 -0
  116. package/fjs/crypto/sha2/module.f.d.mts +80 -0
  117. package/fjs/crypto/sha2/module.f.mjs +431 -0
  118. package/fjs/crypto/sha2/proof.f.d.mts +34 -0
  119. package/fjs/crypto/sha2/proof.f.mjs +146 -0
  120. package/fjs/crypto/sha2/types.d.ts +57 -0
  121. package/fjs/crypto/sign/module.f.d.mts +46 -0
  122. package/fjs/crypto/sign/module.f.mjs +189 -0
  123. package/fjs/crypto/sign/proof.f.d.mts +17 -0
  124. package/fjs/crypto/sign/proof.f.mjs +604 -0
  125. package/fjs/crypto/sign/types.d.ts +13 -0
  126. package/fjs/crypto/vdf/module.f.d.mts +34 -0
  127. package/fjs/crypto/vdf/module.f.mjs +86 -0
  128. package/fjs/crypto/vdf/proof.f.mjs +106 -0
  129. package/fjs/crypto/vdf/types.d.ts +18 -0
  130. package/fjs/dev/module.f.d.mts +59 -0
  131. package/fjs/dev/module.f.mjs +171 -0
  132. package/fjs/dev/package_json/module.f.d.mts +39 -0
  133. package/fjs/dev/package_json/module.f.mjs +40 -0
  134. package/fjs/dev/package_json/proof.f.mjs +32 -0
  135. package/fjs/dev/proof.f.d.mts +13 -0
  136. package/fjs/dev/proof.f.mjs +78 -0
  137. package/fjs/dev/types.d.ts +14 -0
  138. package/fjs/dev/update/module.f.d.mts +22 -0
  139. package/fjs/dev/update/module.f.mjs +37 -0
  140. package/fjs/dev/update/proof.f.d.mts +10 -0
  141. package/fjs/dev/update/proof.f.mjs +35 -0
  142. package/fjs/djs/ast/module.f.d.mts +35 -0
  143. package/fjs/djs/ast/module.f.mjs +82 -0
  144. package/fjs/djs/ast/proof.f.mjs +48 -0
  145. package/fjs/djs/ast/types.d.ts +54 -0
  146. package/fjs/djs/examples/input.f.mjs +4 -0
  147. package/fjs/djs/examples/m.f.mjs +1 -0
  148. package/fjs/djs/module.f.d.mts +17 -0
  149. package/fjs/djs/module.f.mjs +47 -0
  150. package/fjs/djs/parser/module.f.d.mts +78 -0
  151. package/fjs/djs/parser/module.f.mjs +565 -0
  152. package/fjs/djs/parser/proof.f.d.mts +17 -0
  153. package/fjs/djs/parser/proof.f.mjs +555 -0
  154. package/fjs/djs/parser/types.d.ts +11 -0
  155. package/fjs/djs/proof.f.d.mts +13 -0
  156. package/fjs/djs/proof.f.mjs +55 -0
  157. package/fjs/djs/serializer/module.f.d.mts +30 -0
  158. package/fjs/djs/serializer/module.f.mjs +207 -0
  159. package/fjs/djs/serializer/proof.f.mjs +116 -0
  160. package/fjs/djs/tokenizer/module.f.d.mts +65 -0
  161. package/fjs/djs/tokenizer/module.f.mjs +632 -0
  162. package/fjs/djs/tokenizer/proof.f.d.mts +17 -0
  163. package/fjs/djs/tokenizer/proof.f.mjs +992 -0
  164. package/fjs/djs/tokenizer/types.d.ts +20 -0
  165. package/fjs/djs/transpiler/module.f.d.mts +33 -0
  166. package/fjs/djs/transpiler/module.f.mjs +122 -0
  167. package/fjs/djs/transpiler/proof.f.mjs +76 -0
  168. package/fjs/djs/transpiler/types.d.ts +25 -0
  169. package/fjs/djs/types.d.ts +13 -0
  170. package/fjs/effects/eff/module.f.d.mts +20 -0
  171. package/fjs/effects/eff/module.f.mjs +70 -0
  172. package/fjs/effects/eff/proof.f.d.mts +15 -0
  173. package/fjs/effects/eff/proof.f.mjs +69 -0
  174. package/fjs/effects/eff/types.d.ts +71 -0
  175. package/fjs/effects/list/module.f.d.mts +32 -0
  176. package/fjs/effects/list/module.f.mjs +36 -0
  177. package/fjs/effects/list/types.d.ts +26 -0
  178. package/fjs/effects/memory/module.f.d.mts +34 -0
  179. package/fjs/effects/memory/module.f.mjs +45 -0
  180. package/fjs/effects/memory/proof.f.d.mts +16 -0
  181. package/fjs/effects/memory/proof.f.mjs +86 -0
  182. package/fjs/effects/memory/types.d.ts +18 -0
  183. package/fjs/effects/mock/module.f.d.mts +14 -0
  184. package/fjs/effects/mock/module.f.mjs +28 -0
  185. package/fjs/effects/mock/types.d.ts +15 -0
  186. package/fjs/effects/module.d.mts +15 -0
  187. package/fjs/effects/module.f.d.mts +352 -0
  188. package/fjs/effects/module.f.mjs +383 -0
  189. package/fjs/effects/module.mjs +26 -0
  190. package/fjs/effects/node/memory/module.d.mts +27 -0
  191. package/fjs/effects/node/memory/module.mjs +60 -0
  192. package/fjs/effects/node/memory/proof.d.mts +12 -0
  193. package/fjs/effects/node/memory/proof.mjs +44 -0
  194. package/fjs/effects/node/module.d.mts +59 -0
  195. package/fjs/effects/node/module.f.d.mts +177 -0
  196. package/fjs/effects/node/module.f.mjs +348 -0
  197. package/fjs/effects/node/module.mjs +381 -0
  198. package/fjs/effects/node/proof.f.d.mts +76 -0
  199. package/fjs/effects/node/proof.f.mjs +444 -0
  200. package/fjs/effects/node/types.d.ts +203 -0
  201. package/fjs/effects/node/virtual/module.f.d.mts +34 -0
  202. package/fjs/effects/node/virtual/module.f.mjs +435 -0
  203. package/fjs/effects/node/virtual/proof.f.d.mts +38 -0
  204. package/fjs/effects/node/virtual/proof.f.mjs +238 -0
  205. package/fjs/effects/node/virtual/types.d.ts +39 -0
  206. package/fjs/effects/proof.f.d.mts +65 -0
  207. package/fjs/effects/proof.f.mjs +234 -0
  208. package/fjs/effects/types.d.ts +115 -0
  209. package/fjs/emergent_testing/all.test.d.mts +8 -0
  210. package/fjs/emergent_testing/all.test.mjs +14 -0
  211. package/fjs/emergent_testing/example.f.d.mts +16 -0
  212. package/fjs/emergent_testing/example.f.mjs +34 -0
  213. package/fjs/emergent_testing/module.f.d.mts +155 -0
  214. package/fjs/emergent_testing/module.f.mjs +388 -0
  215. package/fjs/emergent_testing/proof.f.d.mts +97 -0
  216. package/fjs/emergent_testing/proof.f.mjs +518 -0
  217. package/fjs/emergent_testing/types.d.ts +53 -0
  218. package/fjs/fsc/bnf.f.d.mts +6 -0
  219. package/fjs/fsc/bnf.f.mjs +80 -0
  220. package/fjs/fsc/json.f.d.mts +16 -0
  221. package/fjs/fsc/json.f.mjs +127 -0
  222. package/fjs/fsc/module.f.d.mts +23 -0
  223. package/fjs/fsc/module.f.mjs +140 -0
  224. package/fjs/fsc/proof.f.mjs +119 -0
  225. package/fjs/fsm/module.f.d.mts +27 -0
  226. package/fjs/fsm/module.f.mjs +99 -0
  227. package/fjs/fsm/proof.f.d.mts +7 -0
  228. package/fjs/fsm/proof.f.mjs +149 -0
  229. package/fjs/js/tokenizer/module.f.d.mts +26 -0
  230. package/fjs/js/tokenizer/module.f.mjs +759 -0
  231. package/fjs/js/tokenizer/proof.f.d.mts +12 -0
  232. package/fjs/js/tokenizer/proof.f.mjs +681 -0
  233. package/fjs/js/tokenizer/types.d.ts +193 -0
  234. package/fjs/mcp/cas/module.f.d.mts +156 -0
  235. package/fjs/mcp/cas/module.f.mjs +302 -0
  236. package/fjs/mcp/evo/module.f.d.mts +88 -0
  237. package/fjs/mcp/evo/module.f.mjs +153 -0
  238. package/fjs/mcp/evo/proof.f.d.mts +17 -0
  239. package/fjs/mcp/evo/proof.f.mjs +166 -0
  240. package/fjs/mcp/module.f.d.mts +67 -0
  241. package/fjs/mcp/module.f.mjs +98 -0
  242. package/fjs/mcp/proof.f.d.mts +56 -0
  243. package/fjs/mcp/proof.f.mjs +718 -0
  244. package/fjs/media/html/module.f.d.mts +55 -0
  245. package/fjs/media/html/module.f.mjs +169 -0
  246. package/fjs/media/html/proof.f.d.mts +19 -0
  247. package/fjs/media/html/proof.f.mjs +80 -0
  248. package/fjs/media/html/types.d.ts +19 -0
  249. package/fjs/media/json/module.f.d.mts +48 -0
  250. package/fjs/media/json/module.f.mjs +104 -0
  251. package/fjs/media/json/parser/module.f.d.mts +30 -0
  252. package/fjs/media/json/parser/module.f.mjs +236 -0
  253. package/fjs/media/json/parser/proof.f.d.mts +8 -0
  254. package/fjs/media/json/parser/proof.f.mjs +314 -0
  255. package/fjs/media/json/parser/types.d.ts +39 -0
  256. package/fjs/media/json/proof.f.mjs +79 -0
  257. package/fjs/media/json/rtti/module.f.d.mts +38 -0
  258. package/fjs/media/json/rtti/module.f.mjs +51 -0
  259. package/fjs/media/json/rtti/proof.f.d.mts +29 -0
  260. package/fjs/media/json/rtti/proof.f.mjs +86 -0
  261. package/fjs/media/json/schema/module.f.d.mts +113 -0
  262. package/fjs/media/json/schema/module.f.mjs +309 -0
  263. package/fjs/media/json/schema/proof.f.d.mts +81 -0
  264. package/fjs/media/json/schema/proof.f.mjs +305 -0
  265. package/fjs/media/json/serializer/module.f.d.mts +40 -0
  266. package/fjs/media/json/serializer/module.f.mjs +131 -0
  267. package/fjs/media/json/serializer/proof.f.mjs +92 -0
  268. package/fjs/media/json/tokenizer/module.f.d.mts +25 -0
  269. package/fjs/media/json/tokenizer/module.f.mjs +96 -0
  270. package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
  271. package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
  272. package/fjs/media/json/tokenizer/types.d.ts +17 -0
  273. package/fjs/media/json/types.d.ts +25 -0
  274. package/fjs/media/module.f.d.mts +116 -0
  275. package/fjs/media/module.f.mjs +152 -0
  276. package/fjs/media/nix/module.f.d.mts +27 -0
  277. package/fjs/media/nix/module.f.mjs +263 -0
  278. package/fjs/media/nix/proof.f.d.mts +35 -0
  279. package/fjs/media/nix/proof.f.mjs +184 -0
  280. package/fjs/media/nix/types.d.ts +22 -0
  281. package/fjs/media/proof.f.d.mts +19 -0
  282. package/fjs/media/proof.f.mjs +159 -0
  283. package/fjs/media/revision/module.f.d.mts +124 -0
  284. package/fjs/media/revision/module.f.mjs +163 -0
  285. package/fjs/media/revision/proof.f.d.mts +46 -0
  286. package/fjs/media/revision/proof.f.mjs +231 -0
  287. package/fjs/media/revision/types.d.ts +16 -0
  288. package/fjs/media/rust/module.f.d.mts +61 -0
  289. package/fjs/media/rust/module.f.mjs +93 -0
  290. package/fjs/media/rust/proof.f.d.mts +17 -0
  291. package/fjs/media/rust/proof.f.mjs +50 -0
  292. package/fjs/media/type/module.f.d.mts +114 -0
  293. package/fjs/media/type/module.f.mjs +265 -0
  294. package/fjs/media/type/proof.f.d.mts +56 -0
  295. package/fjs/media/type/proof.f.mjs +325 -0
  296. package/fjs/media/type/types.d.ts +67 -0
  297. package/fjs/media/types.d.ts +26 -0
  298. package/fjs/module.d.mts +7 -0
  299. package/fjs/module.f.d.mts +11 -0
  300. package/fjs/module.f.mjs +62 -0
  301. package/fjs/module.mjs +12 -0
  302. package/fjs/nanvm/module.f.d.mts +54 -0
  303. package/fjs/nanvm/module.f.mjs +240 -0
  304. package/fjs/nanvm/proof.f.d.mts +41 -0
  305. package/fjs/nanvm/proof.f.mjs +173 -0
  306. package/fjs/nanvm/rust/module.f.d.mts +54 -0
  307. package/fjs/nanvm/rust/module.f.mjs +166 -0
  308. package/fjs/nanvm/rust/proof.f.d.mts +21 -0
  309. package/fjs/nanvm/rust/proof.f.mjs +119 -0
  310. package/fjs/nanvm/types.d.ts +105 -0
  311. package/fjs/nanvm/update/module.f.d.mts +23 -0
  312. package/fjs/nanvm/update/module.f.mjs +33 -0
  313. package/fjs/nanvm/update/proof.f.d.mts +9 -0
  314. package/fjs/nanvm/update/proof.f.mjs +32 -0
  315. package/fjs/path/module.f.d.mts +63 -0
  316. package/fjs/path/module.f.mjs +98 -0
  317. package/fjs/path/proof.f.mjs +125 -0
  318. package/fjs/proof.f.d.mts +13 -0
  319. package/fjs/proof.f.mjs +51 -0
  320. package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
  321. package/fjs/protocol/json_rpc/module.f.mjs +115 -0
  322. package/fjs/protocol/json_rpc/proof.f.d.mts +41 -0
  323. package/fjs/protocol/json_rpc/proof.f.mjs +105 -0
  324. package/fjs/protocol/json_rpc/types.d.ts +30 -0
  325. package/fjs/protocol/mcp/module.f.d.mts +227 -0
  326. package/fjs/protocol/mcp/module.f.mjs +369 -0
  327. package/fjs/protocol/mcp/proof.f.d.mts +57 -0
  328. package/fjs/protocol/mcp/proof.f.mjs +335 -0
  329. package/fjs/protocol/mcp/stdio/module.f.d.mts +50 -0
  330. package/fjs/protocol/mcp/stdio/module.f.mjs +125 -0
  331. package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
  332. package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
  333. package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
  334. package/fjs/protocol/mcp/types.d.ts +59 -0
  335. package/fjs/sul/id/module.f.d.mts +42 -0
  336. package/fjs/sul/id/module.f.mjs +144 -0
  337. package/fjs/sul/id/proof.f.mjs +72 -0
  338. package/fjs/sul/id/types.d.ts +8 -0
  339. package/fjs/sul/level/hash/module.f.d.mts +40 -0
  340. package/fjs/sul/level/hash/module.f.mjs +62 -0
  341. package/fjs/sul/level/hash/proof.f.d.mts +19 -0
  342. package/fjs/sul/level/hash/proof.f.mjs +134 -0
  343. package/fjs/sul/level/hash/types.d.ts +20 -0
  344. package/fjs/sul/level/literal/module.f.d.mts +57 -0
  345. package/fjs/sul/level/literal/module.f.mjs +121 -0
  346. package/fjs/sul/level/literal/proof.f.d.mts +15 -0
  347. package/fjs/sul/level/literal/proof.f.mjs +791 -0
  348. package/fjs/sul/level/literal/types.d.ts +31 -0
  349. package/fjs/sul/module.f.d.mts +27 -0
  350. package/fjs/sul/module.f.mjs +70 -0
  351. package/fjs/sul/proof.f.d.mts +15 -0
  352. package/fjs/sul/proof.f.mjs +65 -0
  353. package/fjs/sul/types.d.ts +19 -0
  354. package/fjs/text/ascii/module.f.d.mts +162 -0
  355. package/fjs/text/ascii/module.f.mjs +272 -0
  356. package/fjs/text/ascii/proof.f.d.mts +16 -0
  357. package/fjs/text/ascii/proof.f.mjs +48 -0
  358. package/fjs/text/code_point/module.f.d.mts +92 -0
  359. package/fjs/text/code_point/module.f.mjs +155 -0
  360. package/fjs/text/code_point/proof.f.d.mts +9 -0
  361. package/fjs/text/code_point/proof.f.mjs +108 -0
  362. package/fjs/text/module.f.d.mts +41 -0
  363. package/fjs/text/module.f.mjs +62 -0
  364. package/fjs/text/proof.f.d.mts +13 -0
  365. package/fjs/text/proof.f.mjs +51 -0
  366. package/fjs/text/sgr/module.f.d.mts +61 -0
  367. package/fjs/text/sgr/module.f.mjs +100 -0
  368. package/fjs/text/sgr/proof.f.d.mts +4 -0
  369. package/fjs/text/sgr/proof.f.mjs +42 -0
  370. package/fjs/text/sgr/types.d.ts +12 -0
  371. package/fjs/text/types.d.ts +13 -0
  372. package/fjs/text/utf16/module.f.d.mts +151 -0
  373. package/fjs/text/utf16/module.f.mjs +348 -0
  374. package/fjs/text/utf16/proof.f.d.mts +13 -0
  375. package/fjs/text/utf16/proof.f.mjs +175 -0
  376. package/fjs/text/utf16/types.d.ts +19 -0
  377. package/fjs/text/utf8/module.f.d.mts +73 -0
  378. package/fjs/text/utf8/module.f.mjs +278 -0
  379. package/fjs/text/utf8/proof.f.mjs +217 -0
  380. package/fjs/text/utf8/types.d.ts +26 -0
  381. package/fjs/types/array/module.f.d.mts +69 -0
  382. package/fjs/types/array/module.f.mjs +101 -0
  383. package/fjs/types/array/proof.f.mjs +98 -0
  384. package/fjs/types/array/types.d.ts +13 -0
  385. package/fjs/types/bigfloat/module.f.d.mts +34 -0
  386. package/fjs/types/bigfloat/module.f.mjs +125 -0
  387. package/fjs/types/bigfloat/proof.f.d.mts +6 -0
  388. package/fjs/types/bigfloat/proof.f.mjs +264 -0
  389. package/fjs/types/bigfloat/types.d.ts +6 -0
  390. package/fjs/types/bigint/benchmark.mjs +205 -0
  391. package/fjs/types/bigint/module.f.d.mts +180 -0
  392. package/fjs/types/bigint/module.f.mjs +290 -0
  393. package/fjs/types/bigint/proof.f.d.mts +39 -0
  394. package/fjs/types/bigint/proof.f.mjs +443 -0
  395. package/fjs/types/bigint/types.d.ts +14 -0
  396. package/fjs/types/bit_vec/module.f.d.mts +195 -0
  397. package/fjs/types/bit_vec/module.f.mjs +475 -0
  398. package/fjs/types/bit_vec/proof.f.d.mts +71 -0
  399. package/fjs/types/bit_vec/proof.f.mjs +521 -0
  400. package/fjs/types/bit_vec/types.d.ts +51 -0
  401. package/fjs/types/btree/find/module.f.d.mts +19 -0
  402. package/fjs/types/btree/find/module.f.mjs +80 -0
  403. package/fjs/types/btree/find/proof.f.d.mts +8 -0
  404. package/fjs/types/btree/find/proof.f.mjs +123 -0
  405. package/fjs/types/btree/find/types.d.ts +22 -0
  406. package/fjs/types/btree/module.f.d.mts +13 -0
  407. package/fjs/types/btree/module.f.mjs +40 -0
  408. package/fjs/types/btree/proof.f.d.mts +18 -0
  409. package/fjs/types/btree/proof.f.mjs +87 -0
  410. package/fjs/types/btree/remove/module.f.d.mts +32 -0
  411. package/fjs/types/btree/remove/module.f.mjs +187 -0
  412. package/fjs/types/btree/remove/proof.f.d.mts +12 -0
  413. package/fjs/types/btree/remove/proof.f.mjs +475 -0
  414. package/fjs/types/btree/set/module.f.d.mts +14 -0
  415. package/fjs/types/btree/set/module.f.mjs +116 -0
  416. package/fjs/types/btree/set/proof.f.d.mts +4 -0
  417. package/fjs/types/btree/set/proof.f.mjs +430 -0
  418. package/fjs/types/btree/types/module.f.d.mts +20 -0
  419. package/fjs/types/btree/types/module.f.mjs +20 -0
  420. package/fjs/types/btree/types/types.d.ts +14 -0
  421. package/fjs/types/byte_set/module.f.d.mts +35 -0
  422. package/fjs/types/byte_set/module.f.mjs +68 -0
  423. package/fjs/types/byte_set/proof.f.d.mts +14 -0
  424. package/fjs/types/byte_set/proof.f.mjs +86 -0
  425. package/fjs/types/byte_set/types.d.ts +6 -0
  426. package/fjs/types/function/compare/module.f.d.mts +45 -0
  427. package/fjs/types/function/compare/module.f.mjs +72 -0
  428. package/fjs/types/function/compare/proof.f.mjs +50 -0
  429. package/fjs/types/function/compare/types.d.ts +22 -0
  430. package/fjs/types/function/module.f.d.mts +33 -0
  431. package/fjs/types/function/module.f.mjs +39 -0
  432. package/fjs/types/function/operator/module.f.d.mts +38 -0
  433. package/fjs/types/function/operator/module.f.mjs +55 -0
  434. package/fjs/types/function/operator/proof.f.mjs +76 -0
  435. package/fjs/types/function/operator/types.d.ts +39 -0
  436. package/fjs/types/function/proof.f.mjs +16 -0
  437. package/fjs/types/function/types.d.ts +16 -0
  438. package/fjs/types/list/module.f.d.mts +95 -0
  439. package/fjs/types/list/module.f.mjs +311 -0
  440. package/fjs/types/list/proof.f.d.mts +35 -0
  441. package/fjs/types/list/proof.f.mjs +365 -0
  442. package/fjs/types/list/types.d.ts +36 -0
  443. package/fjs/types/map/module.f.d.mts +13 -0
  444. package/fjs/types/map/module.f.mjs +42 -0
  445. package/fjs/types/map/proof.f.mjs +25 -0
  446. package/fjs/types/nibble_set/module.f.d.mts +31 -0
  447. package/fjs/types/nibble_set/module.f.mjs +43 -0
  448. package/fjs/types/nibble_set/proof.f.mjs +59 -0
  449. package/fjs/types/nibble_set/types.d.ts +9 -0
  450. package/fjs/types/nominal/module.f.d.mts +10 -0
  451. package/fjs/types/nominal/module.f.mjs +17 -0
  452. package/fjs/types/nominal/proof.f.d.mts +7 -0
  453. package/fjs/types/nominal/proof.f.mjs +79 -0
  454. package/fjs/types/nominal/types.d.ts +25 -0
  455. package/fjs/types/nullable/module.f.d.mts +44 -0
  456. package/fjs/types/nullable/module.f.mjs +55 -0
  457. package/fjs/types/nullable/proof.f.mjs +34 -0
  458. package/fjs/types/nullable/types.d.ts +6 -0
  459. package/fjs/types/number/module.f.d.mts +27 -0
  460. package/fjs/types/number/module.f.mjs +56 -0
  461. package/fjs/types/number/proof.f.mjs +204 -0
  462. package/fjs/types/object/module.f.d.mts +45 -0
  463. package/fjs/types/object/module.f.mjs +67 -0
  464. package/fjs/types/object/proof.f.d.mts +28 -0
  465. package/fjs/types/object/proof.f.mjs +29 -0
  466. package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
  467. package/fjs/types/object/structurally_same/module.f.mjs +59 -0
  468. package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
  469. package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
  470. package/fjs/types/object/types.d.ts +50 -0
  471. package/fjs/types/ordered_map/module.f.d.mts +26 -0
  472. package/fjs/types/ordered_map/module.f.mjs +55 -0
  473. package/fjs/types/ordered_map/proof.f.d.mts +8 -0
  474. package/fjs/types/ordered_map/proof.f.mjs +91 -0
  475. package/fjs/types/ordered_map/types.d.ts +8 -0
  476. package/fjs/types/patricia_trie/module.f.d.mts +20 -0
  477. package/fjs/types/patricia_trie/module.f.mjs +43 -0
  478. package/fjs/types/patricia_trie/proof.f.d.mts +17 -0
  479. package/fjs/types/patricia_trie/proof.f.mjs +151 -0
  480. package/fjs/types/patricia_trie/types.d.ts +34 -0
  481. package/fjs/types/prime_field/module.f.d.mts +44 -0
  482. package/fjs/types/prime_field/module.f.mjs +137 -0
  483. package/fjs/types/prime_field/proof.f.mjs +131 -0
  484. package/fjs/types/prime_field/types.d.ts +38 -0
  485. package/fjs/types/range/module.f.d.mts +12 -0
  486. package/fjs/types/range/module.f.mjs +13 -0
  487. package/fjs/types/range/proof.f.mjs +10 -0
  488. package/fjs/types/range/types.d.ts +6 -0
  489. package/fjs/types/range_map/module.f.d.mts +78 -0
  490. package/fjs/types/range_map/module.f.mjs +127 -0
  491. package/fjs/types/range_map/proof.f.d.mts +11 -0
  492. package/fjs/types/range_map/proof.f.mjs +188 -0
  493. package/fjs/types/range_map/types.d.ts +56 -0
  494. package/fjs/types/range_set/module.f.d.mts +10 -0
  495. package/fjs/types/range_set/module.f.mjs +20 -0
  496. package/fjs/types/range_set/proof.f.d.mts +4 -0
  497. package/fjs/types/range_set/proof.f.mjs +29 -0
  498. package/fjs/types/result/module.d.mts +13 -0
  499. package/fjs/types/result/module.f.d.mts +89 -0
  500. package/fjs/types/result/module.f.mjs +97 -0
  501. package/fjs/types/result/module.mjs +30 -0
  502. package/fjs/types/result/proof.f.d.mts +17 -0
  503. package/fjs/types/result/proof.f.mjs +61 -0
  504. package/fjs/types/result/types.d.ts +17 -0
  505. package/fjs/types/rtti/common/module.f.d.mts +119 -0
  506. package/fjs/types/rtti/common/module.f.mjs +185 -0
  507. package/fjs/types/rtti/common/proof.f.d.mts +13 -0
  508. package/fjs/types/rtti/common/proof.f.mjs +67 -0
  509. package/fjs/types/rtti/common/types.d.ts +43 -0
  510. package/fjs/types/rtti/data/module.f.d.mts +120 -0
  511. package/fjs/types/rtti/data/module.f.mjs +1030 -0
  512. package/fjs/types/rtti/data/proof.f.d.mts +75 -0
  513. package/fjs/types/rtti/data/proof.f.mjs +566 -0
  514. package/fjs/types/rtti/data/types.d.ts +83 -0
  515. package/fjs/types/rtti/module.f.d.mts +83 -0
  516. package/fjs/types/rtti/module.f.mjs +112 -0
  517. package/fjs/types/rtti/parse/module.f.d.mts +47 -0
  518. package/fjs/types/rtti/parse/module.f.mjs +198 -0
  519. package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
  520. package/fjs/types/rtti/parse/proof.f.mjs +343 -0
  521. package/fjs/types/rtti/parse/types.d.ts +12 -0
  522. package/fjs/types/rtti/proof.f.d.mts +10 -0
  523. package/fjs/types/rtti/proof.f.mjs +22 -0
  524. package/fjs/types/rtti/ts/module.f.d.mts +93 -0
  525. package/fjs/types/rtti/ts/module.f.mjs +296 -0
  526. package/fjs/types/rtti/ts/proof.f.d.mts +103 -0
  527. package/fjs/types/rtti/ts/proof.f.mjs +236 -0
  528. package/fjs/types/rtti/ts/types.d.ts +99 -0
  529. package/fjs/types/rtti/types.d.ts +83 -0
  530. package/fjs/types/rtti/validate/module.f.d.mts +41 -0
  531. package/fjs/types/rtti/validate/module.f.mjs +171 -0
  532. package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
  533. package/fjs/types/rtti/validate/proof.f.mjs +437 -0
  534. package/fjs/types/rtti/validate/types.d.ts +6 -0
  535. package/fjs/types/sorted_list/module.f.d.mts +46 -0
  536. package/fjs/types/sorted_list/module.f.mjs +119 -0
  537. package/fjs/types/sorted_list/proof.f.d.mts +7 -0
  538. package/fjs/types/sorted_list/proof.f.mjs +54 -0
  539. package/fjs/types/sorted_list/types.d.ts +15 -0
  540. package/fjs/types/sorted_set/module.f.d.mts +54 -0
  541. package/fjs/types/sorted_set/module.f.mjs +58 -0
  542. package/fjs/types/sorted_set/proof.f.d.mts +9 -0
  543. package/fjs/types/sorted_set/proof.f.mjs +79 -0
  544. package/fjs/types/sorted_set/types.d.ts +6 -0
  545. package/fjs/types/string/module.f.d.mts +40 -0
  546. package/fjs/types/string/module.f.mjs +59 -0
  547. package/fjs/types/string/proof.f.mjs +76 -0
  548. package/fjs/types/string_set/module.f.d.mts +39 -0
  549. package/fjs/types/string_set/module.f.mjs +54 -0
  550. package/fjs/types/string_set/proof.f.mjs +46 -0
  551. package/fjs/types/string_set/types.d.ts +7 -0
  552. package/fjs/types/ts/module.f.d.mts +22 -0
  553. package/fjs/types/ts/module.f.mjs +51 -0
  554. package/fjs/types/ts/proof.f.d.mts +39 -0
  555. package/fjs/types/ts/proof.f.mjs +102 -0
  556. package/fjs/types/ts/types.d.ts +21 -0
  557. package/fjs/types/uint8array/module.f.d.mts +42 -0
  558. package/fjs/types/uint8array/module.f.mjs +58 -0
  559. package/fjs/types/uint8array/proof.f.d.mts +17 -0
  560. package/fjs/types/uint8array/proof.f.mjs +73 -0
  561. package/fjs/website/module.f.d.mts +11 -0
  562. package/fjs/website/module.f.mjs +25 -0
  563. package/fjs/website/proof.f.mjs +14 -0
  564. package/package.json +12 -10
  565. package/todo/proof.f.d.mts +22 -0
  566. package/todo/proof.f.mjs +59 -0
  567. package/fjs/asn.1/module.f.d.ts +0 -62
  568. package/fjs/asn.1/module.f.js +0 -278
  569. package/fjs/asn.1/proof.f.d.ts +0 -48
  570. package/fjs/asn.1/proof.f.js +0 -285
  571. package/fjs/asserts/module.f.d.ts +0 -36
  572. package/fjs/asserts/module.f.js +0 -39
  573. package/fjs/asserts/proof.f.d.ts +0 -11
  574. package/fjs/asserts/proof.f.js +0 -18
  575. package/fjs/base_n/module.f.d.ts +0 -45
  576. package/fjs/base_n/module.f.js +0 -72
  577. package/fjs/base_n/proof.f.js +0 -73
  578. package/fjs/basen/base128/module.f.d.ts +0 -20
  579. package/fjs/basen/base128/module.f.js +0 -43
  580. package/fjs/basen/base128/proof.f.js +0 -26
  581. package/fjs/basen/base64/module.f.d.ts +0 -9
  582. package/fjs/basen/base64/module.f.js +0 -71
  583. package/fjs/basen/base64/proof.f.d.ts +0 -16
  584. package/fjs/basen/base64/proof.f.js +0 -139
  585. package/fjs/basen/cbase32/module.f.d.ts +0 -11
  586. package/fjs/basen/cbase32/module.f.js +0 -55
  587. package/fjs/basen/cbase32/proof.f.d.ts +0 -7
  588. package/fjs/basen/cbase32/proof.f.js +0 -62
  589. package/fjs/bnf/data/module.f.d.ts +0 -52
  590. package/fjs/bnf/data/module.f.js +0 -143
  591. package/fjs/bnf/data/proof.f.d.ts +0 -8
  592. package/fjs/bnf/data/proof.f.js +0 -169
  593. package/fjs/bnf/descent/module.f.d.ts +0 -87
  594. package/fjs/bnf/descent/module.f.js +0 -149
  595. package/fjs/bnf/descent/proof.f.d.ts +0 -7
  596. package/fjs/bnf/descent/proof.f.js +0 -368
  597. package/fjs/bnf/ll1/module.f.d.ts +0 -72
  598. package/fjs/bnf/ll1/module.f.js +0 -155
  599. package/fjs/bnf/ll1/proof.f.d.ts +0 -10
  600. package/fjs/bnf/ll1/proof.f.js +0 -375
  601. package/fjs/bnf/module.f.d.ts +0 -165
  602. package/fjs/bnf/module.f.js +0 -174
  603. package/fjs/bnf/proof.f.d.ts +0 -12
  604. package/fjs/bnf/proof.f.js +0 -69
  605. package/fjs/bnf/testlib.f.d.ts +0 -3
  606. package/fjs/bnf/testlib.f.js +0 -138
  607. package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
  608. package/fjs/bnf/token_symbol/module.f.js +0 -48
  609. package/fjs/bnf/token_symbol/proof.f.js +0 -37
  610. package/fjs/cas/cli/module.f.d.ts +0 -6
  611. package/fjs/cas/cli/module.f.js +0 -53
  612. package/fjs/cas/cli/proof.f.d.ts +0 -17
  613. package/fjs/cas/cli/proof.f.js +0 -112
  614. package/fjs/cas/evo/module.f.d.ts +0 -223
  615. package/fjs/cas/evo/module.f.js +0 -455
  616. package/fjs/cas/evo/proof.f.d.ts +0 -47
  617. package/fjs/cas/evo/proof.f.js +0 -707
  618. package/fjs/cas/module.f.d.ts +0 -64
  619. package/fjs/cas/module.f.js +0 -255
  620. package/fjs/cas/proof.f.d.ts +0 -18
  621. package/fjs/cas/proof.f.js +0 -305
  622. package/fjs/ci/bun/module.f.d.ts +0 -2
  623. package/fjs/ci/bun/module.f.js +0 -15
  624. package/fjs/ci/common/module.f.d.ts +0 -88
  625. package/fjs/ci/common/module.f.js +0 -63
  626. package/fjs/ci/config/module.f.d.ts +0 -45
  627. package/fjs/ci/config/module.f.js +0 -80
  628. package/fjs/ci/deno/module.f.d.ts +0 -10
  629. package/fjs/ci/deno/module.f.js +0 -28
  630. package/fjs/ci/deno/proof.f.d.ts +0 -5
  631. package/fjs/ci/deno/proof.f.js +0 -26
  632. package/fjs/ci/module.f.d.ts +0 -13
  633. package/fjs/ci/module.f.js +0 -58
  634. package/fjs/ci/nix/module.f.d.ts +0 -61
  635. package/fjs/ci/nix/module.f.js +0 -92
  636. package/fjs/ci/nix/proof.f.d.ts +0 -23
  637. package/fjs/ci/nix/proof.f.js +0 -109
  638. package/fjs/ci/node/module.f.d.ts +0 -28
  639. package/fjs/ci/node/module.f.js +0 -92
  640. package/fjs/ci/node/proof.f.js +0 -17
  641. package/fjs/ci/proof.f.d.ts +0 -18
  642. package/fjs/ci/proof.f.js +0 -182
  643. package/fjs/ci/rust/module.f.d.ts +0 -3
  644. package/fjs/ci/rust/module.f.js +0 -75
  645. package/fjs/cli/module.f.d.ts +0 -11
  646. package/fjs/cli/module.f.js +0 -34
  647. package/fjs/cli/proof.f.d.ts +0 -14
  648. package/fjs/cli/proof.f.js +0 -111
  649. package/fjs/common/monoid/module.f.d.ts +0 -126
  650. package/fjs/common/monoid/module.f.js +0 -88
  651. package/fjs/common/monoid/proof.f.d.ts +0 -9
  652. package/fjs/common/monoid/proof.f.js +0 -48
  653. package/fjs/crypto/hmac/module.f.d.ts +0 -29
  654. package/fjs/crypto/hmac/module.f.js +0 -56
  655. package/fjs/crypto/hmac/proof.f.js +0 -32
  656. package/fjs/crypto/pow/module.f.d.ts +0 -37
  657. package/fjs/crypto/pow/module.f.js +0 -72
  658. package/fjs/crypto/pow/proof.f.js +0 -111
  659. package/fjs/crypto/secp/module.f.d.ts +0 -85
  660. package/fjs/crypto/secp/module.f.js +0 -176
  661. package/fjs/crypto/secp/proof.f.d.ts +0 -8
  662. package/fjs/crypto/secp/proof.f.js +0 -124
  663. package/fjs/crypto/sha2/module.f.d.ts +0 -102
  664. package/fjs/crypto/sha2/module.f.js +0 -266
  665. package/fjs/crypto/sha2/proof.f.d.ts +0 -31
  666. package/fjs/crypto/sha2/proof.f.js +0 -139
  667. package/fjs/crypto/sign/module.f.d.ts +0 -33
  668. package/fjs/crypto/sign/module.f.js +0 -163
  669. package/fjs/crypto/sign/proof.f.d.ts +0 -11
  670. package/fjs/crypto/sign/proof.f.js +0 -562
  671. package/fjs/crypto/vdf/module.f.d.ts +0 -21
  672. package/fjs/crypto/vdf/module.f.js +0 -57
  673. package/fjs/crypto/vdf/proof.f.js +0 -94
  674. package/fjs/dev/module.f.d.ts +0 -57
  675. package/fjs/dev/module.f.js +0 -135
  676. package/fjs/dev/package_json/module.f.d.ts +0 -16
  677. package/fjs/dev/package_json/module.f.js +0 -24
  678. package/fjs/dev/package_json/proof.f.js +0 -28
  679. package/fjs/dev/proof.f.d.ts +0 -13
  680. package/fjs/dev/proof.f.js +0 -77
  681. package/fjs/dev/update/module.f.d.ts +0 -11
  682. package/fjs/dev/update/module.f.js +0 -20
  683. package/fjs/dev/update/proof.f.d.ts +0 -7
  684. package/fjs/dev/update/proof.f.js +0 -35
  685. package/fjs/djs/ast/module.f.d.ts +0 -62
  686. package/fjs/djs/ast/module.f.js +0 -61
  687. package/fjs/djs/ast/proof.f.js +0 -49
  688. package/fjs/djs/examples/input.f.js +0 -4
  689. package/fjs/djs/examples/m.f.js +0 -1
  690. package/fjs/djs/module.f.d.ts +0 -17
  691. package/fjs/djs/module.f.js +0 -22
  692. package/fjs/djs/parser/module.f.d.ts +0 -23
  693. package/fjs/djs/parser/module.f.js +0 -410
  694. package/fjs/djs/parser/proof.f.d.ts +0 -14
  695. package/fjs/djs/parser/proof.f.js +0 -556
  696. package/fjs/djs/proof.f.d.ts +0 -10
  697. package/fjs/djs/proof.f.js +0 -50
  698. package/fjs/djs/serializer/module.f.d.ts +0 -17
  699. package/fjs/djs/serializer/module.f.js +0 -173
  700. package/fjs/djs/serializer/proof.f.js +0 -133
  701. package/fjs/djs/tokenizer/module.f.d.ts +0 -24
  702. package/fjs/djs/tokenizer/module.f.js +0 -472
  703. package/fjs/djs/tokenizer/proof.f.d.ts +0 -14
  704. package/fjs/djs/tokenizer/proof.f.js +0 -1211
  705. package/fjs/djs/transpiler/module.f.d.ts +0 -41
  706. package/fjs/djs/transpiler/module.f.js +0 -88
  707. package/fjs/djs/transpiler/proof.f.js +0 -67
  708. package/fjs/effects/eff/module.f.d.ts +0 -72
  709. package/fjs/effects/eff/module.f.js +0 -46
  710. package/fjs/effects/eff/proof.f.d.ts +0 -11
  711. package/fjs/effects/eff/proof.f.js +0 -58
  712. package/fjs/effects/list/module.f.d.ts +0 -37
  713. package/fjs/effects/list/module.f.js +0 -17
  714. package/fjs/effects/memory/module.f.d.ts +0 -37
  715. package/fjs/effects/memory/module.f.js +0 -24
  716. package/fjs/effects/memory/proof.f.d.ts +0 -6
  717. package/fjs/effects/memory/proof.f.js +0 -50
  718. package/fjs/effects/mock/module.f.d.ts +0 -16
  719. package/fjs/effects/mock/module.f.js +0 -20
  720. package/fjs/effects/module.d.ts +0 -2
  721. package/fjs/effects/module.f.d.ts +0 -408
  722. package/fjs/effects/module.f.js +0 -312
  723. package/fjs/effects/module.js +0 -11
  724. package/fjs/effects/node/memory/module.d.ts +0 -20
  725. package/fjs/effects/node/memory/module.js +0 -44
  726. package/fjs/effects/node/memory/proof.d.ts +0 -10
  727. package/fjs/effects/node/memory/proof.js +0 -29
  728. package/fjs/effects/node/module.d.ts +0 -20
  729. package/fjs/effects/node/module.f.d.ts +0 -300
  730. package/fjs/effects/node/module.f.js +0 -171
  731. package/fjs/effects/node/module.js +0 -305
  732. package/fjs/effects/node/proof.f.d.ts +0 -69
  733. package/fjs/effects/node/proof.f.js +0 -409
  734. package/fjs/effects/node/virtual/module.f.d.ts +0 -49
  735. package/fjs/effects/node/virtual/module.f.js +0 -440
  736. package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
  737. package/fjs/effects/node/virtual/proof.f.js +0 -186
  738. package/fjs/effects/proof.f.d.ts +0 -56
  739. package/fjs/effects/proof.f.js +0 -200
  740. package/fjs/emergent_testing/all.test.js +0 -5
  741. package/fjs/emergent_testing/example.f.d.ts +0 -13
  742. package/fjs/emergent_testing/example.f.js +0 -31
  743. package/fjs/emergent_testing/module.f.d.ts +0 -140
  744. package/fjs/emergent_testing/module.f.js +0 -289
  745. package/fjs/emergent_testing/proof.f.d.ts +0 -67
  746. package/fjs/emergent_testing/proof.f.js +0 -416
  747. package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
  748. package/fjs/emergent_testing/scenarios/all.js +0 -1
  749. package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
  750. package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
  751. package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
  752. package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
  753. package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
  754. package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
  755. package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
  756. package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
  757. package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
  758. package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
  759. package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
  760. package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
  761. package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
  762. package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
  763. package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
  764. package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
  765. package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
  766. package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
  767. package/fjs/fsc/bnf.f.d.ts +0 -2
  768. package/fjs/fsc/bnf.f.js +0 -42
  769. package/fjs/fsc/json.f.d.ts +0 -7
  770. package/fjs/fsc/json.f.js +0 -64
  771. package/fjs/fsc/module.f.d.ts +0 -11
  772. package/fjs/fsc/module.f.js +0 -73
  773. package/fjs/fsc/proof.f.js +0 -104
  774. package/fjs/fsm/module.f.d.ts +0 -17
  775. package/fjs/fsm/module.f.js +0 -55
  776. package/fjs/fsm/proof.f.d.ts +0 -4
  777. package/fjs/fsm/proof.f.js +0 -126
  778. package/fjs/js/tokenizer/module.f.d.ts +0 -104
  779. package/fjs/js/tokenizer/module.f.js +0 -547
  780. package/fjs/js/tokenizer/proof.f.d.ts +0 -9
  781. package/fjs/js/tokenizer/proof.f.js +0 -986
  782. package/fjs/mcp/cas/module.f.d.ts +0 -27
  783. package/fjs/mcp/cas/module.f.js +0 -232
  784. package/fjs/mcp/evo/module.f.d.ts +0 -32
  785. package/fjs/mcp/evo/module.f.js +0 -99
  786. package/fjs/mcp/evo/proof.f.d.ts +0 -12
  787. package/fjs/mcp/evo/proof.f.js +0 -147
  788. package/fjs/mcp/module.f.d.ts +0 -56
  789. package/fjs/mcp/module.f.js +0 -69
  790. package/fjs/mcp/proof.f.d.ts +0 -45
  791. package/fjs/mcp/proof.f.js +0 -535
  792. package/fjs/media/html/module.f.d.ts +0 -52
  793. package/fjs/media/html/module.f.js +0 -117
  794. package/fjs/media/html/proof.f.d.ts +0 -16
  795. package/fjs/media/html/proof.f.js +0 -65
  796. package/fjs/media/json/module.f.d.ts +0 -64
  797. package/fjs/media/json/module.f.js +0 -109
  798. package/fjs/media/json/parser/module.f.d.ts +0 -21
  799. package/fjs/media/json/parser/module.f.js +0 -194
  800. package/fjs/media/json/parser/proof.f.d.ts +0 -5
  801. package/fjs/media/json/parser/proof.f.js +0 -314
  802. package/fjs/media/json/proof.f.js +0 -98
  803. package/fjs/media/json/schema/module.f.d.ts +0 -78
  804. package/fjs/media/json/schema/module.f.js +0 -96
  805. package/fjs/media/json/schema/proof.f.d.ts +0 -36
  806. package/fjs/media/json/schema/proof.f.js +0 -83
  807. package/fjs/media/json/serializer/module.f.d.ts +0 -28
  808. package/fjs/media/json/serializer/module.f.js +0 -73
  809. package/fjs/media/json/serializer/proof.f.js +0 -94
  810. package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
  811. package/fjs/media/json/tokenizer/module.f.js +0 -63
  812. package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
  813. package/fjs/media/json/tokenizer/proof.f.js +0 -417
  814. package/fjs/media/module.f.d.ts +0 -119
  815. package/fjs/media/module.f.js +0 -88
  816. package/fjs/media/nix/module.f.d.ts +0 -30
  817. package/fjs/media/nix/module.f.js +0 -166
  818. package/fjs/media/nix/proof.f.d.ts +0 -32
  819. package/fjs/media/nix/proof.f.js +0 -127
  820. package/fjs/media/proof.f.d.ts +0 -19
  821. package/fjs/media/proof.f.js +0 -127
  822. package/fjs/media/revision/module.f.d.ts +0 -94
  823. package/fjs/media/revision/module.f.js +0 -143
  824. package/fjs/media/revision/proof.f.d.ts +0 -42
  825. package/fjs/media/revision/proof.f.js +0 -190
  826. package/fjs/media/type/module.f.d.ts +0 -135
  827. package/fjs/media/type/module.f.js +0 -231
  828. package/fjs/media/type/proof.f.d.ts +0 -40
  829. package/fjs/media/type/proof.f.js +0 -213
  830. package/fjs/module.d.ts +0 -2
  831. package/fjs/module.f.d.ts +0 -2
  832. package/fjs/module.f.js +0 -50
  833. package/fjs/module.js +0 -4
  834. package/fjs/path/module.f.d.ts +0 -46
  835. package/fjs/path/module.f.js +0 -71
  836. package/fjs/path/proof.f.js +0 -119
  837. package/fjs/proof.f.d.ts +0 -9
  838. package/fjs/proof.f.js +0 -38
  839. package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
  840. package/fjs/protocol/json_rpc/module.f.js +0 -89
  841. package/fjs/protocol/json_rpc/proof.f.d.ts +0 -35
  842. package/fjs/protocol/json_rpc/proof.f.js +0 -68
  843. package/fjs/protocol/mcp/module.f.d.ts +0 -239
  844. package/fjs/protocol/mcp/module.f.js +0 -272
  845. package/fjs/protocol/mcp/proof.f.d.ts +0 -34
  846. package/fjs/protocol/mcp/proof.f.js +0 -208
  847. package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
  848. package/fjs/protocol/mcp/stdio/module.f.js +0 -78
  849. package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
  850. package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
  851. package/fjs/sul/id/module.f.d.ts +0 -33
  852. package/fjs/sul/id/module.f.js +0 -93
  853. package/fjs/sul/id/proof.f.js +0 -61
  854. package/fjs/sul/level/hash/module.f.d.ts +0 -38
  855. package/fjs/sul/level/hash/module.f.js +0 -43
  856. package/fjs/sul/level/hash/proof.f.d.ts +0 -13
  857. package/fjs/sul/level/hash/proof.f.js +0 -112
  858. package/fjs/sul/level/literal/module.f.d.ts +0 -64
  859. package/fjs/sul/level/literal/module.f.js +0 -88
  860. package/fjs/sul/level/literal/proof.f.d.ts +0 -12
  861. package/fjs/sul/level/literal/proof.f.js +0 -714
  862. package/fjs/sul/module.f.d.ts +0 -23
  863. package/fjs/sul/module.f.js +0 -46
  864. package/fjs/sul/proof.f.d.ts +0 -9
  865. package/fjs/sul/proof.f.js +0 -47
  866. package/fjs/text/ascii/module.f.d.ts +0 -136
  867. package/fjs/text/ascii/module.f.js +0 -154
  868. package/fjs/text/ascii/proof.f.d.ts +0 -6
  869. package/fjs/text/ascii/proof.f.js +0 -14
  870. package/fjs/text/code_point/module.f.d.ts +0 -65
  871. package/fjs/text/code_point/module.f.js +0 -103
  872. package/fjs/text/code_point/proof.f.d.ts +0 -8
  873. package/fjs/text/code_point/proof.f.js +0 -72
  874. package/fjs/text/module.f.d.ts +0 -40
  875. package/fjs/text/module.f.js +0 -43
  876. package/fjs/text/proof.f.d.ts +0 -10
  877. package/fjs/text/proof.f.js +0 -44
  878. package/fjs/text/sgr/module.f.d.ts +0 -53
  879. package/fjs/text/sgr/module.f.js +0 -63
  880. package/fjs/text/sgr/proof.f.js +0 -33
  881. package/fjs/text/utf16/module.f.d.ts +0 -161
  882. package/fjs/text/utf16/module.f.js +0 -311
  883. package/fjs/text/utf16/proof.f.d.ts +0 -10
  884. package/fjs/text/utf16/proof.f.js +0 -144
  885. package/fjs/text/utf8/module.f.d.ts +0 -83
  886. package/fjs/text/utf8/module.f.js +0 -247
  887. package/fjs/text/utf8/proof.f.js +0 -217
  888. package/fjs/types/array/module.f.d.ts +0 -49
  889. package/fjs/types/array/module.f.js +0 -42
  890. package/fjs/types/array/proof.f.js +0 -92
  891. package/fjs/types/bigfloat/module.f.d.ts +0 -6
  892. package/fjs/types/bigfloat/module.f.js +0 -69
  893. package/fjs/types/bigfloat/proof.f.d.ts +0 -5
  894. package/fjs/types/bigfloat/proof.f.js +0 -217
  895. package/fjs/types/bigint/module.f.d.ts +0 -172
  896. package/fjs/types/bigint/module.f.js +0 -251
  897. package/fjs/types/bigint/proof.f.d.ts +0 -37
  898. package/fjs/types/bigint/proof.f.js +0 -400
  899. package/fjs/types/bit_vec/module.f.d.ts +0 -302
  900. package/fjs/types/bit_vec/module.f.js +0 -375
  901. package/fjs/types/bit_vec/proof.f.d.ts +0 -65
  902. package/fjs/types/bit_vec/proof.f.js +0 -465
  903. package/fjs/types/btree/find/module.f.d.ts +0 -25
  904. package/fjs/types/btree/find/module.f.js +0 -80
  905. package/fjs/types/btree/find/proof.f.d.ts +0 -3
  906. package/fjs/types/btree/find/proof.f.js +0 -108
  907. package/fjs/types/btree/module.f.d.ts +0 -9
  908. package/fjs/types/btree/module.f.js +0 -33
  909. package/fjs/types/btree/proof.f.d.ts +0 -13
  910. package/fjs/types/btree/proof.f.js +0 -64
  911. package/fjs/types/btree/remove/module.f.d.ts +0 -14
  912. package/fjs/types/btree/remove/module.f.js +0 -186
  913. package/fjs/types/btree/remove/proof.f.d.ts +0 -9
  914. package/fjs/types/btree/remove/proof.f.js +0 -484
  915. package/fjs/types/btree/set/module.f.d.ts +0 -8
  916. package/fjs/types/btree/set/module.f.js +0 -128
  917. package/fjs/types/btree/set/proof.f.d.ts +0 -1
  918. package/fjs/types/btree/set/proof.f.js +0 -368
  919. package/fjs/types/btree/types/module.f.d.ts +0 -23
  920. package/fjs/types/btree/types/module.f.js +0 -9
  921. package/fjs/types/byte_set/module.f.d.ts +0 -16
  922. package/fjs/types/byte_set/module.f.js +0 -30
  923. package/fjs/types/byte_set/proof.f.d.ts +0 -11
  924. package/fjs/types/byte_set/proof.f.js +0 -79
  925. package/fjs/types/function/compare/module.f.d.ts +0 -49
  926. package/fjs/types/function/compare/module.f.js +0 -51
  927. package/fjs/types/function/compare/proof.f.js +0 -47
  928. package/fjs/types/function/module.f.d.ts +0 -28
  929. package/fjs/types/function/module.f.js +0 -19
  930. package/fjs/types/function/operator/module.f.d.ts +0 -48
  931. package/fjs/types/function/operator/module.f.js +0 -16
  932. package/fjs/types/function/operator/proof.f.js +0 -53
  933. package/fjs/types/function/proof.f.js +0 -10
  934. package/fjs/types/list/module.f.d.ts +0 -75
  935. package/fjs/types/list/module.f.js +0 -190
  936. package/fjs/types/list/proof.f.d.ts +0 -31
  937. package/fjs/types/list/proof.f.js +0 -330
  938. package/fjs/types/map/module.f.d.ts +0 -2
  939. package/fjs/types/map/module.f.js +0 -22
  940. package/fjs/types/map/proof.f.js +0 -22
  941. package/fjs/types/nibble_set/module.f.d.ts +0 -27
  942. package/fjs/types/nibble_set/module.f.js +0 -25
  943. package/fjs/types/nibble_set/proof.f.js +0 -60
  944. package/fjs/types/nominal/module.f.d.ts +0 -22
  945. package/fjs/types/nominal/module.f.js +0 -13
  946. package/fjs/types/nominal/proof.f.d.ts +0 -4
  947. package/fjs/types/nominal/proof.f.js +0 -48
  948. package/fjs/types/nullable/module.f.d.ts +0 -21
  949. package/fjs/types/nullable/module.f.js +0 -29
  950. package/fjs/types/nullable/proof.f.d.ts +0 -1
  951. package/fjs/types/nullable/proof.f.js +0 -29
  952. package/fjs/types/number/module.f.d.ts +0 -16
  953. package/fjs/types/number/module.f.js +0 -30
  954. package/fjs/types/number/proof.f.js +0 -124
  955. package/fjs/types/object/module.f.d.ts +0 -54
  956. package/fjs/types/object/module.f.js +0 -25
  957. package/fjs/types/object/proof.f.d.ts +0 -4
  958. package/fjs/types/object/proof.f.js +0 -14
  959. package/fjs/types/option/module.f.js +0 -6
  960. package/fjs/types/ordered_map/module.f.d.ts +0 -17
  961. package/fjs/types/ordered_map/module.f.js +0 -22
  962. package/fjs/types/ordered_map/proof.f.d.ts +0 -5
  963. package/fjs/types/ordered_map/proof.f.js +0 -73
  964. package/fjs/types/patricia_trie/module.f.d.ts +0 -25
  965. package/fjs/types/patricia_trie/module.f.js +0 -35
  966. package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
  967. package/fjs/types/patricia_trie/proof.f.js +0 -121
  968. package/fjs/types/phantom/module.f.js +0 -11
  969. package/fjs/types/prime_field/module.f.d.ts +0 -62
  970. package/fjs/types/prime_field/module.f.js +0 -112
  971. package/fjs/types/prime_field/proof.f.js +0 -128
  972. package/fjs/types/range/module.f.d.ts +0 -8
  973. package/fjs/types/range/module.f.js +0 -2
  974. package/fjs/types/range/proof.f.d.ts +0 -1
  975. package/fjs/types/range/proof.f.js +0 -9
  976. package/fjs/types/range_map/module.f.d.ts +0 -92
  977. package/fjs/types/range_map/module.f.js +0 -82
  978. package/fjs/types/range_map/proof.f.d.ts +0 -6
  979. package/fjs/types/range_map/proof.f.js +0 -151
  980. package/fjs/types/range_set/module.f.d.ts +0 -5
  981. package/fjs/types/range_set/module.f.js +0 -16
  982. package/fjs/types/range_set/proof.f.d.ts +0 -1
  983. package/fjs/types/range_set/proof.f.js +0 -19
  984. package/fjs/types/result/module.d.ts +0 -3
  985. package/fjs/types/result/module.f.d.ts +0 -61
  986. package/fjs/types/result/module.f.js +0 -54
  987. package/fjs/types/result/module.js +0 -19
  988. package/fjs/types/result/proof.f.d.ts +0 -12
  989. package/fjs/types/result/proof.f.js +0 -31
  990. package/fjs/types/rtti/common/module.f.d.ts +0 -121
  991. package/fjs/types/rtti/common/module.f.js +0 -94
  992. package/fjs/types/rtti/common/proof.f.d.ts +0 -8
  993. package/fjs/types/rtti/common/proof.f.js +0 -51
  994. package/fjs/types/rtti/module.f.d.ts +0 -75
  995. package/fjs/types/rtti/module.f.js +0 -34
  996. package/fjs/types/rtti/parse/module.f.d.ts +0 -36
  997. package/fjs/types/rtti/parse/module.f.js +0 -114
  998. package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
  999. package/fjs/types/rtti/parse/proof.f.js +0 -334
  1000. package/fjs/types/rtti/proof.f.d.ts +0 -5
  1001. package/fjs/types/rtti/proof.f.js +0 -16
  1002. package/fjs/types/rtti/ts/module.f.d.ts +0 -118
  1003. package/fjs/types/rtti/ts/module.f.js +0 -59
  1004. package/fjs/types/rtti/ts/proof.f.d.ts +0 -59
  1005. package/fjs/types/rtti/ts/proof.f.js +0 -75
  1006. package/fjs/types/rtti/validate/module.f.d.ts +0 -4
  1007. package/fjs/types/rtti/validate/module.f.js +0 -74
  1008. package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
  1009. package/fjs/types/rtti/validate/proof.f.js +0 -349
  1010. package/fjs/types/sorted_list/module.f.d.ts +0 -26
  1011. package/fjs/types/sorted_list/module.f.js +0 -51
  1012. package/fjs/types/sorted_list/proof.f.d.ts +0 -4
  1013. package/fjs/types/sorted_list/proof.f.js +0 -46
  1014. package/fjs/types/sorted_set/module.f.d.ts +0 -33
  1015. package/fjs/types/sorted_set/module.f.js +0 -5
  1016. package/fjs/types/sorted_set/proof.f.d.ts +0 -6
  1017. package/fjs/types/sorted_set/proof.f.js +0 -67
  1018. package/fjs/types/string/module.f.d.ts +0 -24
  1019. package/fjs/types/string/module.f.js +0 -35
  1020. package/fjs/types/string/proof.f.js +0 -77
  1021. package/fjs/types/string_set/module.f.d.ts +0 -30
  1022. package/fjs/types/string_set/module.f.js +0 -37
  1023. package/fjs/types/string_set/proof.f.js +0 -43
  1024. package/fjs/types/ts/module.f.d.ts +0 -23
  1025. package/fjs/types/ts/module.f.js +0 -27
  1026. package/fjs/types/ts/proof.f.d.ts +0 -38
  1027. package/fjs/types/ts/proof.f.js +0 -86
  1028. package/fjs/types/uint8array/module.f.d.ts +0 -13
  1029. package/fjs/types/uint8array/module.f.js +0 -34
  1030. package/fjs/types/uint8array/proof.f.d.ts +0 -17
  1031. package/fjs/types/uint8array/proof.f.js +0 -64
  1032. package/fjs/website/module.f.d.ts +0 -3
  1033. package/fjs/website/module.f.js +0 -14
  1034. package/fjs/website/proof.f.js +0 -13
  1035. package/nanvm-lib/tests/proof.f.d.ts +0 -122
  1036. package/nanvm-lib/tests/proof.f.js +0 -330
  1037. package/todo/031-json.f.d.ts +0 -1
  1038. package/todo/031-json.f.js +0 -241
  1039. package/todo/proof.f.d.ts +0 -20
  1040. package/todo/proof.f.js +0 -62
  1041. /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
  1042. /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1043. /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1044. /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1045. /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1046. /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1047. /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1048. /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1049. /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
  1050. /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
  1051. /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1052. /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1053. /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1054. /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1055. /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1056. /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1057. /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1058. /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1059. /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1060. /package/fjs/{emergent_testing/all.test.d.ts → types/bigint/benchmark.d.mts} +0 -0
  1061. /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
  1062. /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1063. /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
  1064. /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1065. /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1066. /package/fjs/{text/sgr/proof.f.d.ts → types/nullable/proof.f.d.mts} +0 -0
  1067. /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1068. /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
  1069. /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
  1070. /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1071. /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
  1072. /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1073. /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1074. /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
@@ -0,0 +1,718 @@
1
+ /**
2
+ * @import { Unknown } from '../media/json/types.ts'
3
+ * @import { Effect, Operation } from '../effects/types.ts'
4
+ * @import { Response } from '../protocol/json_rpc/types.ts'
5
+ * @import { Vec } from '../types/bit_vec/types.ts'
6
+ * @import { FileCasOperation } from '../cas/types.ts'
7
+ * @import { List } from '../effects/list/types.ts'
8
+ * @import { McpSessionState, ToolsCallResult } from '../protocol/mcp/types.ts'
9
+ * @import { IoResult, Mkdir, Now, RandomInt, ReadBytes, Rename, } from '../effects/node/types.ts'
10
+ * @import { Dir } from '../effects/node/virtual/types.ts'
11
+ */
12
+
13
+ import { assert, assertEq } from '../asserts/module.f.mjs'
14
+ import { pure, step } from '../effects/module.f.mjs'
15
+ import { create } from '../effects/memory/module.f.mjs'
16
+ import { parse as parseJson } from '../media/json/module.f.mjs'
17
+ import { number as rttiNumber, option, string as rttiString } from '../types/rtti/module.f.mjs'
18
+ import { parse as rttiParse } from '../types/rtti/parse/module.f.mjs'
19
+ import { msb, u8ListToVec, vec8, repeat, length, maxLengthBytes } from '../types/bit_vec/module.f.mjs'
20
+ import { vecToCBase32 } from '../basen/cbase32/module.f.mjs'
21
+ import { encode as base64Encode } from '../basen/base64/module.f.mjs'
22
+ import { utf8 } from '../text/module.f.mjs'
23
+ import { fileCas } from '../cas/module.f.mjs'
24
+ import { dialect as revisionDialect, mediaType as revisionMediaType } from '../media/revision/module.f.mjs'
25
+ import { sha256 } from '../crypto/sha2/module.f.mjs'
26
+ import { nonEmpty, empty as elEmpty } from '../effects/list/module.f.mjs'
27
+ import {
28
+ mcpStep, uninitializedState,
29
+ } from '../protocol/mcp/module.f.mjs'
30
+ import { emptyState, virtual } from '../effects/node/virtual/module.f.mjs'
31
+ import { casConfig, casMcpHandlers } from './module.f.mjs'
32
+ import { ok as resultOk, unwrap } from '../types/result/module.f.mjs'
33
+ import { stdioTransport } from '../protocol/mcp/stdio/module.f.mjs'
34
+ import { fromVec } from '../types/uint8array/module.f.mjs'
35
+ import { initEvo } from '../cas/evo/module.f.mjs'
36
+
37
+ // `cas_get`'s result JSON. As an rtti schema it both describes the shape and
38
+ // checks it, so reading a field needs neither a hand-written type nor an `as`
39
+ // cast — a response that drifts from this fails the test at the parse, not
40
+ // silently at the assertion. `uri` is always emitted; only the payload
41
+ // (`text` for `type: 'text'`, `blob` for `type: 'base64'`) is conditional.
42
+ const casGetResult = /** @type {const} */ ({
43
+ length: rttiNumber,
44
+ mimeType: rttiString,
45
+ type: rttiString,
46
+ uri: rttiString,
47
+ text: option(rttiString),
48
+ blob: option(rttiString),
49
+ })
50
+
51
+ const parseCasGetResult = rttiParse(casGetResult)
52
+
53
+ // ── Session driver ──────────────────────────────────────────────────────────────
54
+
55
+ // Feeds each message to `handler` in order, collecting every response.
56
+ /**
57
+ * @template {Operation} O
58
+ * @param {(v: Unknown) => Effect<O, Response | null>} handler
59
+ * @returns {(msgs: readonly unknown[]) => Effect<O, readonly unknown[]>}
60
+ */
61
+ const feed = handler => msgs => {
62
+ /** @type {(i: number, acc: readonly unknown[]) => Effect<O, readonly unknown[]>} */
63
+ const go = (i, acc) => (
64
+ i === msgs.length
65
+ ? pure(acc)
66
+ : step(
67
+ handler(/** @type {Unknown} */ (msgs[i])),
68
+ r => go(i + 1, [...acc, r]))
69
+ )
70
+ return go(0, [])
71
+ }
72
+
73
+ // Runs a session backed by the virtual node runner (for cas_upload which uses
74
+ // Rename/ReadBytes/RandomInt/Mkdir). Uses fileKvStore so upload and get share
75
+ // the same filesystem-backed CAS.
76
+ /** @type {(root: Dir, home?: string) => (msgs: readonly unknown[]) => readonly unknown[]} */
77
+ const runSessionVirtual =
78
+ (root, home = '/home/user') =>
79
+ msgs => {
80
+ const effect = step(
81
+ initEvo(fileCas(sha256)(home)),
82
+ cacheKey => step(
83
+ create(uninitializedState),
84
+ sessionKey => {
85
+ const step = mcpStep(casConfig)(casMcpHandlers(home)(cacheKey))(sessionKey)
86
+ return feed(step)(msgs)
87
+ }))
88
+ return virtual({ ...emptyState, root })(effect)[1]
89
+ }
90
+
91
+ // Seeds a blob directly into the virtual store via `c.write`, bypassing the
92
+ // MCP `cas_add` tool entirely — used by tests that need a stored blob larger
93
+ // than `cas_add`'s inline limit, now that the removed `type:'url'` path is no
94
+ // longer available to stage one through MCP. Returns the resulting root
95
+ // `Dir` (with the new shard written) and the blob's cBase32 hash so a
96
+ // subsequent `runSessionVirtual` call can read it back via `cas_get`.
97
+ /** @type {(root: Dir, home?: string) => (chunks: readonly Vec[]) => readonly [Dir, string]} */
98
+ const seedBlob = (root, home = '/home/user') => chunks => {
99
+ const c = fileCas(sha256)(home)
100
+ const stream = chunks.reduceRight(
101
+ (/** @type {List<never, IoResult<Vec>>} */ tail, chunk) => nonEmpty(resultOk(chunk), tail),
102
+ /** @type {List<never, IoResult<Vec>>} */ (elEmpty()))
103
+ const [state, result] = virtual({ ...emptyState, root })(c.write(stream))
104
+ assert(result[0] === 'ok', result)
105
+ return [state.root, vecToCBase32(result[1])]
106
+ }
107
+
108
+ // ── Messages ────────────────────────────────────────────────────────────────────
109
+
110
+ const init = { jsonrpc: '2.0', method: 'initialize', id: 1,
111
+ params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'c', version: '0' } } }
112
+
113
+ const initialized = { jsonrpc: '2.0', method: 'notifications/initialized' }
114
+
115
+ /** @type {(id: number, name: string, args: unknown) => unknown} */
116
+ const call = (id, name, args) =>
117
+ ({ jsonrpc: '2.0', method: 'tools/call', id, params: { name, arguments: args } })
118
+
119
+ /** @type {(id: number) => unknown} */
120
+ const list = id => ({ jsonrpc: '2.0', method: 'tools/list', id })
121
+
122
+ // Runs `init`, `notifications/initialized`, then `msgs`; returns the tool responses.
123
+ /** @type {(...msgs: readonly unknown[]) => readonly unknown[]} */
124
+ const session = (...msgs) =>
125
+ runSessionVirtual({}, '/home/user')([init, initialized, ...msgs]).slice(2)
126
+
127
+ // UTF-8 bytes of `s` as a plain array — the virtual stdin byte stream.
128
+ /** @type {(s: string) => readonly number[]} */
129
+ const toBytes = s => [...fromVec(utf8(s))]
130
+
131
+ // Runs `init`, `notifications/initialized`, then `msgs` through the *real*
132
+ // stdio pipeline — `mcpStep` wrapped in `stdioTransport`, driving
133
+ // `writeResponse`'s `tryUtf8` encode over actual stdin/stdout bytes. Unlike
134
+ // `session`/`runSessionVirtual`, which collect `mcpStep`'s `Response` values
135
+ // as plain JS objects and never serialize/encode them, this is the only
136
+ // helper that can observe the transport's oversized-response fallback (see
137
+ // `fjs/protocol/mcp/stdio/module.f.mjs` `writeResponse`).
138
+ /** @type {(root: Dir, home?: string) => (msgs: readonly unknown[]) => readonly unknown[]} */
139
+ const runStdio =
140
+ (root, home = '/home/user') =>
141
+ msgs => {
142
+ const input = [init, initialized, ...msgs].map(m => JSON.stringify(m)).join('\n') + '\n'
143
+ const effect = step(
144
+ initEvo(fileCas(sha256)(home)),
145
+ cacheKey => step(
146
+ create(/** @type {McpSessionState} */ (uninitializedState)),
147
+ sessionKey =>
148
+ stdioTransport(mcpStep(casConfig)(casMcpHandlers(home)(cacheKey))(sessionKey))
149
+ )
150
+ )
151
+ const stdout = virtual({ ...emptyState, root, stdin: toBytes(input) })(effect)[0].stdout
152
+ // Only requests get a written line (notifications, like `initialized`,
153
+ // write nothing) — drop the `init` response, keep one line per `msgs` entry.
154
+ return stdout.split('\n').filter(line => line.length > 0).slice(1).map(line => unwrap(parseJson(line)))
155
+ }
156
+
157
+ /** @type {(resp: unknown) => ToolsCallResult} */
158
+ const resultOf = resp =>
159
+ /** @type {{ readonly result: ToolsCallResult }} */ (resp).result
160
+
161
+ /** @type {(resp: unknown) => unknown} */
162
+ const item0 = resp => resultOf(resp).content[0]
163
+
164
+ /** @type {(resp: unknown) => string} */
165
+ const textOf = resp => (/** @type {{ readonly text: string }} */ (item0(resp))).text
166
+
167
+ /** The `text` payload of a `cas_get` response, parsed and checked against {@link casGetResult}. */
168
+ const casGetResultOf = (/** @type {unknown} */ resp) =>
169
+ unwrap(parseCasGetResult(unwrap(parseJson(textOf(resp)))))
170
+
171
+ // A plain text sample for text add→get round-trips.
172
+ const textSample = 'hello, world!'
173
+
174
+ // A valid `vnd.fjs.revision` blob: every required field present, including the
175
+ // explicit `snapshot` and `generation` the format now mandates.
176
+ const revisionSample = `{"dialect":"${revisionDialect}","subject":"8","parents":[],"snapshot":"8","generation":0}`
177
+
178
+ // A base64-encoded binary payload for binary add→get round-trips.
179
+ const binarySample = /** @type {string} */ (base64Encode(vec8(0x2An)))
180
+
181
+ // A base64 blob whose leading bytes are the PNG magic-byte signature, so
182
+ // `cas_get` detects its type and returns base64 with mimeType image/png.
183
+ const pngSample = /** @type {string} */ (base64Encode(
184
+ u8ListToVec(msb)([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x01])))
185
+
186
+ // Returns the RFC 4648 base64 encoding of `n` zero bytes, computed directly
187
+ // without bigint arithmetic — independent of `base64.encode` so these tests
188
+ // don't rely on the correctness of the function they're indirectly exercising
189
+ // (`cas_add` decodes the string via `base64.decode`). Handles every n%3
190
+ // residue: rem=0 → no padding, rem=1 → 'AA==', rem=2 → 'AAA='.
191
+ /** @type {(n: bigint) => string} */
192
+ const base64OfA = n => {
193
+ const groups = Number(n / 3n)
194
+ const rem = Number(n % 3n)
195
+ const body = 'AAAA'.repeat(groups)
196
+ if (rem === 0) { return body }
197
+ if (rem === 1) { return body + 'AA==' }
198
+ return body + 'AAA='
199
+ }
200
+
201
+ // ── Tests ───────────────────────────────────────────────────────────────────────
202
+
203
+ // A blob larger than one read chunk (> 128 KiB) used to fail metadata-only
204
+ // cas_get because `collectRead` overflowed `maxLength`. With `detectStream`,
205
+ // content:false returns correct metadata regardless of size. Each chunk is
206
+ // exactly `maxLengthBytes` (the largest single `Vec` the runtime allows), so the
207
+ // two-chunk blob spans two read chunks without any one `Vec` exceeding the cap.
208
+ const largeMultiChunkBlobMeta =
209
+ (/** @type {Vec} */ chunk0, /** @type {Vec} */ chunk1, /** @type {string} */ expectedType,
210
+ /** @type {string} */ expectedMime) => () => {
211
+ const [root, hash] = seedBlob({})([chunk0, chunk1])
212
+ const [metaResp] = /** @type {readonly unknown[]} */ (runSessionVirtual(root)([
213
+ init, initialized,
214
+ call(2, 'cas_get', { hash }),
215
+ ]).slice(2))
216
+ assert(!resultOf(metaResp).isError)
217
+ const meta = casGetResultOf(metaResp)
218
+ assertEq(meta.type, expectedType)
219
+ assertEq(meta.mimeType, expectedMime)
220
+ assertEq(meta.length, Number((length(chunk0) + length(chunk1)) / 8n))
221
+ assertEq(meta.text, undefined)
222
+ assertEq(meta.blob, undefined)
223
+ }
224
+
225
+ // A full `maxLengthBytes`-long chunk of repeated ASCII 'a' — valid UTF-8.
226
+ const asciiChunk = repeat(maxLengthBytes)(vec8(0x61n))
227
+ // The same length, but repeated 2-byte "é" (C3 A9) — valid UTF-8 of multi-byte symbols.
228
+ const symbolChunk = repeat(maxLengthBytes / 2n)(u8ListToVec(msb)([0xc3, 0xa9]))
229
+ // A full chunk of 0xFF — an invalid UTF-8 lead byte, so binary (no magic match).
230
+ const binaryChunk = repeat(maxLengthBytes)(vec8(0xffn))
231
+
232
+ // 100,000 raw bytes of 0xFF: comfortably under `maxLengthBytes` (so `cas_get`'s
233
+ // own `length > maxLengthBytes` guard does not fire), but base64 inflates it to
234
+ // ceil(100_000/3)*4 = 133,336 chars — already past `maxLength` (131,072 bytes)
235
+ // before the JSON-RPC envelope adds anything.
236
+ const oversizedBase64Chunk = repeat(100_000n)(vec8(0xffn))
237
+ // 90,000 raw bytes: base64 inflates to 120,000 chars, leaving ~11 KiB of margin
238
+ // under `maxLength` once the envelope is added — the paired "still succeeds" case.
239
+ const boundaryBase64Chunk = repeat(90_000n)(vec8(0xffn))
240
+
241
+ // 33,000 `"` bytes (0x22): valid UTF-8, so `cas_get` classifies it as text and
242
+ // takes the double-JSON-escaping path (`toJson` builds the inner CAS JSON, then
243
+ // the outer `stringifyJson` embeds that as the `text` field). Each quote costs
244
+ // 4 final bytes (2 on each escaping pass), so 33,000 of them alone push the
245
+ // encoded line past `maxLength` (131,072 bytes) — well above the strict 32,769
246
+ // minimum needed, without approaching any other size-related edge case.
247
+ const quotesChunk = repeat(33_000n)(vec8(0x22n))
248
+
249
+ export const proof = {
250
+ // Both chunks repeated ASCII → text/plain, no error on a > 128 KiB blob.
251
+ getMetaLargeMultiChunkBlobNoError:
252
+ largeMultiChunkBlobMeta(asciiChunk, asciiChunk, 'text', 'text/plain'),
253
+
254
+ // Both chunks valid UTF-8 sequences of multi-byte symbols → text/plain.
255
+ getMetaLargeMultiChunkUtf8Symbols:
256
+ largeMultiChunkBlobMeta(symbolChunk, symbolChunk, 'text', 'text/plain'),
257
+
258
+ // First chunk valid UTF-8, second chunk binary → base64/octet-stream. The
259
+ // streaming validator must see the trailing binary chunk to reject text.
260
+ getMetaLargeMultiChunkTextThenBinary:
261
+ largeMultiChunkBlobMeta(asciiChunk, binaryChunk, 'base64', 'application/octet-stream'),
262
+
263
+ // content:true on a present blob larger than `maxLength` reports a distinct
264
+ // "too large" error, not "no such hash" — the blob exists, it just can't be
265
+ // buffered inline. The metadata-only path (above) still returns its size/type.
266
+ getContentLargeBlobTooLargeError: () => {
267
+ const [root, hash] = seedBlob({})([asciiChunk, asciiChunk])
268
+ const [getResp] = /** @type {readonly unknown[]} */ (runSessionVirtual(root)([
269
+ init, initialized,
270
+ call(2, 'cas_get', { hash, content: true }),
271
+ ]).slice(2))
272
+ assertEq(resultOf(getResp).isError, true)
273
+ const text = textOf(getResp)
274
+ assert(text.includes('too large'))
275
+ assert(!text.includes('no such hash'))
276
+ },
277
+
278
+ // content:true on a genuinely absent hash still reports "no such hash" — the
279
+ // oversized branch above must not absorb the absent case.
280
+ getContentMissingHashIsError: () => {
281
+ const absent = vecToCBase32(vec8(0x55n))
282
+ const [resp] = session(call(2, 'cas_get', { hash: absent, content: true }))
283
+ assertEq(resultOf(resp).isError, true)
284
+ assert(textOf(resp).includes('no such hash'))
285
+ },
286
+
287
+ // A blob at exactly `maxLengthBytes` passes cas_get's own raw-length guard
288
+ // (it checks the *stored* size, not the encoded response), but base64
289
+ // inflation of a 100,000-byte blob alone already exceeds `maxLength` before
290
+ // the JSON-RPC envelope is even added. The transport's `writeResponse`
291
+ // (`tryUtf8`) must catch this and write a JSON-RPC internal-error response —
292
+ // carrying the *original request's* `id` — instead of crashing the process.
293
+ // See `fjs/protocol/mcp/stdio/module.f.mjs` `writeResponse`.
294
+ //
295
+ // This test originally timed out under `bun test`'s native 5s per-test
296
+ // limit (12-14s observed in CI on PR #1201) — the cost was in
297
+ // `base64Encode`, quadratic before the `baseN.vecToString` fix (see
298
+ // `fjs/basen/base64/proof.f.mjs` `encodeLargeVecIsSlow`). Now well under budget on
299
+ // both engines.
300
+ getContentBase64InflationOverflowWritesInternalError: () => {
301
+ const [root, hash] = seedBlob({})([oversizedBase64Chunk])
302
+ const [getResp] = runStdio(root)([
303
+ call(2, 'cas_get', { hash, content: true }),
304
+ ])
305
+ const err = /** @type {{ readonly error?: { readonly code: number }, readonly id: unknown }} */ (getResp)
306
+ assertEq(err.error?.code, -32603)
307
+ assertEq(err.id, 2)
308
+ },
309
+
310
+ // The paired boundary case: a blob whose base64 inflation leaves enough
311
+ // margin under `maxLength` for the envelope — confirms the fallback above
312
+ // only triggers on genuine overflow, not on every `content:true` binary read.
313
+ getContentBase64NearBoundarySucceeds: () => {
314
+ const [root, hash] = seedBlob({})([boundaryBase64Chunk])
315
+ const [getResp] = runStdio(root)([
316
+ call(2, 'cas_get', { hash, content: true }),
317
+ ])
318
+ assert(!resultOf(getResp).isError)
319
+ const result = casGetResultOf(getResp)
320
+ assertEq(result.type, 'base64')
321
+ assertEq(result.length, 90_000)
322
+ },
323
+
324
+ // A text blob made entirely of `"` characters keeps the *raw* content
325
+ // (33,000 bytes) well under `maxLengthBytes`, but each quote costs 2 bytes on
326
+ // the inner CAS-JSON escape and 4 bytes once the outer JSON-RPC envelope
327
+ // re-escapes that backslash-quote pair — no `cas_get`-level size guard could
328
+ // see this coming, only the transport's real encode attempt can. Seeded
329
+ // directly into the store via `seedBlob` (not an inlined `cas_add` JSON
330
+ // string) so the test exercises `cas_get`'s response-side escaping without
331
+ // also paying for parsing a huge inline `content` argument on the request
332
+ // side. Confirms `writeResponse`'s
333
+ // `tryUtf8` fallback (not a crash) handles double-escaping overflow, again
334
+ // preserving the request's `id`.
335
+ getContentDoubleEscapedOverflowWritesInternalError: () => {
336
+ const [root, hash] = seedBlob({})([quotesChunk])
337
+ const [getResp] = runStdio(root)([
338
+ call(2, 'cas_get', { hash, content: true }),
339
+ ])
340
+ const err = /** @type {{ readonly error?: { readonly code: number }, readonly id: unknown }} */ (getResp)
341
+ assertEq(err.error?.code, -32603)
342
+ assertEq(err.id, 2)
343
+ },
344
+
345
+ toolsListAdvertisesSevenTools: () => {
346
+ const [resp] = runSessionVirtual({})([init, initialized, list(2)]).slice(2)
347
+ const tools = (/** @type {{ result: { tools: readonly { name: string }[] } }} */ (resp)).result.tools
348
+ assertEq(tools.length, 7)
349
+ assertEq(tools.map(t => t.name).join(','), 'cas_add,cas_get,cas_list,evo_list,evo_head,evo_revision,evo_add')
350
+ const add = (/** @type {{ result: { tools: readonly { inputSchema: { type?: string } }[] } }} */ (resp))
351
+ .result.tools[0]
352
+ assertEq(add.inputSchema.type, 'object')
353
+ },
354
+
355
+ // The same server also exposes Evo (fjs/cas/evo): add a revision, then
356
+ // find it via evo_list/evo_head — one process, one store, one cache.
357
+ evoAddListHeadRoundTripsThroughCasServer: () => {
358
+ const [addResp, listResp, headResp] = session(
359
+ call(2, 'evo_add', { parents: [], subject: 'doc', snapshot: vecToCBase32(vec8(0x1n)) }),
360
+ call(3, 'evo_list', {}),
361
+ call(4, 'evo_head', { subject: 'doc' }),
362
+ )
363
+ assert(!resultOf(addResp).isError)
364
+ const hash = textOf(addResp)
365
+ assert(hash.length > 0)
366
+ assertEq(textOf(listResp), '["doc"]')
367
+ assertEq(textOf(headResp), hash)
368
+ },
369
+
370
+ evoAddDomainErrorIsErrorThroughCasServer: () => {
371
+ // Valid arguments, but the domain rule fails: `subject` is required
372
+ // unless there is exactly one parent.
373
+ const [resp] = session(call(2, 'evo_add', { parents: [] }))
374
+ assertEq(resultOf(resp).isError, true)
375
+ assert(textOf(resp).includes('subject is required'))
376
+ },
377
+
378
+ // A plain `cas_add` of `vnd.fjs.revision` content is folded into the Evo
379
+ // cache too (`syncRevision`), not just `evo_add` — `cas_add`/`evo_add`
380
+ // are two ways to reach the same store and cache.
381
+ casAddSyncsEvoCacheForRevisionContent: () => {
382
+ const [addResp, listResp, headResp] = session(
383
+ call(2, 'cas_add', { content: revisionSample }),
384
+ call(3, 'evo_list', {}),
385
+ call(4, 'evo_head', { subject: '8' }),
386
+ )
387
+ assert(!resultOf(addResp).isError)
388
+ const hash = textOf(addResp)
389
+ assertEq(textOf(listResp), '["8"]')
390
+ assertEq(textOf(headResp), hash)
391
+ },
392
+
393
+ addReturnsHash: () => {
394
+ const [resp] = session(call(2, 'cas_add', { content: textSample }))
395
+ assert(!resultOf(resp).isError)
396
+ assert(textOf(resp).length > 0)
397
+ },
398
+
399
+ // Text add→get round-trip: store as UTF-8 text, retrieve metadata.
400
+ textAddGetMetaRoundTrips: () => {
401
+ const [addResp] = session(call(2, 'cas_add', { content: textSample }))
402
+ const hash = textOf(addResp)
403
+ const [, getResp] = session(
404
+ call(2, 'cas_add', { content: textSample }),
405
+ call(3, 'cas_get', { hash }),
406
+ )
407
+ assert(!resultOf(getResp).isError)
408
+ const result = casGetResultOf(getResp)
409
+ assertEq(result.mimeType, 'text/plain')
410
+ assertEq(result.type, 'text')
411
+ assertEq(result.length, textSample.length)
412
+ assertEq(result.text, undefined)
413
+ },
414
+
415
+ // cas_get with content:true returns inline content.
416
+ textAddGetContentRoundTrips: () => {
417
+ const [addResp] = session(call(2, 'cas_add', { content: textSample }))
418
+ const hash = textOf(addResp)
419
+ const [, getResp] = session(
420
+ call(2, 'cas_add', { content: textSample }),
421
+ call(3, 'cas_get', { hash, content: true }),
422
+ )
423
+ assert(!resultOf(getResp).isError)
424
+ const result = casGetResultOf(getResp)
425
+ assertEq(result.type, 'text')
426
+ assertEq(result.mimeType, 'text/plain')
427
+ assertEq(result.text, textSample)
428
+ },
429
+
430
+ // Binary add→get round-trip: store as base64, retrieve metadata without content.
431
+ binaryAddGetMetaRoundTrips: () => {
432
+ const [addResp] = session(call(2, 'cas_add', { content: binarySample, type: 'base64' }))
433
+ const hash = textOf(addResp)
434
+ const [, getResp] = session(
435
+ call(2, 'cas_add', { content: binarySample, type: 'base64' }),
436
+ call(3, 'cas_get', { hash }),
437
+ )
438
+ assert(!resultOf(getResp).isError)
439
+ const result = casGetResultOf(getResp)
440
+ assertEq(result.text, undefined)
441
+ assertEq(result.type, 'text')
442
+ assertEq(result.mimeType, 'text/plain')
443
+ },
444
+
445
+ // Binary add→get with content:true returns inline base64 content.
446
+ binaryAddGetContentRoundTrips: () => {
447
+ const [addResp] = session(call(2, 'cas_add', { content: binarySample, type: 'base64' }))
448
+ const hash = textOf(addResp)
449
+ const [, getResp] = session(
450
+ call(2, 'cas_add', { content: binarySample, type: 'base64' }),
451
+ call(3, 'cas_get', { hash, content: true }),
452
+ )
453
+ assert(!resultOf(getResp).isError)
454
+ const result = casGetResultOf(getResp)
455
+ assertEq(result.type, 'text')
456
+ assertEq(result.text, '*')
457
+ },
458
+
459
+ addGetRoundTrips: () => {
460
+ const [addResp] = session(call(2, 'cas_add', { content: textSample }))
461
+ const hash = textOf(addResp)
462
+ const [, getResp] = session(
463
+ call(2, 'cas_add', { content: textSample }),
464
+ call(3, 'cas_get', { hash, content: true }),
465
+ )
466
+ assert(!resultOf(getResp).isError)
467
+ const result = casGetResultOf(getResp)
468
+ assertEq(result.text, textSample)
469
+ },
470
+
471
+ // Text content (no magic-byte match, valid UTF-8) comes back with type:'text' when content requested.
472
+ getUntypedReturnsText: () => {
473
+ const [addResp] = session(call(2, 'cas_add', { content: textSample }))
474
+ const hash = textOf(addResp)
475
+ const [, getResp] = session(
476
+ call(2, 'cas_add', { content: textSample }),
477
+ call(3, 'cas_get', { hash, content: true }),
478
+ )
479
+ assertEq(item0(getResp) === null ? null : (/** @type {{ type: string }} */ (item0(getResp))).type, 'text')
480
+ const result = casGetResultOf(getResp)
481
+ assertEq(result.type, 'text')
482
+ assertEq(result.mimeType, 'text/plain')
483
+ },
484
+
485
+ // Bytes with a recognised PNG signature come back as base64 with mimeType image/png when content requested.
486
+ getTypedReturnsBinaryJson: () => {
487
+ const [addResp] = session(call(2, 'cas_add', { content: pngSample, type: 'base64' }))
488
+ const hash = textOf(addResp)
489
+ const [, getResp] = session(
490
+ call(2, 'cas_add', { content: pngSample, type: 'base64' }),
491
+ call(3, 'cas_get', { hash, content: true }),
492
+ )
493
+ assert(!resultOf(getResp).isError)
494
+ assertEq((/** @type {{ type: string }} */ (item0(getResp))).type, 'text')
495
+ const result = casGetResultOf(getResp)
496
+ assertEq(result.type, 'base64')
497
+ assertEq(result.mimeType, 'image/png')
498
+ assertEq(result.blob, pngSample)
499
+ },
500
+
501
+ // A stored `vnd.fjs.revision` blob is recognized by metadata-only
502
+ // `cas_get` (content:false, the default) — the CAS read path routes the
503
+ // bounded, whole-blob-text case through the dialect-aware detector rather
504
+ // than only reporting the streaming text/plain verdict.
505
+ getMetaRecognizesRevisionDialect: () => {
506
+ const [addResp] = session(call(2, 'cas_add', { content: revisionSample }))
507
+ const hash = textOf(addResp)
508
+ const [, metaResp] = session(
509
+ call(2, 'cas_add', { content: revisionSample }),
510
+ call(3, 'cas_get', { hash }),
511
+ )
512
+ assert(!resultOf(metaResp).isError)
513
+ const meta = casGetResultOf(metaResp)
514
+ assertEq(meta.mimeType, revisionMediaType)
515
+ assertEq(meta.type, 'text')
516
+ },
517
+
518
+ // Same dialect recognition on the `content: true` path, alongside the
519
+ // inline text payload.
520
+ getContentRecognizesRevisionDialect: () => {
521
+ const [addResp] = session(call(2, 'cas_add', { content: revisionSample }))
522
+ const hash = textOf(addResp)
523
+ const [, getResp] = session(
524
+ call(2, 'cas_add', { content: revisionSample }),
525
+ call(3, 'cas_get', { hash, content: true }),
526
+ )
527
+ assert(!resultOf(getResp).isError)
528
+ const result = casGetResultOf(getResp)
529
+ assertEq(result.mimeType, revisionMediaType)
530
+ assertEq(result.type, 'text')
531
+ assertEq(result.text, revisionSample)
532
+ },
533
+
534
+ listEnumeratesStoredHashes: () => {
535
+ const [addResp, listResp] = session(
536
+ call(2, 'cas_add', { content: textSample }),
537
+ call(3, 'cas_list', {}),
538
+ )
539
+ const hash = textOf(addResp)
540
+ assert(!resultOf(listResp).isError)
541
+ assertEq(textOf(listResp), hash)
542
+ },
543
+
544
+ addInvalidContentIsError: () => {
545
+ const [resp] = session(call(2, 'cas_add', { content: 'not valid!', type: 'base64' }))
546
+ assertEq(resultOf(resp).isError, true)
547
+ },
548
+
549
+ addBadLengthContentIsError: () => {
550
+ const [resp] = session(call(2, 'cas_add', { content: 'A', type: 'base64' }))
551
+ assertEq(resultOf(resp).isError, true)
552
+ },
553
+
554
+ // 174_764 'A' chars × 6 bits = 1_048_584 bits, 8 over maxLength — base64Decode
555
+ // returns null and cas_add surfaces an error.
556
+ addBase64OverLimitIsError: () => {
557
+ const [resp] = session(call(2, 'cas_add', { content: 'A'.repeat(174_764), type: 'base64' }))
558
+ assertEq(resultOf(resp).isError, true)
559
+ assert(textOf(resp).includes('too large or malformed'))
560
+ assert(textOf(resp).includes('cas add'))
561
+ },
562
+
563
+ // One ASCII byte past maxLengthBytes — tryUtf8 returns null and cas_add
564
+ // surfaces an error.
565
+ addTextOverLimitIsError: () => {
566
+ const [resp] = session(call(2, 'cas_add', { content: 'a'.repeat(Number(maxLengthBytes) + 1) }))
567
+ assertEq(resultOf(resp).isError, true)
568
+ assert(textOf(resp).includes('too large or malformed'))
569
+ assert(textOf(resp).includes('cas add'))
570
+ },
571
+
572
+ // Exactly maxLengthBytes (131,072) ASCII bytes — tryUtf8 returns a non-null
573
+ // Vec (len === maxLength, not over), so cas_add stores cleanly.
574
+ addTextAtLimitSucceeds: () => {
575
+ const [resp] = session(call(2, 'cas_add', { content: 'a'.repeat(Number(maxLengthBytes)) }))
576
+ assert(!resultOf(resp).isError)
577
+ assert(textOf(resp).length > 0)
578
+ },
579
+
580
+ // base64 of exactly maxLengthBytes — base64Decode trims the encoding's
581
+ // padding bits from the last character before measuring the result
582
+ // against maxLength, so a payload landing exactly at the limit decodes
583
+ // and stores cleanly.
584
+ addBase64AtLimitSucceeds: () => {
585
+ const [resp] = session(call(2, 'cas_add', { content: base64OfA(maxLengthBytes), type: 'base64' }))
586
+ assert(!resultOf(resp).isError)
587
+ assert(textOf(resp).length > 0)
588
+ },
589
+
590
+ getUnterminatedHashIsError: () => {
591
+ const [resp] = session(call(2, 'cas_get', { hash: '0' }))
592
+ assertEq(resultOf(resp).isError, true)
593
+ },
594
+
595
+ addMissingContentIsError: () => {
596
+ const [resp] = session(call(2, 'cas_add', {}))
597
+ assertEq(resultOf(resp).isError, true)
598
+ },
599
+
600
+ getMissingHashArgumentIsError: () => {
601
+ const [resp] = session(call(2, 'cas_get', {}))
602
+ assertEq(resultOf(resp).isError, true)
603
+ },
604
+
605
+ getInvalidHashIsError: () => {
606
+ const [resp] = session(call(2, 'cas_get', { hash: 'not valid!' }))
607
+ assertEq(resultOf(resp).isError, true)
608
+ },
609
+
610
+ getMissingHashIsError: () => {
611
+ const absent = vecToCBase32(vec8(0x99n))
612
+ const [resp] = session(call(2, 'cas_get', { hash: absent }))
613
+ assertEq(resultOf(resp).isError, true)
614
+ },
615
+
616
+ unknownToolIsError: () => {
617
+ const [resp] = session(call(2, 'cas_remove', { hash: binarySample }))
618
+ assertEq(resultOf(resp).isError, true)
619
+ },
620
+
621
+ toolErrorIsNotJsonRpcError: () => {
622
+ const [resp] = session(call(2, 'cas_add', { content: 'not valid!', type: 'base64' }))
623
+ assert(!('error' in /** @type {object} */ (resp)))
624
+ assert('result' in /** @type {object} */ (resp))
625
+ },
626
+
627
+ // cas_get without content:true returns only metadata.
628
+ getMetaReturnsLengthAndMimeType: () => {
629
+ const [addResp] = session(call(2, 'cas_add', { content: 'text content' }))
630
+ const hash = textOf(addResp)
631
+ const [, metaResp] = session(
632
+ call(2, 'cas_add', { content: 'text content' }),
633
+ call(3, 'cas_get', { hash }),
634
+ )
635
+ assert(!resultOf(metaResp).isError)
636
+ const meta = casGetResultOf(metaResp)
637
+ assertEq(meta.mimeType, 'text/plain')
638
+ assertEq(meta.type, 'text')
639
+ assertEq(meta.length, 12)
640
+ assertEq(meta.text, undefined)
641
+ },
642
+
643
+ getMetaBinaryBlob: () => {
644
+ const [addResp] = session(call(2, 'cas_add', { content: pngSample, type: 'base64' }))
645
+ const hash = textOf(addResp)
646
+ const [, metaResp] = session(
647
+ call(2, 'cas_add', { content: pngSample, type: 'base64' }),
648
+ call(3, 'cas_get', { hash }),
649
+ )
650
+ assert(!resultOf(metaResp).isError)
651
+ const meta = casGetResultOf(metaResp)
652
+ assertEq(meta.mimeType, 'image/png')
653
+ assertEq(meta.type, 'base64')
654
+ assertEq(meta.length, 10)
655
+ assertEq(meta.blob, undefined)
656
+ },
657
+
658
+ getMetaOctetStreamForUnknownBinary: () => {
659
+ const binaryContent = u8ListToVec(msb)([0xFF, 0xFE, 0x00, 0x01])
660
+ const binaryB64 = /** @type {string} */ (base64Encode(binaryContent))
661
+ const [addResp] = session(call(2, 'cas_add', { content: binaryB64, type: 'base64' }))
662
+ const hash = textOf(addResp)
663
+ const [, metaResp] = session(
664
+ call(2, 'cas_add', { content: binaryB64, type: 'base64' }),
665
+ call(3, 'cas_get', { hash }),
666
+ )
667
+ assert(!resultOf(metaResp).isError)
668
+ const meta = casGetResultOf(metaResp)
669
+ assertEq(meta.mimeType, 'application/octet-stream')
670
+ assertEq(meta.type, 'base64')
671
+ assertEq(meta.blob, undefined)
672
+ },
673
+
674
+ // A NUL-bearing blob is valid UTF-8 yet binary: cas_get must report
675
+ // base64/octet-stream, not text/plain.
676
+ getMetaOctetStreamForNulBlob: () => {
677
+ const nulContent = u8ListToVec(msb)([0x00, 0x00, 0x00])
678
+ const nulB64 = /** @type {string} */ (base64Encode(nulContent))
679
+ const [addResp] = session(call(2, 'cas_add', { content: nulB64, type: 'base64' }))
680
+ const hash = textOf(addResp)
681
+ const [, metaResp] = session(
682
+ call(2, 'cas_add', { content: nulB64, type: 'base64' }),
683
+ call(3, 'cas_get', { hash }),
684
+ )
685
+ assert(!resultOf(metaResp).isError)
686
+ const meta = casGetResultOf(metaResp)
687
+ assertEq(meta.mimeType, 'application/octet-stream')
688
+ assertEq(meta.type, 'base64')
689
+ },
690
+
691
+ getMetaMissingHashIsError: () => {
692
+ const absent = vecToCBase32(vec8(0x77n))
693
+ const [resp] = session(call(2, 'cas_get', { hash: absent }))
694
+ assertEq(resultOf(resp).isError, true)
695
+ },
696
+
697
+ getMetaInvalidHashIsError: () => {
698
+ const [resp] = session(call(2, 'cas_get', { hash: 'bad!' }))
699
+ assertEq(resultOf(resp).isError, true)
700
+ },
701
+
702
+ // cas_get with content:true on octet-stream (no magic bytes, not UTF-8) returns inline base64.
703
+ getOctetStreamWithContentIncludesBase64: () => {
704
+ const binaryContent = u8ListToVec(msb)([0xFF, 0xFE, 0x00, 0x01])
705
+ const binaryB64 = /** @type {string} */ (base64Encode(binaryContent))
706
+ const [addResp] = session(call(2, 'cas_add', { content: binaryB64, type: 'base64' }))
707
+ const hash = textOf(addResp)
708
+ const [, getResp] = session(
709
+ call(2, 'cas_add', { content: binaryB64, type: 'base64' }),
710
+ call(3, 'cas_get', { hash, content: true }),
711
+ )
712
+ assert(!resultOf(getResp).isError)
713
+ const result = casGetResultOf(getResp)
714
+ assertEq(result.mimeType, 'application/octet-stream')
715
+ assertEq(result.type, 'base64')
716
+ assertEq(result.blob, binaryB64)
717
+ },
718
+ }