foundation-ai-agent 1.0.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 (306) hide show
  1. package/README.md +338 -0
  2. package/dist/compat/butler-cloud.d.ts +33 -0
  3. package/dist/compat/butler-cloud.d.ts.map +1 -0
  4. package/dist/compat/butler-cloud.js +69 -0
  5. package/dist/compat/butler-cloud.js.map +1 -0
  6. package/dist/compat/butler-edge.d.ts +34 -0
  7. package/dist/compat/butler-edge.d.ts.map +1 -0
  8. package/dist/compat/butler-edge.js +62 -0
  9. package/dist/compat/butler-edge.js.map +1 -0
  10. package/dist/compat/butler-pair.d.ts +27 -0
  11. package/dist/compat/butler-pair.d.ts.map +1 -0
  12. package/dist/compat/butler-pair.js +23 -0
  13. package/dist/compat/butler-pair.js.map +1 -0
  14. package/dist/compat/entry.d.ts +26 -0
  15. package/dist/compat/entry.d.ts.map +1 -0
  16. package/dist/compat/entry.js +35 -0
  17. package/dist/compat/entry.js.map +1 -0
  18. package/dist/compat/index.d.ts +12 -0
  19. package/dist/compat/index.d.ts.map +1 -0
  20. package/dist/compat/index.js +12 -0
  21. package/dist/compat/index.js.map +1 -0
  22. package/dist/compat/queue.d.ts +31 -0
  23. package/dist/compat/queue.d.ts.map +1 -0
  24. package/dist/compat/queue.js +54 -0
  25. package/dist/compat/queue.js.map +1 -0
  26. package/dist/index.d.ts +37 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +53 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/ledger.d.ts +28 -0
  31. package/dist/ledger.d.ts.map +1 -0
  32. package/dist/ledger.js +62 -0
  33. package/dist/ledger.js.map +1 -0
  34. package/dist/observability/index.d.ts +4 -0
  35. package/dist/observability/index.d.ts.map +1 -0
  36. package/dist/observability/index.js +2 -0
  37. package/dist/observability/index.js.map +1 -0
  38. package/dist/observability/observer.d.ts +37 -0
  39. package/dist/observability/observer.d.ts.map +1 -0
  40. package/dist/observability/observer.js +53 -0
  41. package/dist/observability/observer.js.map +1 -0
  42. package/dist/observability/types.d.ts +92 -0
  43. package/dist/observability/types.d.ts.map +1 -0
  44. package/dist/observability/types.js +9 -0
  45. package/dist/observability/types.js.map +1 -0
  46. package/dist/s01-realtime/index.d.ts +3 -0
  47. package/dist/s01-realtime/index.d.ts.map +1 -0
  48. package/dist/s01-realtime/index.js +2 -0
  49. package/dist/s01-realtime/index.js.map +1 -0
  50. package/dist/s01-realtime/signaling.d.ts +78 -0
  51. package/dist/s01-realtime/signaling.d.ts.map +1 -0
  52. package/dist/s01-realtime/signaling.js +20 -0
  53. package/dist/s01-realtime/signaling.js.map +1 -0
  54. package/dist/s01-realtime/types.d.ts +40 -0
  55. package/dist/s01-realtime/types.d.ts.map +1 -0
  56. package/dist/s01-realtime/types.js +8 -0
  57. package/dist/s01-realtime/types.js.map +1 -0
  58. package/dist/s02-crdt/index.d.ts +3 -0
  59. package/dist/s02-crdt/index.d.ts.map +1 -0
  60. package/dist/s02-crdt/index.js +2 -0
  61. package/dist/s02-crdt/index.js.map +1 -0
  62. package/dist/s02-crdt/types.d.ts +45 -0
  63. package/dist/s02-crdt/types.d.ts.map +1 -0
  64. package/dist/s02-crdt/types.js +10 -0
  65. package/dist/s02-crdt/types.js.map +1 -0
  66. package/dist/s02-crdt/yjs.d.ts +9 -0
  67. package/dist/s02-crdt/yjs.d.ts.map +1 -0
  68. package/dist/s02-crdt/yjs.js +67 -0
  69. package/dist/s02-crdt/yjs.js.map +1 -0
  70. package/dist/s03-streaming/index.d.ts +3 -0
  71. package/dist/s03-streaming/index.d.ts.map +1 -0
  72. package/dist/s03-streaming/index.js +2 -0
  73. package/dist/s03-streaming/index.js.map +1 -0
  74. package/dist/s03-streaming/playlist.d.ts +8 -0
  75. package/dist/s03-streaming/playlist.d.ts.map +1 -0
  76. package/dist/s03-streaming/playlist.js +49 -0
  77. package/dist/s03-streaming/playlist.js.map +1 -0
  78. package/dist/s03-streaming/types.d.ts +69 -0
  79. package/dist/s03-streaming/types.d.ts.map +1 -0
  80. package/dist/s03-streaming/types.js +8 -0
  81. package/dist/s03-streaming/types.js.map +1 -0
  82. package/dist/s04-messaging/index.d.ts +3 -0
  83. package/dist/s04-messaging/index.d.ts.map +1 -0
  84. package/dist/s04-messaging/index.js +2 -0
  85. package/dist/s04-messaging/index.js.map +1 -0
  86. package/dist/s04-messaging/serializer.d.ts +11 -0
  87. package/dist/s04-messaging/serializer.d.ts.map +1 -0
  88. package/dist/s04-messaging/serializer.js +45 -0
  89. package/dist/s04-messaging/serializer.js.map +1 -0
  90. package/dist/s04-messaging/types.d.ts +54 -0
  91. package/dist/s04-messaging/types.d.ts.map +1 -0
  92. package/dist/s04-messaging/types.js +8 -0
  93. package/dist/s04-messaging/types.js.map +1 -0
  94. package/dist/s05-rendering/index.d.ts +3 -0
  95. package/dist/s05-rendering/index.d.ts.map +1 -0
  96. package/dist/s05-rendering/index.js +3 -0
  97. package/dist/s05-rendering/index.js.map +1 -0
  98. package/dist/s05-rendering/state-machine.d.ts +20 -0
  99. package/dist/s05-rendering/state-machine.d.ts.map +1 -0
  100. package/dist/s05-rendering/state-machine.js +47 -0
  101. package/dist/s05-rendering/state-machine.js.map +1 -0
  102. package/dist/s05-rendering/types.d.ts +13 -0
  103. package/dist/s05-rendering/types.d.ts.map +1 -0
  104. package/dist/s05-rendering/types.js +16 -0
  105. package/dist/s05-rendering/types.js.map +1 -0
  106. package/dist/s06-payments/billing.d.ts +9 -0
  107. package/dist/s06-payments/billing.d.ts.map +1 -0
  108. package/dist/s06-payments/billing.js +79 -0
  109. package/dist/s06-payments/billing.js.map +1 -0
  110. package/dist/s06-payments/index.d.ts +4 -0
  111. package/dist/s06-payments/index.d.ts.map +1 -0
  112. package/dist/s06-payments/index.js +3 -0
  113. package/dist/s06-payments/index.js.map +1 -0
  114. package/dist/s06-payments/stripe.d.ts +52 -0
  115. package/dist/s06-payments/stripe.d.ts.map +1 -0
  116. package/dist/s06-payments/stripe.js +103 -0
  117. package/dist/s06-payments/stripe.js.map +1 -0
  118. package/dist/s06-payments/types.d.ts +80 -0
  119. package/dist/s06-payments/types.d.ts.map +1 -0
  120. package/dist/s06-payments/types.js +13 -0
  121. package/dist/s06-payments/types.js.map +1 -0
  122. package/dist/s07-identity/index.d.ts +2 -0
  123. package/dist/s07-identity/index.d.ts.map +1 -0
  124. package/dist/s07-identity/index.js +2 -0
  125. package/dist/s07-identity/index.js.map +1 -0
  126. package/dist/s07-identity/session.d.ts +53 -0
  127. package/dist/s07-identity/session.d.ts.map +1 -0
  128. package/dist/s07-identity/session.js +114 -0
  129. package/dist/s07-identity/session.js.map +1 -0
  130. package/dist/s08-containers/docker.d.ts +39 -0
  131. package/dist/s08-containers/docker.d.ts.map +1 -0
  132. package/dist/s08-containers/docker.js +72 -0
  133. package/dist/s08-containers/docker.js.map +1 -0
  134. package/dist/s08-containers/index.d.ts +4 -0
  135. package/dist/s08-containers/index.d.ts.map +1 -0
  136. package/dist/s08-containers/index.js +3 -0
  137. package/dist/s08-containers/index.js.map +1 -0
  138. package/dist/s08-containers/sandbox.d.ts +10 -0
  139. package/dist/s08-containers/sandbox.d.ts.map +1 -0
  140. package/dist/s08-containers/sandbox.js +68 -0
  141. package/dist/s08-containers/sandbox.js.map +1 -0
  142. package/dist/s08-containers/types.d.ts +66 -0
  143. package/dist/s08-containers/types.d.ts.map +1 -0
  144. package/dist/s08-containers/types.js +8 -0
  145. package/dist/s08-containers/types.js.map +1 -0
  146. package/dist/s09-persistence/cold.d.ts +43 -0
  147. package/dist/s09-persistence/cold.d.ts.map +1 -0
  148. package/dist/s09-persistence/cold.js +135 -0
  149. package/dist/s09-persistence/cold.js.map +1 -0
  150. package/dist/s09-persistence/hot.d.ts +32 -0
  151. package/dist/s09-persistence/hot.d.ts.map +1 -0
  152. package/dist/s09-persistence/hot.js +63 -0
  153. package/dist/s09-persistence/hot.js.map +1 -0
  154. package/dist/s09-persistence/index.d.ts +6 -0
  155. package/dist/s09-persistence/index.d.ts.map +1 -0
  156. package/dist/s09-persistence/index.js +6 -0
  157. package/dist/s09-persistence/index.js.map +1 -0
  158. package/dist/s09-persistence/pg-warm.d.ts +30 -0
  159. package/dist/s09-persistence/pg-warm.d.ts.map +1 -0
  160. package/dist/s09-persistence/pg-warm.js +139 -0
  161. package/dist/s09-persistence/pg-warm.js.map +1 -0
  162. package/dist/s09-persistence/s3-cold.d.ts +39 -0
  163. package/dist/s09-persistence/s3-cold.d.ts.map +1 -0
  164. package/dist/s09-persistence/s3-cold.js +102 -0
  165. package/dist/s09-persistence/s3-cold.js.map +1 -0
  166. package/dist/s09-persistence/warm.d.ts +33 -0
  167. package/dist/s09-persistence/warm.d.ts.map +1 -0
  168. package/dist/s09-persistence/warm.js +169 -0
  169. package/dist/s09-persistence/warm.js.map +1 -0
  170. package/dist/s10-inference/action.d.ts +39 -0
  171. package/dist/s10-inference/action.d.ts.map +1 -0
  172. package/dist/s10-inference/action.js +73 -0
  173. package/dist/s10-inference/action.js.map +1 -0
  174. package/dist/s10-inference/agents/index.d.ts +3 -0
  175. package/dist/s10-inference/agents/index.d.ts.map +1 -0
  176. package/dist/s10-inference/agents/index.js +3 -0
  177. package/dist/s10-inference/agents/index.js.map +1 -0
  178. package/dist/s10-inference/agents/mirror.d.ts +73 -0
  179. package/dist/s10-inference/agents/mirror.d.ts.map +1 -0
  180. package/dist/s10-inference/agents/mirror.js +106 -0
  181. package/dist/s10-inference/agents/mirror.js.map +1 -0
  182. package/dist/s10-inference/agents/registry.d.ts +64 -0
  183. package/dist/s10-inference/agents/registry.d.ts.map +1 -0
  184. package/dist/s10-inference/agents/registry.js +92 -0
  185. package/dist/s10-inference/agents/registry.js.map +1 -0
  186. package/dist/s10-inference/context.d.ts +39 -0
  187. package/dist/s10-inference/context.d.ts.map +1 -0
  188. package/dist/s10-inference/context.js +36 -0
  189. package/dist/s10-inference/context.js.map +1 -0
  190. package/dist/s10-inference/index.d.ts +7 -0
  191. package/dist/s10-inference/index.d.ts.map +1 -0
  192. package/dist/s10-inference/index.js +6 -0
  193. package/dist/s10-inference/index.js.map +1 -0
  194. package/dist/s10-inference/loop.d.ts +42 -0
  195. package/dist/s10-inference/loop.d.ts.map +1 -0
  196. package/dist/s10-inference/loop.js +104 -0
  197. package/dist/s10-inference/loop.js.map +1 -0
  198. package/dist/s10-inference/provider.d.ts +43 -0
  199. package/dist/s10-inference/provider.d.ts.map +1 -0
  200. package/dist/s10-inference/provider.js +9 -0
  201. package/dist/s10-inference/provider.js.map +1 -0
  202. package/dist/s10-inference/providers/anthropic.d.ts +13 -0
  203. package/dist/s10-inference/providers/anthropic.d.ts.map +1 -0
  204. package/dist/s10-inference/providers/anthropic.js +168 -0
  205. package/dist/s10-inference/providers/anthropic.js.map +1 -0
  206. package/dist/s10-inference/providers/ollama.d.ts +9 -0
  207. package/dist/s10-inference/providers/ollama.d.ts.map +1 -0
  208. package/dist/s10-inference/providers/ollama.js +102 -0
  209. package/dist/s10-inference/providers/ollama.js.map +1 -0
  210. package/dist/s10-inference/providers/openai.d.ts +14 -0
  211. package/dist/s10-inference/providers/openai.d.ts.map +1 -0
  212. package/dist/s10-inference/providers/openai.js +172 -0
  213. package/dist/s10-inference/providers/openai.js.map +1 -0
  214. package/dist/s11-transport/index.d.ts +4 -0
  215. package/dist/s11-transport/index.d.ts.map +1 -0
  216. package/dist/s11-transport/index.js +4 -0
  217. package/dist/s11-transport/index.js.map +1 -0
  218. package/dist/s11-transport/room.d.ts +28 -0
  219. package/dist/s11-transport/room.d.ts.map +1 -0
  220. package/dist/s11-transport/room.js +69 -0
  221. package/dist/s11-transport/room.js.map +1 -0
  222. package/dist/s11-transport/transport.d.ts +20 -0
  223. package/dist/s11-transport/transport.d.ts.map +1 -0
  224. package/dist/s11-transport/transport.js +39 -0
  225. package/dist/s11-transport/transport.js.map +1 -0
  226. package/dist/s11-transport/ws.d.ts +15 -0
  227. package/dist/s11-transport/ws.d.ts.map +1 -0
  228. package/dist/s11-transport/ws.js +71 -0
  229. package/dist/s11-transport/ws.js.map +1 -0
  230. package/dist/s12-versioncontrol/index.d.ts +4 -0
  231. package/dist/s12-versioncontrol/index.d.ts.map +1 -0
  232. package/dist/s12-versioncontrol/index.js +3 -0
  233. package/dist/s12-versioncontrol/index.js.map +1 -0
  234. package/dist/s12-versioncontrol/ledger-dag.d.ts +25 -0
  235. package/dist/s12-versioncontrol/ledger-dag.d.ts.map +1 -0
  236. package/dist/s12-versioncontrol/ledger-dag.js +84 -0
  237. package/dist/s12-versioncontrol/ledger-dag.js.map +1 -0
  238. package/dist/s12-versioncontrol/merkle.d.ts +16 -0
  239. package/dist/s12-versioncontrol/merkle.d.ts.map +1 -0
  240. package/dist/s12-versioncontrol/merkle.js +81 -0
  241. package/dist/s12-versioncontrol/merkle.js.map +1 -0
  242. package/dist/s12-versioncontrol/types.d.ts +50 -0
  243. package/dist/s12-versioncontrol/types.d.ts.map +1 -0
  244. package/dist/s12-versioncontrol/types.js +8 -0
  245. package/dist/s12-versioncontrol/types.js.map +1 -0
  246. package/dist/touches/audio-tap.d.ts +32 -0
  247. package/dist/touches/audio-tap.d.ts.map +1 -0
  248. package/dist/touches/audio-tap.js +54 -0
  249. package/dist/touches/audio-tap.js.map +1 -0
  250. package/dist/touches/avatar-state.d.ts +22 -0
  251. package/dist/touches/avatar-state.d.ts.map +1 -0
  252. package/dist/touches/avatar-state.js +35 -0
  253. package/dist/touches/avatar-state.js.map +1 -0
  254. package/dist/touches/container-room.d.ts +17 -0
  255. package/dist/touches/container-room.d.ts.map +1 -0
  256. package/dist/touches/container-room.js +34 -0
  257. package/dist/touches/container-room.js.map +1 -0
  258. package/dist/touches/cost-billing.d.ts +20 -0
  259. package/dist/touches/cost-billing.d.ts.map +1 -0
  260. package/dist/touches/cost-billing.js +26 -0
  261. package/dist/touches/cost-billing.js.map +1 -0
  262. package/dist/touches/cost-track.d.ts +19 -0
  263. package/dist/touches/cost-track.d.ts.map +1 -0
  264. package/dist/touches/cost-track.js +20 -0
  265. package/dist/touches/cost-track.js.map +1 -0
  266. package/dist/touches/crdt-sync.d.ts +14 -0
  267. package/dist/touches/crdt-sync.d.ts.map +1 -0
  268. package/dist/touches/crdt-sync.js +49 -0
  269. package/dist/touches/crdt-sync.js.map +1 -0
  270. package/dist/touches/identity-gate.d.ts +22 -0
  271. package/dist/touches/identity-gate.d.ts.map +1 -0
  272. package/dist/touches/identity-gate.js +24 -0
  273. package/dist/touches/identity-gate.js.map +1 -0
  274. package/dist/touches/index.d.ts +14 -0
  275. package/dist/touches/index.d.ts.map +1 -0
  276. package/dist/touches/index.js +14 -0
  277. package/dist/touches/index.js.map +1 -0
  278. package/dist/touches/memory-persist.d.ts +29 -0
  279. package/dist/touches/memory-persist.d.ts.map +1 -0
  280. package/dist/touches/memory-persist.js +49 -0
  281. package/dist/touches/memory-persist.js.map +1 -0
  282. package/dist/touches/messenger-bridge.d.ts +19 -0
  283. package/dist/touches/messenger-bridge.d.ts.map +1 -0
  284. package/dist/touches/messenger-bridge.js +49 -0
  285. package/dist/touches/messenger-bridge.js.map +1 -0
  286. package/dist/touches/sentiment-tap.d.ts +43 -0
  287. package/dist/touches/sentiment-tap.d.ts.map +1 -0
  288. package/dist/touches/sentiment-tap.js +81 -0
  289. package/dist/touches/sentiment-tap.js.map +1 -0
  290. package/dist/touches/stichwort.d.ts +46 -0
  291. package/dist/touches/stichwort.d.ts.map +1 -0
  292. package/dist/touches/stichwort.js +64 -0
  293. package/dist/touches/stichwort.js.map +1 -0
  294. package/dist/touches/transport-signal.d.ts +26 -0
  295. package/dist/touches/transport-signal.d.ts.map +1 -0
  296. package/dist/touches/transport-signal.js +49 -0
  297. package/dist/touches/transport-signal.js.map +1 -0
  298. package/dist/touches/version-persist.d.ts +18 -0
  299. package/dist/touches/version-persist.d.ts.map +1 -0
  300. package/dist/touches/version-persist.js +38 -0
  301. package/dist/touches/version-persist.js.map +1 -0
  302. package/dist/types.d.ts +61 -0
  303. package/dist/types.d.ts.map +1 -0
  304. package/dist/types.js +13 -0
  305. package/dist/types.js.map +1 -0
  306. package/package.json +117 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/s01-realtime/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAcL,kBAAkB,GACnB,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * S1 — Signaling Messages
