@macula-io/ts 0.29.0 → 0.30.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.
package/README.md CHANGED
@@ -173,7 +173,7 @@ call and session to JavaScript through a `ThreadSafeFunction`.
173
173
  | A node's own namespace (`ownProcedure`) | ✅ | ✅ | `~<node_id>/<name>`: served and called with no org and no realm key; the node's signature authorizes it |
174
174
  | Streams (`openStream`, `serveStream`) | ✅ | ✅ | Server, client and bidi; a QUIC stream per session, released on every path |
175
175
  | Sealed calls and streams (`confidential`, `kemAdvertise`) | ✅ | ✅ | macula 13's E2E seal scheme 1 through macula-go v0.18.0: a call or stream is sealed to the provider's advertised KEM key whenever its advertisement names one (`"preferred"`, the default), `"required"` never calls a provider that names none, and what could not be kept confidential is a `ConfidentialityError` with its `reason`. A provider names its key only with `kemAdvertise: 1` (off by default: turn it on once every station runs macula 12.11 or later and its callers run macula 13, macula-go 0.18 or this release); it serves `"preferred"` (with `kemAdvertise`, clear calls are taken only while its last keyless advertisement could still be served, then refused `sealed_required`), `"required"` or `"off"`, and each request says `sealed: 0 \| 1`. A provider that cannot open a sealed call twice answers a `ProviderError` of code `sealed_refused`, its `detail` the key id it holds now (hex, or empty when it holds none). `Pool.callReport` (a call's result with its seal report) and `Stream.report()` tell a caller afterwards whether the exchange went sealed, to which provider and key (`sealed: 0 \| 1`, `provider`, `sealKeyId`; macula-go v0.19.0). The report says sealing ran on that exchange, nothing more |
176
- | UCANs (`NodeKey.ucan`, `Ucan`, `ucan`/`proofs`, `policy`) | ✅ | ✅ | macula 12's D7 through macula-go v0.17.0's C ABI: `NodeKey.ucan(audience, caps, expS, {prf})` mints a token for the node that presents it (`caps` a list of `{with, can}`, each `with` an MRI), and `Ucan.proofId` names a delegated token's parent. `call`, `callReport` and `openStream` present `ucan` with `proofs`, its chain's parents; an empty token, or proofs without one, is refused before anything is sent. `serve` and `serveStream` take `policy`: `Ucan.ucanRequired(issuer)` (a chain rooted at that node's identity key) or `Ucan.realmMemberRequired(keyId, can)` (rooted at that realm key, granting that can). libmacula checks each call and open before it reaches the handler: a refused call is a `ProviderError`, a refused open a `StreamError`, of code `unauthorized` (`malformed_frame` for a proof no token names). Tested against in-process stations: no token, a token for another node and one from another root refused; a direct grant and a one-level delegation served |
176
+ | UCANs (`NodeKey.ucan`, `Ucan`, `ucan`/`proofs`, `policy`) | ✅ | ✅ | macula 12's D7 through macula-go v0.17.0's C ABI: `NodeKey.ucan(audience, caps, expS, {prf})` mints a token for the node that presents it (`caps` a list of `{with, can}`, each `with` an MRI), and `Ucan.proofId` names a delegated token's parent. `call`, `callReport` and `openStream` present `ucan` with `proofs`, its chain's parents; an empty token, or proofs without one, is refused before anything is sent. `serve` and `serveStream` take `policy`: `Ucan.ucanRequired(issuer)` (a chain rooted at that node's identity key) or `Ucan.realmMemberRequired(keyId, can)` (rooted at that realm key, granting that can). libmacula checks each call and open before it reaches the handler: a refused call is a `ProviderError`, a refused open a `StreamError`, of code `unauthorized` (`malformed_frame` for a proof no token names). Tested against in-process stations: no token, a token for another node and one from another root refused; a direct grant and a one-level delegation served. Since 0.30.0 (macula-go v0.26.0) an issuer did:key over 4,400 characters is refused at once, before it is decoded (macula#87), and an `exp` more than ten years out authorizes nothing (macula#68) |
177
177
  | Publish/subscribe | ✅ | ✅ | Signed publications, delivered once across links |
178
178
  | DHT (`findRecord`, `findRecords`, `findRecordsByType`, `putRecord`) | ✅ | — | Records verified before they are handed on |
179
179
  | Realm proof v2 (`NodeKey.deviceRequestProof`) | ✅ | — | macula-realm#29: a join session over HTTP (`"http"`, the realm's JSON rule) or a membership UCAN over the mesh (`"mesh"`), with its device_info and ttl_seconds, the realm and the procedure signed, and a nonce; the realm's own vector reproduced through macula-go's encoder |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@macula-io/ts",
3
- "version": "0.29.0",
3
+ "version": "0.30.0",
4
4
  "description": "TypeScript SDK for the Macula mesh, over macula-go's shared C ABI",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
index ac63aa4..2e29636 100644
Binary file