aether-wv 0.0.0-stage → 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 (106) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +313 -2
  3. package/bin/aetherc.js +4 -0
  4. package/dist/index.d.ts +5 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +5 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/packages/client/src/client.d.ts +26 -0
  9. package/dist/packages/client/src/client.d.ts.map +1 -0
  10. package/dist/packages/client/src/client.js +58 -0
  11. package/dist/packages/client/src/client.js.map +1 -0
  12. package/dist/packages/client/src/index.d.ts +8 -0
  13. package/dist/packages/client/src/index.d.ts.map +1 -0
  14. package/dist/packages/client/src/index.js +8 -0
  15. package/dist/packages/client/src/index.js.map +1 -0
  16. package/dist/packages/client/src/transports/android.d.ts +10 -0
  17. package/dist/packages/client/src/transports/android.d.ts.map +1 -0
  18. package/dist/packages/client/src/transports/android.js +38 -0
  19. package/dist/packages/client/src/transports/android.js.map +1 -0
  20. package/dist/packages/client/src/transports/electron.d.ts +39 -0
  21. package/dist/packages/client/src/transports/electron.d.ts.map +1 -0
  22. package/dist/packages/client/src/transports/electron.js +51 -0
  23. package/dist/packages/client/src/transports/electron.js.map +1 -0
  24. package/dist/packages/client/src/transports/ios.d.ts +9 -0
  25. package/dist/packages/client/src/transports/ios.d.ts.map +1 -0
  26. package/dist/packages/client/src/transports/ios.js +37 -0
  27. package/dist/packages/client/src/transports/ios.js.map +1 -0
  28. package/dist/packages/client/src/transports/memory.d.ts +10 -0
  29. package/dist/packages/client/src/transports/memory.d.ts.map +1 -0
  30. package/dist/packages/client/src/transports/memory.js +29 -0
  31. package/dist/packages/client/src/transports/memory.js.map +1 -0
  32. package/dist/packages/client/src/transports/transport.d.ts +3 -0
  33. package/dist/packages/client/src/transports/transport.d.ts.map +1 -0
  34. package/dist/packages/client/src/transports/transport.js +2 -0
  35. package/dist/packages/client/src/transports/transport.js.map +1 -0
  36. package/dist/packages/client/src/transports/webview2.d.ts +25 -0
  37. package/dist/packages/client/src/transports/webview2.d.ts.map +1 -0
  38. package/dist/packages/client/src/transports/webview2.js +45 -0
  39. package/dist/packages/client/src/transports/webview2.js.map +1 -0
  40. package/dist/packages/compiler/src/ast.d.ts +27 -0
  41. package/dist/packages/compiler/src/ast.d.ts.map +1 -0
  42. package/dist/packages/compiler/src/ast.js +2 -0
  43. package/dist/packages/compiler/src/ast.js.map +1 -0
  44. package/dist/packages/compiler/src/cli.d.ts +2 -0
  45. package/dist/packages/compiler/src/cli.d.ts.map +1 -0
  46. package/dist/packages/compiler/src/cli.js +68 -0
  47. package/dist/packages/compiler/src/cli.js.map +1 -0
  48. package/dist/packages/compiler/src/codegen-kotlin.d.ts +3 -0
  49. package/dist/packages/compiler/src/codegen-kotlin.d.ts.map +1 -0
  50. package/dist/packages/compiler/src/codegen-kotlin.js +119 -0
  51. package/dist/packages/compiler/src/codegen-kotlin.js.map +1 -0
  52. package/dist/packages/compiler/src/codegen-swift.d.ts +3 -0
  53. package/dist/packages/compiler/src/codegen-swift.d.ts.map +1 -0
  54. package/dist/packages/compiler/src/codegen-swift.js +129 -0
  55. package/dist/packages/compiler/src/codegen-swift.js.map +1 -0
  56. package/dist/packages/compiler/src/codegen-ts.d.ts +3 -0
  57. package/dist/packages/compiler/src/codegen-ts.d.ts.map +1 -0
  58. package/dist/packages/compiler/src/codegen-ts.js +121 -0
  59. package/dist/packages/compiler/src/codegen-ts.js.map +1 -0
  60. package/dist/packages/compiler/src/index.d.ts +7 -0
  61. package/dist/packages/compiler/src/index.d.ts.map +1 -0
  62. package/dist/packages/compiler/src/index.js +7 -0
  63. package/dist/packages/compiler/src/index.js.map +1 -0
  64. package/dist/packages/compiler/src/parser.d.ts +3 -0
  65. package/dist/packages/compiler/src/parser.d.ts.map +1 -0
  66. package/dist/packages/compiler/src/parser.js +80 -0
  67. package/dist/packages/compiler/src/parser.js.map +1 -0
  68. package/dist/packages/core/src/index.d.ts +7 -0
  69. package/dist/packages/core/src/index.d.ts.map +1 -0
  70. package/dist/packages/core/src/index.js +7 -0
  71. package/dist/packages/core/src/index.js.map +1 -0
  72. package/dist/packages/core/src/multiplexer/backpressure.d.ts +41 -0
  73. package/dist/packages/core/src/multiplexer/backpressure.d.ts.map +1 -0
  74. package/dist/packages/core/src/multiplexer/backpressure.js +80 -0
  75. package/dist/packages/core/src/multiplexer/backpressure.js.map +1 -0
  76. package/dist/packages/core/src/multiplexer/multiplexer.d.ts +36 -0
  77. package/dist/packages/core/src/multiplexer/multiplexer.d.ts.map +1 -0
  78. package/dist/packages/core/src/multiplexer/multiplexer.js +238 -0
  79. package/dist/packages/core/src/multiplexer/multiplexer.js.map +1 -0
  80. package/dist/packages/core/src/protocol/frames.d.ts +46 -0
  81. package/dist/packages/core/src/protocol/frames.d.ts.map +1 -0
  82. package/dist/packages/core/src/protocol/frames.js +89 -0
  83. package/dist/packages/core/src/protocol/frames.js.map +1 -0
  84. package/dist/packages/core/src/protocol/serializer.d.ts +38 -0
  85. package/dist/packages/core/src/protocol/serializer.d.ts.map +1 -0
  86. package/dist/packages/core/src/protocol/serializer.js +145 -0
  87. package/dist/packages/core/src/protocol/serializer.js.map +1 -0
  88. package/dist/packages/core/src/security/capability.d.ts +18 -0
  89. package/dist/packages/core/src/security/capability.d.ts.map +1 -0
  90. package/dist/packages/core/src/security/capability.js +56 -0
  91. package/dist/packages/core/src/security/capability.js.map +1 -0
  92. package/dist/packages/core/src/session/session.d.ts +29 -0
  93. package/dist/packages/core/src/session/session.d.ts.map +1 -0
  94. package/dist/packages/core/src/session/session.js +52 -0
  95. package/dist/packages/core/src/session/session.js.map +1 -0
  96. package/dist/packages/native-host/src/host.d.ts +30 -0
  97. package/dist/packages/native-host/src/host.d.ts.map +1 -0
  98. package/dist/packages/native-host/src/host.js +232 -0
  99. package/dist/packages/native-host/src/host.js.map +1 -0
  100. package/dist/packages/native-host/src/index.d.ts +2 -0
  101. package/dist/packages/native-host/src/index.d.ts.map +1 -0
  102. package/dist/packages/native-host/src/index.js +2 -0
  103. package/dist/packages/native-host/src/index.js.map +1 -0
  104. package/package.json +37 -4
  105. package/packages/platform-templates/android/AetherNativeDriver.kt +57 -0
  106. package/packages/platform-templates/ios/AetherNativeDriver.swift +78 -0
