@appport/protocol
v1.0.1
Published
AppPort wire protocol types, envelopes, error codes and manifest contracts.
Downloads
194
Readme
@appport/protocol
The AppPort wire contract: envelope types, error codes, naming rules, manifest shapes, structural validation and compatibility analysis.
This package is pure. It has no runtime dependencies and knows nothing about transports, servers or clients — which is what makes it safe to depend on from a browser bundle, an Electron preload script or a CLI.
import { createRequest, parseClientEnvelope, PROTOCOL_ID } from "@appport/protocol";
const request = createRequest({
requestId: "req_01J...",
capability: { name: "documents.save", version: 1 },
input: { documentId: "doc_1", content: "hello" }
});
parseClientEnvelope(request); // throws AppPortError on a malformed envelopeWhat is here
| Module | Contents |
| ---------------- | --------------------------------------------------------------- |
| version | appport/1, conformance levels |
| envelopes | request, response, event, subscribe, stream envelopes and guards |
| validate | protocol-level structural validation, decode and encode |
| errors | the standard error codes and AppPortError |
| names | capability, event, permission and application-id grammar |
| ids | ULID-based identifier helpers |
| manifest | manifest, discovery and transport descriptor types |
| jsonschema | the JSON Schema subset published in manifests |
| session | Principal and Session |
| operations | long-running operation records |
| blob | binary references |
| compatibility | breaking vs non-breaking manifest diffing |
Names are checked, not merely typed: electron.documents.save and
ipc.saveDocument are rejected, because a capability name that encodes a
transport breaks the protocol's central invariant.