3
+ *
4
+ * Alle Signaling-Nachrichten als typisierte Events.
5
+ * Generalisiert aus 0room0's 11 Message-Typen + 14 mediasoup-Typen.
6
+ * Hier als Foundation Event-Subtypen — transportagnostisch.
7
+ */
8
+ import type { PeerInfo } from './types.js';
9
+ export type JoinMessage = {
10
+ type: 'join';
11
+ roomId: string;
12
+ peer: PeerInfo;
13
+ };
14
+ export type LeaveMessage = {
15
+ type: 'leave';
16
+ roomId: string;
17
+ peerId: string;
18
+ };
19
+ export type OfferMessage = {
20
+ type: 'offer';
21
+ sdp: string;
22
+ peerId: string;
23
+ };
24
+ export type AnswerMessage = {
25
+ type: 'answer';
26
+ sdp: string;
27
+ peerId: string;
28
+ };
29
+ export type IceCandidateMessage = {
30
+ type: 'ice-candidate';
31
+ candidate: unknown;
32
+ peerId: string;
33
+ };
34
+ export type AgentJoinMessage = {
35
+ type: 'agent-join';
36
+ roomId: string;
37
+ agentId: string;
38
+ name: string;
39
+ };
40
+ export type AgentGestureMessage = {
41
+ type: 'agent-gesture';
42
+ agentId: string;
43
+ gesture: string;
44
+ };
45
+ export type AgentQueueMessage = {
46
+ type: 'agent-queue';
47
+ agentId: string;
48
+ action: 'add' | 'release' | 'dismiss';
49
+ itemId: string;
50
+ title?: string;
51
+ };
52
+ export type ChatMessage = {
53
+ type: 'chat';
54
+ senderId: string;
55
+ target: 'room' | 'host' | 'subhost' | string;
56
+ text: string;
57
+ };
58
+ /**
59
+ * Consent-Level hier als Literal-Union, NICHT als Import von S7.
60
+ * Bewusste Schicht-Isolation: S1 hängt nicht von S7 ab.
61
+ * Wenn ein 4. Level hinzukommt → shared Type in types.ts nötig.
62
+ */
63
+ export type ConsentUpdateMessage = {
64
+ type: 'consent-update';
65
+ userId: string;
66
+ feature: string;
67
+ level: 'observe' | 'assist' | 'act';
68
+ };
69
+ export type SyncStateMessage = {
70
+ type: 'sync-state';
71
+ payload: unknown;
72
+ };
73
+ export type SignalingMessage = JoinMessage | LeaveMessage | OfferMessage | AnswerMessage | IceCandidateMessage | AgentJoinMessage | AgentGestureMessage | AgentQueueMessage | ChatMessage | ConsentUpdateMessage | SyncStateMessage;
74
+ /** Handler für eingehende Signaling-Nachrichten */
75
+ export type SignalingHandler = (message: SignalingMessage, senderId: string) => void;
76
+ /** Type guard — prüft gegen bekannte 11 Typen */
77
+ export declare function isSignalingMessage(obj: unknown): obj is SignalingMessage;
78
+ //# sourceMappingURL=signaling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signaling.d.ts","sourceRoot":"","sources":["../../src/s01-realtime/signaling.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAA2C,MAAM,YAAY,CAAA;AAInF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,eAAe,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,eAAe,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;IAC5C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAID,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,oBAAoB,GACpB,gBAAgB,CAAA;AAEpB,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;AAQpF,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,gBAAgB,CAIxE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * S1 — Signaling Messages
3
+ *
4
+ * Alle Signaling-Nachrichten als typisierte Events.
5
+ * Generalisiert aus 0room0's 11 Message-Typen + 14 mediasoup-Typen.
6
+ * Hier als Foundation Event-Subtypen — transportagnostisch.
7
+ */
8
+ const SIGNALING_TYPES = new Set([
9
+ 'join', 'leave', 'offer', 'answer', 'ice-candidate',
10
+ 'agent-join', 'agent-gesture', 'agent-queue',
11
+ 'chat', 'consent-update', 'sync-state',
12
+ ]);
13
+ /** Type guard — prüft gegen bekannte 11 Typen */
14
+ export function isSignalingMessage(obj) {
15
+ if (typeof obj !== 'object' || obj === null)
16
+ return false;
17
+ const typed = obj;
18
+ return typeof typed.type === 'string' && SIGNALING_TYPES.has(typed.type);
19
+ }
20
+ //# sourceMappingURL=signaling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signaling.js","sourceRoot":"","sources":["../../src/s01-realtime/signaling.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyGH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe;IACnD,YAAY,EAAE,eAAe,EAAE,aAAa;IAC5C,MAAM,EAAE,gBAAgB,EAAE,YAAY;CACvC,CAAC,CAAA;AAEF,iDAAiD;AACjD,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACzD,MAAM,KAAK,GAAG,GAA8B,CAAA;IAC5C,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC1E,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * S1 — Realtime Types
3
+ *
4
+ * Generalisiert aus 0room0's contracts/signaling.ts + contracts/mediasoup.ts.
5
+ * Keine mediasoup-Dependency. Reine Types.
6
+ */
7
+ export type MediaKind = 'audio' | 'video';
8
+ export type TransportDirection = 'send' | 'recv';
9
+ export type MediaTrack = {
10
+ id: string;
11
+ kind: MediaKind;
12
+ peerId: string;
13
+ label?: string;
14
+ };
15
+ export type ProducerInfo = {
16
+ id: string;
17
+ peerId: string;
18
+ kind: MediaKind;
19
+ };
20
+ export type ConsumerInfo = {
21
+ id: string;
22
+ producerId: string;
23
+ peerId: string;
24
+ kind: MediaKind;
25
+ };
26
+ export type TransportInfo = {
27
+ id: string;
28
+ direction: TransportDirection;
29
+ peerId: string;
30
+ iceParameters: unknown;
31
+ iceCandidates: unknown[];
32
+ dtlsParameters: unknown;
33
+ };
34
+ export type PeerRole = 'host' | 'subhost' | 'participant' | 'agent';
35
+ export type PeerInfo = {
36
+ id: string;
37
+ name: string;
38
+ role: PeerRole;
39
+ };
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/s01-realtime/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;AACzC,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAA;AAEhD,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,OAAO,EAAE,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAID,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAA;AAEnE,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * S1 — Realtime Types
3
+ *
4
+ * Generalisiert aus 0room0's contracts/signaling.ts + contracts/mediasoup.ts.
5
+ * Keine mediasoup-Dependency. Reine Types.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/s01-realtime/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,3 @@
1
+ export { type UpdatePayload, type SharedDoc, type SharedDocWithAccessors, type SharedArray, type SharedMap, } from './types.js';
2
+ export { createYjsDoc } from './yjs.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s02-crdt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { createYjsDoc } from './yjs.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/s02-crdt/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * S2 — CRDT Types
3
+ *
4
+ * Interface first (K5). Yjs ist eine Implementierung, nicht die Definition.
5
+ * SharedDoc abstrahiert über Yjs, Automerge, diamond-types.
6
+ *
7
+ * 4 Methoden: applyUpdate, getState, onChange, destroy.
8
+ */
9
+ /** Opake Update-Payload. Implementierungsabhängig (Yjs = Uint8Array). */
10
+ export type UpdatePayload = Uint8Array;
11
+ /** Shared Document Interface — CRDT-agnostisch */
12
+ export type SharedDoc = {
13
+ /** Apply a remote update */
14
+ applyUpdate(update: UpdatePayload): void;
15
+ /** Get the full serialized state for sync */
16
+ getState(): UpdatePayload;
17
+ /** Subscribe to local changes */
18
+ onChange(handler: (update: UpdatePayload) => void): () => void;
19
+ /** Cleanup */
20
+ destroy(): void;
21
+ };
22
+ /** Typed accessors for structured data within the doc */
23
+ export type SharedArray<T> = {
24
+ push(item: T): void;
25
+ toArray(): T[];
26
+ readonly length: number;
27
+ onChange(handler: () => void): () => void;
28
+ };
29
+ export type SharedMap<V> = {
30
+ set(key: string, value: V): void;
31
+ get(key: string): V | undefined;
32
+ delete(key: string): void;
33
+ has(key: string): boolean;
34
+ entries(): [string, V][];
35
+ onChange(handler: () => void): () => void;
36
+ };
37
+ /** Factory result — doc + typed accessors */
38
+ export type SharedDocWithAccessors = {
39
+ doc: SharedDoc;
40
+ /** Append-only log (Ledger, Chat) */
41
+ getArray<T>(name: string): SharedArray<T>;
42
+ /** Key-Value state (Gestures, Consent, Queue) */
43
+ getMap<V>(name: string): SharedMap<V>;
44
+ };
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/s02-crdt/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,UAAU,CAAA;AAEtC,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG;IACtB,4BAA4B;IAC5B,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,6CAA6C;IAC7C,QAAQ,IAAI,aAAa,CAAA;IACzB,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAC9D,cAAc;IACd,OAAO,IAAI,IAAI,CAAA;CAChB,CAAA;AAED,yDAAyD;AACzD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,OAAO,IAAI,CAAC,EAAE,CAAA;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC1C,CAAA;AAED,6CAA6C;AAC7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,SAAS,CAAA;IACd,qCAAqC;IACrC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IACzC,iDAAiD;IACjD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;CACtC,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * S2 — CRDT Types
3
+ *
4
+ * Interface first (K5). Yjs ist eine Implementierung, nicht die Definition.
5
+ * SharedDoc abstrahiert über Yjs, Automerge, diamond-types.
6
+ *
7
+ * 4 Methoden: applyUpdate, getState, onChange, destroy.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/s02-crdt/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * S2 — Yjs Implementation
3
+ *
4
+ * Erste Implementierung von SharedDoc. Yjs ist die Referenz-CRDT-Library.
5
+ * Alles yjs-Spezifische bleibt in dieser Datei.
6
+ */
7
+ import type { SharedDocWithAccessors } from './types.js';
8
+ export declare function createYjsDoc(): SharedDocWithAccessors;
9
+ //# sourceMappingURL=yjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yjs.d.ts","sourceRoot":"","sources":["../../src/s02-crdt/yjs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAa,sBAAsB,EAAyC,MAAM,YAAY,CAAA;AAE1G,wBAAgB,YAAY,IAAI,sBAAsB,CAgErD"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * S2 — Yjs Implementation
3
+ *
4
+ * Erste Implementierung von SharedDoc. Yjs ist die Referenz-CRDT-Library.
5
+ * Alles yjs-Spezifische bleibt in dieser Datei.
6
+ */
7
+ import * as Y from 'yjs';
8
+ export function createYjsDoc() {
9
+ const ydoc = new Y.Doc();
10
+ const handlers = [];
11
+ ydoc.on('update', (update) => {
12
+ for (const handler of handlers)
13
+ handler(update);
14
+ });
15
+ const doc = {
16
+ applyUpdate(update) {
17
+ Y.applyUpdate(ydoc, update);
18
+ },
19
+ getState() {
20
+ return Y.encodeStateAsUpdate(ydoc);
21
+ },
22
+ onChange(handler) {
23
+ handlers.push(handler);
24
+ return () => {
25
+ const idx = handlers.indexOf(handler);
26
+ if (idx >= 0)
27
+ handlers.splice(idx, 1);
28
+ };
29
+ },
30
+ destroy() {
31
+ handlers.length = 0;
32
+ ydoc.destroy();
33
+ },
34
+ };
35
+ return {
36
+ doc,
37
+ getArray(name) {
38
+ const yarray = ydoc.getArray(name);
39
+ return {
40
+ push(item) { yarray.push([item]); },
41
+ toArray() { return yarray.toArray(); },
42
+ get length() { return yarray.length; },
43
+ onChange(handler) {
44
+ const obs = () => handler();
45
+ yarray.observe(obs);
46
+ return () => yarray.unobserve(obs);
47
+ },
48
+ };
49
+ },
50
+ getMap(name) {
51
+ const ymap = ydoc.getMap(name);
52
+ return {
53
+ set(key, value) { ymap.set(key, value); },
54
+ get(key) { return ymap.get(key); },
55
+ delete(key) { ymap.delete(key); },
56
+ has(key) { return ymap.has(key); },
57
+ entries() { return Array.from(ymap.entries()); },
58
+ onChange(handler) {
59
+ const obs = () => handler();
60
+ ymap.observe(obs);
61
+ return () => ymap.unobserve(obs);
62
+ },
63
+ };
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=yjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yjs.js","sourceRoot":"","sources":["../../src/s02-crdt/yjs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { type CodecType, type CodecInfo, type Segment, type PlaylistEntry, type StreamConfig, type Playlist, type Segmenter, type PlaylistManager, } from './types.js';
2
+ export { createPlaylistManager } from './playlist.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s03-streaming/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { createPlaylistManager } from './playlist.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/s03-streaming/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * S3 — Playlist Manager
3
+ *
4
+ * Verwaltet HLS-kompatible Segment-Listen. Erzeugt M3U8-Playlists.
5
+ */
6
+ import type { PlaylistManager, StreamConfig } from './types.js';
7
+ export declare function createPlaylistManager(sessionId: string, config: StreamConfig): PlaylistManager;
8
+ //# sourceMappingURL=playlist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlist.d.ts","sourceRoot":"","sources":["../../src/s03-streaming/playlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAA2B,eAAe,EAAW,YAAY,EAAE,MAAM,YAAY,CAAA;AAEjG,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,eAAe,CAiD9F"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * S3 — Playlist Manager
3
+ *
4
+ * Verwaltet HLS-kompatible Segment-Listen. Erzeugt M3U8-Playlists.
5
+ */
6
+ export function createPlaylistManager(sessionId, config) {
7
+ const entries = [];
8
+ let live = true;
9
+ return {
10
+ add(segment) {
11
+ entries.push({ segment });
12
+ // Sliding Window für Live-Streams
13
+ if (config.maxSegments > 0 && entries.length > config.maxSegments) {
14
+ entries.shift();
15
+ }
16
+ },
17
+ remove(segmentId) {
18
+ const idx = entries.findIndex(e => e.segment.id === segmentId);
19
+ if (idx >= 0)
20
+ entries.splice(idx, 1);
21
+ },
22
+ get() {
23
+ const totalDurationMs = entries.reduce((sum, e) => sum + e.segment.durationMs, 0);
24
+ return { sessionId, config, entries: [...entries], totalDurationMs, live };
25
+ },
26
+ toM3U8() {
27
+ const targetDuration = Math.ceil(config.segmentDurationMs / 1000);
28
+ const lines = [
29
+ '#EXTM3U',
30
+ `#EXT-X-VERSION:3`,
31
+ `#EXT-X-TARGETDURATION:${targetDuration}`,
32
+ `#EXT-X-MEDIA-SEQUENCE:${entries[0]?.segment.index ?? 0}`,
33
+ ];
34
+ for (const entry of entries) {
35
+ if (entry.discontinuity) {
36
+ lines.push('#EXT-X-DISCONTINUITY');
37
+ }
38
+ const duration = (entry.segment.durationMs / 1000).toFixed(3);
39
+ lines.push(`#EXTINF:${duration},`);
40
+ lines.push(entry.segment.uri);
41
+ }
42
+ if (!live) {
43
+ lines.push('#EXT-X-ENDLIST');
44
+ }
45
+ return lines.join('\n');
46
+ },
47
+ };
48
+ }
49
+ //# sourceMappingURL=playlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlist.js","sourceRoot":"","sources":["../../src/s03-streaming/playlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,MAAoB;IAC3E,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,IAAI,IAAI,GAAG,IAAI,CAAA;IAEf,OAAO;QACL,GAAG,CAAC,OAAO;YACT,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;YAEzB,kCAAkC;YAClC,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAClE,OAAO,CAAC,KAAK,EAAE,CAAA;YACjB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,SAAS;YACd,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;YAC9D,IAAI,GAAG,IAAI,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACtC,CAAC;QAED,GAAG;YACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;YACjF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAA;QAC5E,CAAC;QAED,MAAM;YACJ,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;YACjE,MAAM,KAAK,GAAG;gBACZ,SAAS;gBACT,kBAAkB;gBAClB,yBAAyB,cAAc,EAAE;gBACzC,yBAAyB,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE;aAC1D,CAAA;YAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACxB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;gBACpC,CAAC;gBACD,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBAC7D,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,GAAG,CAAC,CAAA;gBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC9B,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * S3 — Streaming Types
3
+ *
4
+ * HLS/DASH Segmentierung, Codec-Konfiguration, Playlist-Management.
5
+ * Interface first — Implementierung ist domain-spezifisch (Meeting-Replays, Media-Delivery).
6
+ */
7
+ export type CodecType = 'opus' | 'aac' | 'av1' | 'h264' | 'vp9' | (string & {});
8
+ export type CodecInfo = {
9
+ type: CodecType;
10
+ sampleRate?: number;
11
+ channels?: number;
12
+ bitrate?: number;
13
+ width?: number;
14
+ height?: number;
15
+ fps?: number;
16
+ };
17
+ export type Segment = {
18
+ id: string;
19
+ index: number;
20
+ startMs: number;
21
+ endMs: number;
22
+ durationMs: number;
23
+ sizeBytes: number;
24
+ /** Storage-Pfad oder URL */
25
+ uri: string;
26
+ codec: CodecInfo;
27
+ };
28
+ export type PlaylistEntry = {
29
+ segment: Segment;
30
+ /** Diskontinuität — neuer Codec/Resolution nach diesem Punkt */
31
+ discontinuity?: boolean;
32
+ };
33
+ export type StreamConfig = {
34
+ /** Segment-Dauer in ms. Default: 4000 (4s, HLS Standard) */
35
+ segmentDurationMs: number;
36
+ /** Codec für Audio */
37
+ audioCodec: CodecInfo;
38
+ /** Codec für Video (optional — Audio-only Meetings) */
39
+ videoCodec?: CodecInfo;
40
+ /** Max Segmente im Sliding Window (Live). 0 = kein Limit (VOD). */
41
+ maxSegments: number;
42
+ };
43
+ export type Playlist = {
44
+ sessionId: string;
45
+ config: StreamConfig;
46
+ entries: PlaylistEntry[];
47
+ /** Gesamtdauer in ms */
48
+ totalDurationMs: number;
49
+ /** Ist der Stream noch live? */
50
+ live: boolean;
51
+ };
52
+ /** Segmenter Interface — nimmt rohe Media-Daten, produziert Segmente */
53
+ export type Segmenter = {
54
+ /** Füge rohe Audio/Video-Daten hinzu */
55
+ feed(data: ArrayBuffer, timestampMs: number): Segment | null;
56
+ /** Erzwinge Segment-Abschluss (z.B. bei Pause oder Session-Ende) */
57
+ flush(): Segment | null;
58
+ /** Aktuelle Konfiguration */
59
+ config(): StreamConfig;
60
+ };
61
+ /** Playlist-Manager — verwaltet die Segment-Liste */
62
+ export type PlaylistManager = {
63
+ add(segment: Segment): void;
64
+ remove(segmentId: string): void;
65
+ get(): Playlist;
66
+ /** HLS M3U8 Format */
67
+ toM3U8(): string;
68
+ };
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/s03-streaming/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAE/E,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,SAAS,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB;IACtB,UAAU,EAAE,SAAS,CAAA;IACrB,uDAAuD;IACvD,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,wBAAwB;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG;IACtB,wCAAwC;IACxC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;IAC5D,oEAAoE;IACpE,KAAK,IAAI,OAAO,GAAG,IAAI,CAAA;IACvB,6BAA6B;IAC7B,MAAM,IAAI,YAAY,CAAA;CACvB,CAAA;AAED,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,GAAG,IAAI,QAAQ,CAAA;IACf,sBAAsB;IACtB,MAAM,IAAI,MAAM,CAAA;CACjB,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * S3 — Streaming Types
3
+ *
4
+ * HLS/DASH Segmentierung, Codec-Konfiguration, Playlist-Management.
5
+ * Interface first — Implementierung ist domain-spezifisch (Meeting-Replays, Media-Delivery).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/s03-streaming/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,3 @@
1
+ export { type MessageTarget, type ChatMsg, type BriefingContent, type BriefingMsg, type NotificationMsg, type ChannelMessage, type Channel, } from './types.js';
2
+ export { serialize, deserialize, formatBriefing } from './serializer.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s04-messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,OAAO,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { serialize, deserialize, formatBriefing } from './serializer.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/s04-messaging/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * S4 — Message Serializer
3
+ *
4
+ * Plattformunabhängige Serialisierung. JSON in V1, Protobuf-ready.
5
+ */
6
+ import type { ChannelMessage, BriefingContent } from './types.js';
7
+ export declare function serialize(msg: ChannelMessage): string;
8
+ export declare function deserialize(raw: string): ChannelMessage | null;
9
+ /** Formatiert ein Briefing als menschenlesbaren Text (für Telegram/WhatsApp) */
10
+ export declare function formatBriefing(content: BriefingContent): string;
11
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/s04-messaging/serializer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjE,wBAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAU9D;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA2B/D"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * S4 — Message Serializer
3
+ *
4
+ * Plattformunabhängige Serialisierung. JSON in V1, Protobuf-ready.
5
+ */
6
+ export function serialize(msg) {
7
+ return JSON.stringify(msg);
8
+ }
9
+ export function deserialize(raw) {
10
+ try {
11
+ const parsed = JSON.parse(raw);
12
+ if (parsed.kind === 'chat' || parsed.kind === 'briefing' || parsed.kind === 'notification') {
13
+ return parsed;
14
+ }
15
+ return null;
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ /** Formatiert ein Briefing als menschenlesbaren Text (für Telegram/WhatsApp) */
22
+ export function formatBriefing(content) {
23
+ const parts = [`*${content.headline}*\n`];
24
+ if (content.decisions.length > 0) {
25
+ parts.push('Entscheidungen:');
26
+ content.decisions.forEach((d, i) => parts.push(` ${i + 1}. ${d}`));
27
+ parts.push('');
28
+ }
29
+ if (content.actionItems.length > 0) {
30
+ parts.push('Action Items:');
31
+ content.actionItems.forEach((a, i) => parts.push(` ${i + 1}. ${a}`));
32
+ parts.push('');
33
+ }
34
+ if (content.conflicts && content.conflicts.length > 0) {
35
+ parts.push('Konflikte:');
36
+ content.conflicts.forEach(c => parts.push(` - ${c}`));
37
+ parts.push('');
38
+ }
39
+ if (content.nextSteps && content.nextSteps.length > 0) {
40
+ parts.push('Nächste Schritte:');
41
+ content.nextSteps.forEach(s => parts.push(` - ${s}`));
42
+ }
43
+ return parts.join('\n');
44
+ }
45
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/s04-messaging/serializer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,SAAS,CAAC,GAAmB;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAA;QACzD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC3F,OAAO,MAAmC,CAAA;QAC5C,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,MAAM,KAAK,GAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAA;IAEnD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC7B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3B,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC/B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}