hci-atrium 0.1.0 → 0.2.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.
Files changed (42) hide show
  1. package/README.md +19 -0
  2. package/dist/asset-meta.d.ts +31 -0
  3. package/dist/asset-meta.d.ts.map +1 -0
  4. package/dist/asset-meta.js +25 -0
  5. package/dist/asset-meta.js.map +1 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/player/audio-layers.d.ts +306 -0
  11. package/dist/player/audio-layers.d.ts.map +1 -0
  12. package/dist/player/audio-layers.js +1245 -0
  13. package/dist/player/audio-layers.js.map +1 -0
  14. package/dist/player/index.d.ts +13 -0
  15. package/dist/player/index.d.ts.map +1 -0
  16. package/dist/player/index.js +13 -0
  17. package/dist/player/index.js.map +1 -0
  18. package/dist/player/layer-signals.d.ts +80 -0
  19. package/dist/player/layer-signals.d.ts.map +1 -0
  20. package/dist/player/layer-signals.js +174 -0
  21. package/dist/player/layer-signals.js.map +1 -0
  22. package/dist/player/play-command.d.ts +55 -0
  23. package/dist/player/play-command.d.ts.map +1 -0
  24. package/dist/player/play-command.js +36 -0
  25. package/dist/player/play-command.js.map +1 -0
  26. package/dist/player/play-intent.d.ts +18 -0
  27. package/dist/player/play-intent.d.ts.map +1 -0
  28. package/dist/player/play-intent.js +26 -0
  29. package/dist/player/play-intent.js.map +1 -0
  30. package/dist/player/runtime.d.ts +105 -0
  31. package/dist/player/runtime.d.ts.map +1 -0
  32. package/dist/player/runtime.js +395 -0
  33. package/dist/player/runtime.js.map +1 -0
  34. package/dist/react/index.d.ts +1 -0
  35. package/dist/react/index.d.ts.map +1 -1
  36. package/dist/react/index.js +1 -0
  37. package/dist/react/index.js.map +1 -1
  38. package/dist/react/use-room-connection.d.ts +40 -0
  39. package/dist/react/use-room-connection.d.ts.map +1 -0
  40. package/dist/react/use-room-connection.js +85 -0
  41. package/dist/react/use-room-connection.js.map +1 -0
  42. package/package.json +5 -1
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ``useRoomConnection`` — the connect/reconnect skeleton shared by the browser tools that consume a
3
+ * room by connect code (Dashboard, Viewer).
4
+ *
5
+ * It owns exactly the transport lifecycle: ``joinRoom(code)`` → classify a join failure
6
+ * (``APIError`` 4xx = a bad code, anything else = unreachable) → register a terminal ``onEnd``
7
+ * (the typed reason becomes the status) → ``await room.connect()`` (a non-terminal failure =
8
+ * unreachable) → remount-safe cleanup (a ``cancelled`` flag guards every late setState, and
9
+ * ``room.close()`` tears the handle down). App-specific signal handling stays outside: pass
10
+ * ``onRoom`` to register handlers on the room the moment it exists — **before** ``connect()`` runs,
11
+ * so a durable-signal replay isn't missed — and return an optional cleanup from it.
12
+ */
13
+ import { useEffect, useRef, useState } from "react";
14
+ import { APIError } from "../errors.js";
15
+ import { joinRoom } from "../rooms/index.js";
16
+ export function useRoomConnection(code, opts) {
17
+ const { identity, baseUrl } = opts;
18
+ const [status, setStatus] = useState("connecting");
19
+ const [room, setRoom] = useState(null);
20
+ // Latest ``onRoom`` without re-running the connect effect when the caller passes an inline closure.
21
+ const onRoomRef = useRef(opts.onRoom);
22
+ onRoomRef.current = opts.onRoom;
23
+ useEffect(() => {
24
+ let cancelled = false;
25
+ let handle = null;
26
+ let teardown;
27
+ async function connect() {
28
+ let r;
29
+ try {
30
+ r = await joinRoom(code, { baseUrl: baseUrl ?? location.origin, identity });
31
+ }
32
+ catch (err) {
33
+ if (cancelled)
34
+ return;
35
+ const badCode = err instanceof APIError && err.status >= 400 && err.status < 500;
36
+ setStatus(badCode ? "bad-code" : "unreachable");
37
+ return;
38
+ }
39
+ if (cancelled) {
40
+ r.close();
41
+ return;
42
+ }
43
+ handle = r;
44
+ setRoom(r);
45
+ const cleanup = onRoomRef.current?.(r);
46
+ teardown = typeof cleanup === "function" ? cleanup : undefined;
47
+ // A terminal room end (code rotated / bad code / room deleted) comes back typed — map the
48
+ // reason straight to the status. Fires exactly once, for a mid-session end and a connect-time
49
+ // reject alike; `handleEnd` has already torn the handle down, so no `close()` here.
50
+ let terminalEnded = false;
51
+ r.onEnd((reason) => {
52
+ terminalEnded = true;
53
+ if (!cancelled) {
54
+ setStatus(reason);
55
+ // The handle is torn down on a terminal end — drop it so callers don't hold a dead room.
56
+ setRoom(null);
57
+ }
58
+ });
59
+ try {
60
+ await r.connect();
61
+ }
62
+ catch {
63
+ if (cancelled)
64
+ return;
65
+ // A terminal end already classified itself via onEnd; only a non-terminal connect failure
66
+ // (a connect timeout / no reachable transport) falls through here → unreachable.
67
+ if (!terminalEnded)
68
+ setStatus("unreachable");
69
+ return;
70
+ }
71
+ if (cancelled)
72
+ return;
73
+ setStatus("connected");
74
+ }
75
+ void connect();
76
+ return () => {
77
+ cancelled = true;
78
+ teardown?.();
79
+ handle?.close();
80
+ setRoom(null);
81
+ };
82
+ }, [code, identity, baseUrl]);
83
+ return { status, room };
84
+ }
85
+ //# sourceMappingURL=use-room-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-room-connection.js","sourceRoot":"","sources":["../../src/react/use-room-connection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hci-atrium",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript SDK for the Atrium framework — multimodal asset library, semantic + cross-modal search, and capability routing.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -22,6 +22,10 @@
22
22
  "./react": {
23
23
  "types": "./dist/react/index.d.ts",
24
24
  "import": "./dist/react/index.js"
25
+ },
26
+ "./player": {
27
+ "types": "./dist/player/index.d.ts",
28
+ "import": "./dist/player/index.js"
25
29
  }
26
30
  },
27
31
  "peerDependencies": {