cas/mcp: unify cas_add/cas_add_url and cas_get/cas_get_meta into three tools — cas_add gains type:'url', cas_get gains content?: boolean and always returns metadata #1106
cas/mcp: add cas_add_url and cas_get_meta to avoid token-heavy binary transfers; casMcpHandlers accepts an optional toUrl resolver #1102
cas/mcp: smart text/binary encoding — cas_add accepts an optional type ('text' default or 'base64'); cas_get returns { content, type, mime_type } after two-phase MIME detection #1104
base_n: extract a shared Vec ↔ string bit-codec factory, baseN(bits, alphabet, normalize?), and rewrite base64 and cbase32 through it while each keeps its own padding #1097
cli: Command.handler now also accepts a nested Commands array, and dispatch recurses into it — subcommand groups such as fjs cas mcp need no custom dispatch #1093
cas/mcp: switch content encoding to standard RFC 4648 base64; hashes stay cBase32 for canonical identity #1081
json: stringify now skips object properties with undefined values, matching JSON.stringify#1080
base64: add fs/base64/module.f.ts with RFC 4648 encode / decode for byte-aligned Vec values, returning null on malformed input #1079
mcp: add a stdio transport for JSON-RPC / MCP servers — stdioTransport drives the read→parse→dispatch→write loop as a recursive effect over a new byte-level read effect #1072
html: replace the four raw hex code points in escapeCharCode with the named constants from fs/text/ascii. Pure refactor #1064
djs/serializer: hoist the "value is referenced more than once" predicate into a single module-scope sharedRef(refs)(v) helper. Pure refactor #1057
types/object: introduce StringMap<K, T> — one conditional type covering both infinite and finite key sets — plus definedEntries; applied across 17 sites in 11 files #1055
effects/node: add readUtf8File / writeUtf8File next to the readFile / writeFile effects, and migrate the open-coded UTF-8 sandwiches in djs/transpiler, djs, and ci#1052
effects/node: drop the private Io indirection from the node effect runner — the handler table is inlined into a module-level asyncRun. Pure refactor #1051
fjs: add a proof.f.ts covering the CLI command handlers via the virtual Node-effect interpreter #1047
effects/node/virtual: add proofs for the await handler, the fetch not-found branch, and the import_ invalid-path branch #1046
asn.1: extract a private generic decodeAll<T>(step) and rewrite decodeObjectIdentifier and decodeSequence through it. Pure refactor #1041
types/bigfloat: factor the abs/sign/multiply envelope of round53 and decToBin into a private withSign combinator. Pure refactor #1022
types/bigfloat: collapse the increaseMantissa / decreaseMantissa mirror into a single normalizeMantissa factory. Pure refactor #1021
text/utf8: define the UTF-8 tag/payload-mask constants and the contByte / contPayload helpers once at module scope. Pure refactor #1020
types/bigint: export divUp8 / roundUp8 (bits → bytes, rounding up) and reuse them in crypto/sign and asn.1#1018
types/sorted_list: export intersect and dropTail; types/sorted_set delegates intersect to them, mirroring union#1017
cas: drop the private 2-char split helper and reuse splitAt(2) from fs/types/string for the shard path #1014
types/bigint: add shift-based divUpE2(e) / roundUpE2(e), retype divUp / roundUp, and migrate asn.1 and crypto/sign onto them #1012
effects/memory: add typed create / read / write memory operations, a Map-backed Node interpreter, and virtual-memory composition #1008
json/rpc: add JSON-RPC spec links to the JSDoc and destructure the decodeRequest result in dispatch#1002