@@ -0,0 +1,238 @@
1
+ import { FrameType, FrameFlags, encodeFrame, decodeFrame, } from '../protocol/frames.js';
2
+ import { StreamCreditController } from './backpressure.js';
3
+ export class AetherMultiplexer {
4
+ transport;
5
+ nextStreamId = 1;
6
+ nextSequenceId = 1;
7
+ // Pending unary RPC requests: streamId -> { resolve, reject, timeout }
8
+ pendingRpc = new Map();
9
+ // Active incoming streams: streamId -> { queue, resolvers, controller, isClosed }
10
+ activeStreams = new Map();
11
+ // Active outgoing streams (producers): streamId -> controller
12
+ outgoingStreams = new Map();
13
+ constructor(transport) {
14
+ this.transport = transport;
15
+ this.transport.onReceive((data) => this.handleRawBytes(data));
16
+ }
17
+ handleRawBytes(bytes) {
18
+ const frame = decodeFrame(bytes);
19
+ this.handleFrame(frame);
20
+ }
21
+ handleFrame(frame) {
22
+ switch (frame.type) {
23
+ case FrameType.RPC_RESP: {
24
+ const pending = this.pendingRpc.get(frame.streamId);
25
+ if (pending) {
26
+ if (pending.timer)
27
+ clearTimeout(pending.timer);
28
+ this.pendingRpc.delete(frame.streamId);
29
+ pending.resolve(frame.payload);
30
+ }
31
+ break;
32
+ }
33
+ case FrameType.ERROR: {
34
+ const errMsg = new TextDecoder().decode(frame.payload);
35
+ const err = new Error(`[AetherError] (Stream ${frame.streamId}): ${errMsg}`);
36
+ // Check if it's an RPC error
37
+ const pendingRpc = this.pendingRpc.get(frame.streamId);
38
+ if (pendingRpc) {
39
+ if (pendingRpc.timer)
40
+ clearTimeout(pendingRpc.timer);
41
+ this.pendingRpc.delete(frame.streamId);
42
+ pendingRpc.reject(err);
43
+ return;
44
+ }
45
+ // Check if it's a stream error
46
+ const stream = this.activeStreams.get(frame.streamId);
47
+ if (stream) {
48
+ stream.error = err;
49
+ stream.isClosed = true;
50
+ while (stream.waiters.length > 0) {
51
+ const w = stream.waiters.shift();
52
+ if (w)
53
+ w(Promise.reject(err));
54
+ }
55
+ this.activeStreams.delete(frame.streamId);
56
+ }
57
+ break;
58
+ }
59
+ case FrameType.STREAM_DATA: {
60
+ const stream = this.activeStreams.get(frame.streamId);
61
+ if (stream) {
62
+ if (stream.waiters.length > 0) {
63
+ const waiter = stream.waiters.shift();
64
+ waiter({ value: frame.payload, done: false });
65
+ }
66
+ else {
67
+ stream.queue.push(frame.payload);
68
+ }
69
+ // Check if we need to return credits via FLOW_ACK
70
+ const creditsToAck = stream.controller.onFrameProcessed();
71
+ if (creditsToAck > 0) {
72
+ this.sendAck(frame.streamId, creditsToAck);
73
+ }
74
+ }
75
+ break;
76
+ }
77
+ case FrameType.FLOW_ACK: {
78
+ // Consumer sent us credits to continue producing
79
+ const credits = new DataView(frame.payload.buffer, frame.payload.byteOffset).getUint32(0, false);
80
+ const producerController = this.outgoingStreams.get(frame.streamId);
81
+ if (producerController) {
82
+ producerController.grantCredits(credits);
83
+ }
84
+ break;
85
+ }
86
+ case FrameType.STREAM_CLOSE: {
87
+ const stream = this.activeStreams.get(frame.streamId);
88
+ if (stream) {
89
+ stream.isClosed = true;
90
+ while (stream.waiters.length > 0 && stream.queue.length > 0) {
91
+ const waiter = stream.waiters.shift();
92
+ waiter({ value: stream.queue.shift(), done: false });
93
+ }
94
+ while (stream.waiters.length > 0) {
95
+ const waiter = stream.waiters.shift();
96
+ waiter({ value: undefined, done: true });
97
+ }
98
+ if (stream.queue.length === 0) {
99
+ this.activeStreams.delete(frame.streamId);
100
+ }
101
+ }
102
+ break;
103
+ }
104
+ case FrameType.STREAM_CANCEL: {
105
+ const outgoing = this.outgoingStreams.get(frame.streamId);
106
+ if (outgoing) {
107
+ outgoing.cancel();
108
+ this.outgoingStreams.delete(frame.streamId);
109
+ }
110
+ break;
111
+ }
112
+ }
113
+ }
114
+ sendAck(streamId, credits) {
115
+ const ackPayload = new Uint8Array(4);
116
+ new DataView(ackPayload.buffer).setUint32(0, credits, false);
117
+ const frame = {
118
+ type: FrameType.FLOW_ACK,
119
+ flags: FrameFlags.NONE,
120
+ streamId,
121
+ sequenceId: this.nextSequenceId++,
122
+ payload: ackPayload,
123
+ };
124
+ this.send(frame);
125
+ }
126
+ send(frame) {
127
+ const bytes = encodeFrame(frame);
128
+ this.transport.send(bytes);
129
+ }
130
+ /**
131
+ * Execute Unary RPC Call
132
+ */
133
+ async invokeRpc(payload, timeoutMs = 15000) {
134
+ const streamId = this.nextStreamId++;
135
+ const sequenceId = this.nextSequenceId++;
136
+ const frame = {
137
+ type: FrameType.RPC_REQ,
138
+ flags: FrameFlags.NONE,
139
+ streamId,
140
+ sequenceId,
141
+ payload,
142
+ };
143
+ return new Promise((resolve, reject) => {
144
+ const timer = setTimeout(() => {
145
+ this.pendingRpc.delete(streamId);
146
+ reject(new Error(`[AetherRpc] Request timeout after ${timeoutMs}ms (Stream ${streamId})`));
147
+ }, timeoutMs);
148
+ this.pendingRpc.set(streamId, { resolve, reject, timer });
149
+ this.send(frame);
150
+ });
151
+ }
152
+ /**
153
+ * Open reactive stream and return an AsyncIterableIterator with backpressure
154
+ */
155
+ openStream(payload, signal) {
156
+ const streamId = this.nextStreamId++;
157
+ const sequenceId = this.nextSequenceId++;
158
+ const controller = new StreamCreditController({ initialCredits: 8, ackBatchSize: 4 });
159
+ const streamState = {
160
+ queue: [],
161
+ waiters: [],
162
+ controller,
163
+ isClosed: false,
164
+ };
165
+ this.activeStreams.set(streamId, streamState);
166
+ // Initial stream request
167
+ const initFrame = {
168
+ type: FrameType.STREAM_DATA,
169
+ flags: FrameFlags.NONE,
170
+ streamId,
171
+ sequenceId,
172
+ payload,
173
+ };
174
+ this.send(initFrame);
175
+ // Abort controller integration
176
+ if (signal) {
177
+ signal.addEventListener('abort', () => {
178
+ this.cancelStream(streamId);
179
+ });
180
+ }
181
+ const self = this;
182
+ return {
183
+ [Symbol.asyncIterator]() {
184
+ return this;
185
+ },
186
+ next() {
187
+ if (streamState.queue.length > 0) {
188
+ const val = streamState.queue.shift();
189
+ const creditsToAck = streamState.controller.onFrameProcessed();
190
+ if (creditsToAck > 0) {
191
+ self.sendAck(streamId, creditsToAck);
192
+ }
193
+ return Promise.resolve({ value: val, done: false });
194
+ }
195
+ if (streamState.isClosed) {
196
+ self.activeStreams.delete(streamId);
197
+ return Promise.resolve({ value: undefined, done: true });
198
+ }
199
+ return new Promise((resolve, reject) => {
200
+ streamState.waiters.push((res) => {
201
+ if (res.done) {
202
+ resolve(res);
203
+ }
204
+ else {
205
+ resolve(res);
206
+ }
207
+ });
208
+ });
209
+ },
210
+ return() {
211
+ self.cancelStream(streamId);
212
+ return Promise.resolve({ value: undefined, done: true });
213
+ },
214
+ };
215
+ }
216
+ cancelStream(streamId) {
217
+ const stream = this.activeStreams.get(streamId);
218
+ if (stream) {
219
+ stream.isClosed = true;
220
+ this.activeStreams.delete(streamId);
221
+ }
222
+ const cancelFrame = {
223
+ type: FrameType.STREAM_CANCEL,
224
+ flags: FrameFlags.NONE,
225
+ streamId,
226
+ sequenceId: this.nextSequenceId++,
227
+ payload: new Uint8Array(0),
228
+ };
229
+ this.send(cancelFrame);
230
+ }
231
+ registerProducerController(streamId, controller) {
232
+ this.outgoingStreams.set(streamId, controller);
233
+ }
234
+ unregisterProducerController(streamId) {
235
+ this.outgoingStreams.delete(streamId);
236
+ }
237
+ }
238
+ //# sourceMappingURL=multiplexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiplexer.js","sourceRoot":"","sources":["../../../../../packages/core/src/multiplexer/multiplexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Aether-WV Binary Wire Protocol Frame Definitions
3
+ *
4
+ * Fixed 16-byte header:
5
+ * [Magic (1B) | Version (1B) | Type (1B) | Flags (1B)]
6
+ * [Stream ID (4B) ]
7
+ * [Sequence ID (4B) ]
8
+ * [Payload Length (4B) ]
9
+ * [Payload Data (N Bytes) ]
10
+ */
11
+ export declare const AETHER_MAGIC = 174;
12
+ export declare const AETHER_VERSION = 1;
13
+ export declare const HEADER_SIZE = 16;
14
+ export declare enum FrameType {
15
+ RPC_REQ = 1,
16
+ RPC_RESP = 2,
17
+ STREAM_DATA = 3,
18
+ STREAM_CLOSE = 4,
19
+ STREAM_CANCEL = 5,
20
+ FLOW_ACK = 6,
21
+ ERROR = 7,
22
+ HANDSHAKE = 8,
23
+ HANDSHAKE_ACK = 9
24
+ }
25
+ export declare enum FrameFlags {
26
+ NONE = 0,
27
+ END_STREAM = 1,
28
+ COMPRESSED = 2,
29
+ RESUMED = 4
30
+ }
31
+ export interface AetherFrame {
32
+ type: FrameType;
33
+ flags: number;
34
+ streamId: number;
35
+ sequenceId: number;
36
+ payload: Uint8Array;
37
+ }
38
+ /**
39
+ * Serializes an AetherFrame into a contiguous binary Uint8Array
40
+ */
41
+ export declare function encodeFrame(frame: AetherFrame): Uint8Array;
42
+ /**
43
+ * Decodes a binary Uint8Array into an AetherFrame (zero-copy slice)
44
+ */
45
+ export declare function decodeFrame(data: Uint8Array): AetherFrame;
46
+ //# sourceMappingURL=frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/protocol/frames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,YAAY,MAAO,CAAC;AACjC,eAAO,MAAM,cAAc,IAAO,CAAC;AACnC,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,oBAAY,SAAS;IACnB,OAAO,IAAO;IACd,QAAQ,IAAO;IACf,WAAW,IAAO;IAClB,YAAY,IAAO;IACnB,aAAa,IAAO;IACpB,QAAQ,IAAO;IACf,KAAK,IAAO;IACZ,SAAS,IAAO;IAChB,aAAa,IAAO;CACrB;AAED,oBAAY,UAAU;IACpB,IAAI,IAAO;IACX,UAAU,IAAO;IACjB,UAAU,IAAO;IACjB,OAAO,IAAO;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAsB1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAqCzD"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Aether-WV Binary Wire Protocol Frame Definitions
3
+ *
4
+ * Fixed 16-byte header:
5
+ * [Magic (1B) | Version (1B) | Type (1B) | Flags (1B)]
6
+ * [Stream ID (4B) ]
7
+ * [Sequence ID (4B) ]
8
+ * [Payload Length (4B) ]
9
+ * [Payload Data (N Bytes) ]
10
+ */
11
+ export const AETHER_MAGIC = 0xAE;
12
+ export const AETHER_VERSION = 0x01;
13
+ export const HEADER_SIZE = 16;
14
+ export var FrameType;
15
+ (function (FrameType) {
16
+ FrameType[FrameType["RPC_REQ"] = 1] = "RPC_REQ";
17
+ FrameType[FrameType["RPC_RESP"] = 2] = "RPC_RESP";
18
+ FrameType[FrameType["STREAM_DATA"] = 3] = "STREAM_DATA";
19
+ FrameType[FrameType["STREAM_CLOSE"] = 4] = "STREAM_CLOSE";
20
+ FrameType[FrameType["STREAM_CANCEL"] = 5] = "STREAM_CANCEL";
21
+ FrameType[FrameType["FLOW_ACK"] = 6] = "FLOW_ACK";
22
+ FrameType[FrameType["ERROR"] = 7] = "ERROR";
23
+ FrameType[FrameType["HANDSHAKE"] = 8] = "HANDSHAKE";
24
+ FrameType[FrameType["HANDSHAKE_ACK"] = 9] = "HANDSHAKE_ACK";
25
+ })(FrameType || (FrameType = {}));
26
+ export var FrameFlags;
27
+ (function (FrameFlags) {
28
+ FrameFlags[FrameFlags["NONE"] = 0] = "NONE";
29
+ FrameFlags[FrameFlags["END_STREAM"] = 1] = "END_STREAM";
30
+ FrameFlags[FrameFlags["COMPRESSED"] = 2] = "COMPRESSED";
31
+ FrameFlags[FrameFlags["RESUMED"] = 4] = "RESUMED";
32
+ })(FrameFlags || (FrameFlags = {}));
33
+ /**
34
+ * Serializes an AetherFrame into a contiguous binary Uint8Array
35
+ */
36
+ export function encodeFrame(frame) {
37
+ const payloadLen = frame.payload.byteLength;
38
+ const totalLen = HEADER_SIZE + payloadLen;
39
+ const buffer = new ArrayBuffer(totalLen);
40
+ const view = new DataView(buffer);
41
+ // Header
42
+ view.setUint8(0, AETHER_MAGIC);
43
+ view.setUint8(1, AETHER_VERSION);
44
+ view.setUint8(2, frame.type);
45
+ view.setUint8(3, frame.flags);
46
+ view.setUint32(4, frame.streamId, false); // BigEndian
47
+ view.setUint32(8, frame.sequenceId, false);
48
+ view.setUint32(12, payloadLen, false);
49
+ // Payload
50
+ const out = new Uint8Array(buffer);
51
+ if (payloadLen > 0) {
52
+ out.set(frame.payload, HEADER_SIZE);
53
+ }
54
+ return out;
55
+ }
56
+ /**
57
+ * Decodes a binary Uint8Array into an AetherFrame (zero-copy slice)
58
+ */
59
+ export function decodeFrame(data) {
60
+ if (data.byteLength < HEADER_SIZE) {
61
+ throw new Error(`[Aether] Frame too short: ${data.byteLength} < ${HEADER_SIZE}`);
62
+ }
63
+ const view = new DataView(data.buffer, data.byteOffset, HEADER_SIZE);
64
+ const magic = view.getUint8(0);
65
+ if (magic !== AETHER_MAGIC) {
66
+ throw new Error(`[Aether] Invalid magic byte: 0x${magic.toString(16).toUpperCase()} != 0xAE`);
67
+ }
68
+ const version = view.getUint8(1);
69
+ if (version !== AETHER_VERSION) {
70
+ throw new Error(`[Aether] Unsupported protocol version: ${version}`);
71
+ }
72
+ const type = view.getUint8(2);
73
+ const flags = view.getUint8(3);
74
+ const streamId = view.getUint32(4, false);
75
+ const sequenceId = view.getUint32(8, false);
76
+ const payloadLength = view.getUint32(12, false);
77
+ if (data.byteLength < HEADER_SIZE + payloadLength) {
78
+ throw new Error(`[Aether] Incomplete frame payload: got ${data.byteLength - HEADER_SIZE}, expected ${payloadLength}`);
79
+ }
80
+ const payload = data.subarray(HEADER_SIZE, HEADER_SIZE + payloadLength);
81
+ return {
82
+ type,
83
+ flags,
84
+ streamId,
85
+ sequenceId,
86
+ payload,
87
+ };
88
+ }
89
+ //# sourceMappingURL=frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../../../packages/core/src/protocol/frames.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Aether-WV Compact Binary Serializer Primitives
3
+ * High-performance encoding/decoding without external dependencies
4
+ */
5
+ export declare class BinaryWriter {
6
+ private buffer;
7
+ private view;
8
+ private offset;
9
+ constructor(initialCapacity?: number);
10
+ private ensureCapacity;
11
+ writeUint8(val: number): this;
12
+ writeInt32(val: number): this;
13
+ writeUint32(val: number): this;
14
+ writeFloat32(val: number): this;
15
+ writeFloat64(val: number): this;
16
+ writeBigInt64(val: bigint): this;
17
+ writeBoolean(val: boolean): this;
18
+ writeBytes(bytes: Uint8Array): this;
19
+ writeString(str: string): this;
20
+ finish(): Uint8Array;
21
+ }
22
+ export declare class BinaryReader {
23
+ private buffer;
24
+ private view;
25
+ private offset;
26
+ constructor(buffer: Uint8Array);
27
+ get remaining(): number;
28
+ readUint8(): number;
29
+ readInt32(): number;
30
+ readUint32(): number;
31
+ readFloat32(): number;
32
+ readFloat64(): number;
33
+ readBigInt64(): bigint;
34
+ readBoolean(): boolean;
35
+ readBytes(): Uint8Array;
36
+ readString(): string;
37
+ }
38
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/protocol/serializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,MAAM,CAAa;gBAEf,eAAe,SAAM;IAKjC,OAAO,CAAC,cAAc;IAStB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO9B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO/B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO/B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQnC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK9B,MAAM,IAAI,UAAU;CAGrB;AAED,qBAAa,YAAY;IAIX,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,MAAM,CAAa;gBAEP,MAAM,EAAE,UAAU;IAItC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,SAAS,IAAI,MAAM;IAOnB,SAAS,IAAI,MAAM;IAOnB,UAAU,IAAI,MAAM;IAOpB,WAAW,IAAI,MAAM;IAOrB,WAAW,IAAI,MAAM;IAOrB,YAAY,IAAI,MAAM;IAOtB,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,UAAU;IAQvB,UAAU,IAAI,MAAM;CAIrB"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Aether-WV Compact Binary Serializer Primitives
3
+ * High-performance encoding/decoding without external dependencies
4
+ */
5
+ export class BinaryWriter {
6
+ buffer;
7
+ view;
8
+ offset = 0;
9
+ constructor(initialCapacity = 256) {
10
+ this.buffer = new Uint8Array(initialCapacity);
11
+ this.view = new DataView(this.buffer.buffer);
12
+ }
13
+ ensureCapacity(needed) {
14
+ if (this.offset + needed <= this.buffer.byteLength)
15
+ return;
16
+ let newCap = Math.max(this.buffer.byteLength * 2, this.offset + needed);
17
+ const newBuf = new Uint8Array(newCap);
18
+ newBuf.set(this.buffer);
19
+ this.buffer = newBuf;
20
+ this.view = new DataView(this.buffer.buffer);
21
+ }
22
+ writeUint8(val) {
23
+ this.ensureCapacity(1);
24
+ this.view.setUint8(this.offset, val);
25
+ this.offset += 1;
26
+ return this;
27
+ }
28
+ writeInt32(val) {
29
+ this.ensureCapacity(4);
30
+ this.view.setInt32(this.offset, val, false);
31
+ this.offset += 4;
32
+ return this;
33
+ }
34
+ writeUint32(val) {
35
+ this.ensureCapacity(4);
36
+ this.view.setUint32(this.offset, val, false);
37
+ this.offset += 4;
38
+ return this;
39
+ }
40
+ writeFloat32(val) {
41
+ this.ensureCapacity(4);
42
+ this.view.setFloat32(this.offset, val, false);
43
+ this.offset += 4;
44
+ return this;
45
+ }
46
+ writeFloat64(val) {
47
+ this.ensureCapacity(8);
48
+ this.view.setFloat64(this.offset, val, false);
49
+ this.offset += 8;
50
+ return this;
51
+ }
52
+ writeBigInt64(val) {
53
+ this.ensureCapacity(8);
54
+ this.view.setBigInt64(this.offset, val, false);
55
+ this.offset += 8;
56
+ return this;
57
+ }
58
+ writeBoolean(val) {
59
+ return this.writeUint8(val ? 1 : 0);
60
+ }
61
+ writeBytes(bytes) {
62
+ this.writeUint32(bytes.byteLength);
63
+ this.ensureCapacity(bytes.byteLength);
64
+ this.buffer.set(bytes, this.offset);
65
+ this.offset += bytes.byteLength;
66
+ return this;
67
+ }
68
+ writeString(str) {
69
+ const encoded = new TextEncoder().encode(str);
70
+ return this.writeBytes(encoded);
71
+ }
72
+ finish() {
73
+ return this.buffer.subarray(0, this.offset);
74
+ }
75
+ }
76
+ export class BinaryReader {
77
+ buffer;
78
+ view;
79
+ offset = 0;
80
+ constructor(buffer) {
81
+ this.buffer = buffer;
82
+ this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
83
+ }
84
+ get remaining() {
85
+ return this.buffer.byteLength - this.offset;
86
+ }
87
+ readUint8() {
88
+ if (this.remaining < 1)
89
+ throw new Error('[AetherReader] Underflow reading uint8');
90
+ const val = this.view.getUint8(this.offset);
91
+ this.offset += 1;
92
+ return val;
93
+ }
94
+ readInt32() {
95
+ if (this.remaining < 4)
96
+ throw new Error('[AetherReader] Underflow reading int32');
97
+ const val = this.view.getInt32(this.offset, false);
98
+ this.offset += 4;
99
+ return val;
100
+ }
101
+ readUint32() {
102
+ if (this.remaining < 4)
103
+ throw new Error('[AetherReader] Underflow reading uint32');
104
+ const val = this.view.getUint32(this.offset, false);
105
+ this.offset += 4;
106
+ return val;
107
+ }
108
+ readFloat32() {
109
+ if (this.remaining < 4)
110
+ throw new Error('[AetherReader] Underflow reading float32');
111
+ const val = this.view.getFloat32(this.offset, false);
112
+ this.offset += 4;
113
+ return val;
114
+ }
115
+ readFloat64() {
116
+ if (this.remaining < 8)
117
+ throw new Error('[AetherReader] Underflow reading float64');
118
+ const val = this.view.getFloat64(this.offset, false);
119
+ this.offset += 8;
120
+ return val;
121
+ }
122
+ readBigInt64() {
123
+ if (this.remaining < 8)
124
+ throw new Error('[AetherReader] Underflow reading bigint64');
125
+ const val = this.view.getBigInt64(this.offset, false);
126
+ this.offset += 8;
127
+ return val;
128
+ }
129
+ readBoolean() {
130
+ return this.readUint8() !== 0;
131
+ }
132
+ readBytes() {
133
+ const len = this.readUint32();
134
+ if (this.remaining < len)
135
+ throw new Error(`[AetherReader] Underflow reading bytes: ${this.remaining} < ${len}`);
136
+ const bytes = this.buffer.subarray(this.offset, this.offset + len);
137
+ this.offset += len;
138
+ return bytes;
139
+ }
140
+ readString() {
141
+ const bytes = this.readBytes();
142
+ return new TextDecoder().decode(bytes);
143
+ }
144
+ }
145
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../../../packages/core/src/protocol/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface CapabilityManifest {
2
+ origin: string;
3
+ allowedServices: string[];
4
+ expiresAt: number;
5
+ }
6
+ export declare class CapabilityGatekeeper {
7
+ private readonly secretKey;
8
+ constructor(secretKey?: string);
9
+ /**
10
+ * Generates a signed capability token for a trusted mini-app origin
11
+ */
12
+ generateToken(manifest: CapabilityManifest): string;
13
+ /**
14
+ * Verifies a capability token and checks if the service/method is authorized
15
+ */
16
+ authorize(token: string, currentOrigin: string, serviceName: string, methodName: string): boolean;
17
+ }
18
+ //# sourceMappingURL=capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/security/capability.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,GAAE,MAAiC;IAEzE;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM;IAOnD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;CAkClG"}