<oembed><type>rich</type><version>1.0</version><title>Innis wrote</title><author_name>Innis (npub1l3…5cxyz)</author_name><author_url>https://yabu.me/npub1l33660awkeycecn9grhrvzyn0fmes8245ke7k82y8njz8uqu3vlqk5cxyz</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>And shipping jsr:@innis/nostr-core today. The TypeScript port of the PHP library. Same architecture, same discipline. Branded primitives at the boundary, immutable domain objects, pure functions, ports where the protocol meets the world. The protocol layer separated from everything else, organised around domain concepts rather than NIP numbers, strict enough that a client, a relay, and an application can share the same core.&#xA;&#xA;It is a contracts library and not a batteries-included toolkit. nostr-tools is excellent at the latter and the two are not feature-for-feature competitors. What this exposes that nostr-tools does not is a hex-typed boundary the compiler can check, with PublicKey, EventId, RelayUrl, and Sig all branded, one Signer port that NIP-07 and NIP-46 and a local signer all satisfy, crypto failures returned as Results rather than thrown, and an HttpClient port so libraries that touch the network never reach for fetch directly. If you are building an app and do not need any of that, use nostr-tools. If you are working inside the innis stack or want swappable boundaries you can test against in memory, this is where the contracts live.&#xA;&#xA;The standalone relay-selection library released earlier this month was the first piece of the TypeScript stack to go public. This is the foundation of everything else. The pool, the event store, the NIP-07 and NIP-46 signers, and the work built on top of all of it, all to follow as each layer is cleaned for release. The discipline I am working on is not letting that cleanup become the delay. The lesson keeps coming back around.&#xA;&#xA;AI was involved, same terms as before. The architecture is mine. The decisions are mine. The machine held the other end of the board.&#xA;&#xA;deno add jsr:@innis/nostr-core&#xA;https://github.com/johninnis/nostr-core-ts&#xA;&#xA;MIT.&#xA;&#xA;#nostr #typescript #opensource #nostrdev&#xA;&#xA;nostr:nevent1qqsd6dul70lgvyjqzsqk2x0p75fuyz7cuv6z7mn9s940knh3j2zg4mgpp4mhxue69uhkummn9ekx7mqppamhxue69uhkummnw3ezumt0d5q3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7q3ql33660awkeycecn9grhrvzyn0fmes8245ke7k82y8njz8uqu3vlqszunvm</html></oembed>