@sharpee/channel-service 1.0.8 → 1.1.1

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 (2) hide show
  1. package/README.md +69 -0
  2. package/package.json +5 -5
package/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # @sharpee/channel-service
2
+
3
+ Universal channel-I/O wire producer for Sharpee surfaces (ADR-163).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @sharpee/channel-service
9
+ ```
10
+
11
+ ## Overview
12
+
13
+ - **Channels are the universal UI surface** (ADR-163) - channels carry all story-to-UI signals (text, status, media, layout) over a single packet stream; transport sits under channels.
14
+ - **`ChannelService`** - the in-process producer. It walks an `IChannelRegistry`, invokes each channel's `produce`, and emits wire packets. It runs wherever the engine runs (Node CLI, multi-user server, browser).
15
+ - **Capability-filtered manifest** - `buildManifest()` returns a `CmgtPacket` tailored to the client's `ClientCapabilities`; `build(...)` returns a per-turn `TurnPacket`.
16
+ - **Wire decoder** - `createDecoder` / `Decoder` enforce bootstrap ordering on the consuming side.
17
+ - **Consumer-side renderer** (ADR-165) - `Renderer` / `createRenderer` route decoded packets to per-channel renderers.
18
+ - **Domain-agnostic** - standard channel definitions (`main`, `prompt`, `score`, etc.) live in `@sharpee/stdlib`; channel and wire types are re-exported from `@sharpee/if-domain`, their canonical home.
19
+
20
+ ## Usage
21
+
22
+ ```typescript
23
+ import {
24
+ ChannelService,
25
+ createDecoder,
26
+ createRenderer,
27
+ renderToString,
28
+ flattenContent,
29
+ type IChannelRegistry,
30
+ type ClientCapabilities,
31
+ type TurnPacket,
32
+ } from '@sharpee/channel-service';
33
+
34
+ // Producer side (runs with the engine)
35
+ const service = new ChannelService(registry, capabilities);
36
+ const manifest = service.buildManifest(); // CmgtPacket
37
+ const packet: TurnPacket = service.build({ world, events, blocks, turn });
38
+
39
+ // Consumer side — decode, then render to channel surfaces
40
+ const decoder = createDecoder();
41
+ const decoded = decoder.decode(packet);
42
+ const renderer = createRenderer({ /* channel renderers */ });
43
+ renderer.apply(decoded);
44
+
45
+ // CLI / tooling — project an ITextBlock[] to a single string
46
+ const text = renderToString(blocks);
47
+ ```
48
+
49
+ ## Key Exports
50
+
51
+ | Export | Side | Description |
52
+ |--------|------|-------------|
53
+ | `ChannelService`, `PROTOCOL_VERSION` | producer | Builds the manifest and per-turn packets |
54
+ | `createDecoder`, `Decoder`, `DecoderState` | consumer | Decodes the wire stream with bootstrap-order enforcement |
55
+ | `Renderer`, `createRenderer`, `createJsonTreeFallbackFactory` | consumer | Routes packets to per-channel renderers (ADR-165) |
56
+ | `renderToString`, `renderStatusLine` | tooling | Single-string projection of an `ITextBlock[]` |
57
+ | `flattenContent` | shared | Projects `TextContent` arrays to plain strings |
58
+ | `IOChannel`, `IChannelRegistry`, `ClientCapabilities`, `TurnPacket`, `CmgtPacket`, `HelloPacket`, `CommandPacket`, `WirePacket` | types | Channel and wire contracts (re-exported from `@sharpee/if-domain`) |
59
+
60
+ ## Related Packages
61
+
62
+ - [@sharpee/if-domain](https://www.npmjs.com/package/@sharpee/if-domain) - Canonical channel and wire types
63
+ - [@sharpee/stdlib](https://www.npmjs.com/package/@sharpee/stdlib) - Standard channel definitions
64
+ - [@sharpee/text-blocks](https://www.npmjs.com/package/@sharpee/text-blocks) - `ITextBlock` / `IDecoration` interfaces
65
+ - [@sharpee/sharpee](https://www.npmjs.com/package/@sharpee/sharpee) - Full platform bundle
66
+
67
+ ## License
68
+
69
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sharpee/channel-service",
3
- "version": "1.0.8",
3
+ "version": "1.1.1",
4
4
  "description": "Channel-service platform — universal channel-I/O wire producer (ADR-163)",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -12,10 +12,10 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@sharpee/core": "^1.0.8",
16
- "@sharpee/if-domain": "^1.0.8",
17
- "@sharpee/text-blocks": "^1.0.8",
18
- "@sharpee/world-model": "^1.0.8"
15
+ "@sharpee/core": "^1.1.1",
16
+ "@sharpee/if-domain": "^1.1.1",
17
+ "@sharpee/text-blocks": "^1.1.1",
18
+ "@sharpee/world-model": "^1.1.1"
19
19
  },
20
20
  "keywords": [
21
21
  "interactive-fiction",