@labacacia/nps-sdk 1.0.0-alpha.13 → 1.0.0-alpha.15
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.
- package/CHANGELOG.cn.md +8 -133
- package/CHANGELOG.md +18 -180
- package/README.cn.md +63 -4
- package/README.md +63 -4
- package/dist/conformance.d.ts +55 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +100 -0
- package/dist/conformance.js.map +1 -0
- package/dist/core/codec.d.ts +5 -0
- package/dist/core/codec.d.ts.map +1 -1
- package/dist/core/codec.js +38 -1
- package/dist/core/codec.js.map +1 -1
- package/dist/core/codecs/ncp-codec.d.ts.map +1 -1
- package/dist/core/codecs/ncp-codec.js +20 -2
- package/dist/core/codecs/ncp-codec.js.map +1 -1
- package/dist/core/codecs/tier3-binary-vector-codec.d.ts +9 -0
- package/dist/core/codecs/tier3-binary-vector-codec.d.ts.map +1 -0
- package/dist/core/codecs/tier3-binary-vector-codec.js +155 -0
- package/dist/core/codecs/tier3-binary-vector-codec.js.map +1 -0
- package/dist/core/frame-header.d.ts +3 -1
- package/dist/core/frame-header.d.ts.map +1 -1
- package/dist/core/frame-header.js +2 -1
- package/dist/core/frame-header.js.map +1 -1
- package/dist/core/frames.d.ts +4 -1
- package/dist/core/frames.d.ts.map +1 -1
- package/dist/core/frames.js +3 -0
- package/dist/core/frames.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/ndp/federation.d.ts +8 -0
- package/dist/ndp/federation.d.ts.map +1 -0
- package/dist/ndp/federation.js +23 -0
- package/dist/ndp/federation.js.map +1 -0
- package/dist/ndp/frames.d.ts +4 -4
- package/dist/ndp/frames.d.ts.map +1 -1
- package/dist/ndp/frames.js +44 -9
- package/dist/ndp/frames.js.map +1 -1
- package/dist/ndp/index.d.ts +1 -0
- package/dist/ndp/index.d.ts.map +1 -1
- package/dist/ndp/index.js +1 -0
- package/dist/ndp/index.js.map +1 -1
- package/dist/ndp/ndp-error-codes.d.ts +2 -0
- package/dist/ndp/ndp-error-codes.d.ts.map +1 -1
- package/dist/ndp/ndp-error-codes.js +4 -0
- package/dist/ndp/ndp-error-codes.js.map +1 -1
- package/dist/ndp/validator.d.ts.map +1 -1
- package/dist/ndp/validator.js +5 -4
- package/dist/ndp/validator.js.map +1 -1
- package/dist/nip/ca-client.d.ts +93 -0
- package/dist/nip/ca-client.d.ts.map +1 -0
- package/dist/nip/ca-client.js +83 -0
- package/dist/nip/ca-client.js.map +1 -0
- package/dist/nip/frames.d.ts +18 -8
- package/dist/nip/frames.d.ts.map +1 -1
- package/dist/nip/frames.js +71 -19
- package/dist/nip/frames.js.map +1 -1
- package/dist/nip/index.d.ts +1 -0
- package/dist/nip/index.d.ts.map +1 -1
- package/dist/nip/index.js +1 -0
- package/dist/nip/index.js.map +1 -1
- package/dist/nwp/frames.d.ts.map +1 -1
- package/dist/nwp/frames.js +2 -1
- package/dist/nwp/frames.js.map +1 -1
- package/dist/nwp/index.d.ts +1 -0
- package/dist/nwp/index.d.ts.map +1 -1
- package/dist/nwp/index.js +1 -0
- package/dist/nwp/index.js.map +1 -1
- package/dist/nwp/native-server.d.ts +39 -0
- package/dist/nwp/native-server.d.ts.map +1 -0
- package/dist/nwp/native-server.js +131 -0
- package/dist/nwp/native-server.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export declare const NODE_L1: "NPS-Node-L1";
|
|
2
|
+
export declare const NODE_L2: "NPS-Node-L2";
|
|
3
|
+
export interface NpsConformanceCase {
|
|
4
|
+
id: string;
|
|
5
|
+
profile: string;
|
|
6
|
+
requirement: string;
|
|
7
|
+
title: string;
|
|
8
|
+
optional: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface NpsConformanceCaseResult {
|
|
11
|
+
id: string;
|
|
12
|
+
result: "pass" | "fail" | "skip" | "na" | string;
|
|
13
|
+
message?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface NpsConformanceActor {
|
|
16
|
+
name: string;
|
|
17
|
+
version: string;
|
|
18
|
+
nid?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface NpsConformanceManifest {
|
|
21
|
+
profile: string;
|
|
22
|
+
profile_version: string;
|
|
23
|
+
iut: NpsConformanceActor;
|
|
24
|
+
peer: NpsConformanceActor;
|
|
25
|
+
run: {
|
|
26
|
+
date: string;
|
|
27
|
+
environment: string;
|
|
28
|
+
};
|
|
29
|
+
cases: readonly NpsConformanceCaseResult[];
|
|
30
|
+
summary: {
|
|
31
|
+
pass: number;
|
|
32
|
+
fail: number;
|
|
33
|
+
skip: number;
|
|
34
|
+
na: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface NpsConformanceValidation {
|
|
38
|
+
valid: boolean;
|
|
39
|
+
message: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function createConformanceManifest(args: {
|
|
42
|
+
profile: string;
|
|
43
|
+
iutName: string;
|
|
44
|
+
iutVersion: string;
|
|
45
|
+
iutNid: string;
|
|
46
|
+
peerName: string;
|
|
47
|
+
peerVersion: string;
|
|
48
|
+
results: readonly NpsConformanceCaseResult[];
|
|
49
|
+
environment?: string;
|
|
50
|
+
}): NpsConformanceManifest;
|
|
51
|
+
export declare function catalogForProfile(profile: string): readonly NpsConformanceCase[];
|
|
52
|
+
export declare function validateConformanceManifest(manifest: NpsConformanceManifest): NpsConformanceValidation;
|
|
53
|
+
export declare const NODE_L1_CASES: readonly NpsConformanceCase[];
|
|
54
|
+
export declare const NODE_L2_CASES: readonly NpsConformanceCase[];
|
|
55
|
+
//# sourceMappingURL=conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,EAAG,aAAsB,CAAC;AAC9C,eAAO,MAAM,OAAO,EAAG,aAAsB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAW,MAAM,CAAC;IACpB,OAAO,EAAM,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAQ,MAAM,CAAC;IACpB,QAAQ,EAAK,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAQ,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAM,MAAM,CAAC;IACjB,OAAO,EAAG,MAAM,CAAC;IACjB,GAAG,CAAC,EAAM,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAU,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAc,mBAAmB,CAAC;IACrC,IAAI,EAAa,mBAAmB,CAAC;IACrC,GAAG,EAAc;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,KAAK,EAAY,SAAS,wBAAwB,EAAE,CAAC;IACrD,OAAO,EAAU;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAI,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,sBAAsB,CAgBzB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,kBAAkB,EAAE,CAIhF;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,wBAAwB,CA2BtG;AAMD,eAAO,MAAM,aAAa,EAAE,SAAS,kBAAkB,EAqBtD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAAS,kBAAkB,EAiBtD,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
export const NODE_L1 = "NPS-Node-L1";
|
|
4
|
+
export const NODE_L2 = "NPS-Node-L2";
|
|
5
|
+
export function createConformanceManifest(args) {
|
|
6
|
+
const cases = [...args.results];
|
|
7
|
+
return {
|
|
8
|
+
profile: args.profile,
|
|
9
|
+
profile_version: args.profile === NODE_L2 ? "0.3" : "0.1",
|
|
10
|
+
iut: { name: args.iutName, version: args.iutVersion, nid: args.iutNid },
|
|
11
|
+
peer: { name: args.peerName, version: args.peerVersion },
|
|
12
|
+
run: { date: new Date().toISOString(), environment: args.environment ?? "unspecified" },
|
|
13
|
+
cases,
|
|
14
|
+
summary: {
|
|
15
|
+
pass: cases.filter((c) => c.result === "pass").length,
|
|
16
|
+
fail: cases.filter((c) => c.result === "fail").length,
|
|
17
|
+
skip: cases.filter((c) => c.result === "skip").length,
|
|
18
|
+
na: cases.filter((c) => c.result === "na").length,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function catalogForProfile(profile) {
|
|
23
|
+
if (profile === NODE_L1)
|
|
24
|
+
return NODE_L1_CASES;
|
|
25
|
+
if (profile === NODE_L2)
|
|
26
|
+
return NODE_L2_CASES;
|
|
27
|
+
throw new RangeError(`Unknown NPS conformance profile: ${profile}`);
|
|
28
|
+
}
|
|
29
|
+
export function validateConformanceManifest(manifest) {
|
|
30
|
+
const catalog = catalogForProfile(manifest.profile);
|
|
31
|
+
const known = new Map(catalog.map((c) => [c.id, c]));
|
|
32
|
+
const seen = new Set();
|
|
33
|
+
const validResults = new Set(["pass", "fail", "skip", "na"]);
|
|
34
|
+
for (const result of manifest.cases) {
|
|
35
|
+
const knownCase = known.get(result.id);
|
|
36
|
+
if (knownCase === undefined)
|
|
37
|
+
return { valid: false, message: `Unknown conformance case id '${result.id}'.` };
|
|
38
|
+
if (seen.has(result.id))
|
|
39
|
+
return { valid: false, message: `Duplicate conformance case id '${result.id}'.` };
|
|
40
|
+
seen.add(result.id);
|
|
41
|
+
if (!validResults.has(result.result)) {
|
|
42
|
+
return { valid: false, message: `Case '${result.id}' has invalid result '${result.result}'.` };
|
|
43
|
+
}
|
|
44
|
+
if (result.result === "na" && !knownCase.optional) {
|
|
45
|
+
return { valid: false, message: `Case '${result.id}' is required and cannot be marked na.` };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const missing = catalog.filter((c) => !seen.has(c.id)).map((c) => c.id);
|
|
49
|
+
if (missing.length > 0) {
|
|
50
|
+
return { valid: false, message: `Missing conformance case results: ${missing.join(", ")}.` };
|
|
51
|
+
}
|
|
52
|
+
if (manifest.cases.some((c) => c.result === "fail" || c.result === "skip")) {
|
|
53
|
+
return { valid: false, message: "Conformance manifest contains fail or skip results." };
|
|
54
|
+
}
|
|
55
|
+
return { valid: true, message: "Conformance manifest is valid." };
|
|
56
|
+
}
|
|
57
|
+
function c(id, profile, requirement, title, optional = false) {
|
|
58
|
+
return { id, profile, requirement, title, optional };
|
|
59
|
+
}
|
|
60
|
+
export const NODE_L1_CASES = [
|
|
61
|
+
c("TC-N1-NCP-01", NODE_L1, "N1-NCP-01", "Tier-1 JSON frame round-trip"),
|
|
62
|
+
c("TC-N1-NCP-02", NODE_L1, "N1-NCP-02", "Hello + Anchor handshake"),
|
|
63
|
+
c("TC-N1-NCP-03", NODE_L1, "N1-NCP-03", "Loopback listener default"),
|
|
64
|
+
c("TC-N1-NCP-04", NODE_L1, "N1-NCP-04", "Tier-2 negotiation hygiene"),
|
|
65
|
+
c("TC-N1-NIP-01", NODE_L1, "N1-NIP-01", "Root keypair generation and permission"),
|
|
66
|
+
c("TC-N1-NIP-02", NODE_L1, "N1-NIP-02", "IdentFrame sign and verify"),
|
|
67
|
+
c("TC-N1-NIP-03", NODE_L1, "N1-NIP-03", "NID format"),
|
|
68
|
+
c("TC-N1-NIP-04", NODE_L1, "N1-NIP-04", "Sub-NID issuance", true),
|
|
69
|
+
c("TC-N1-NDP-01", NODE_L1, "N1-NDP-01", "AnnounceFrame carries activation_mode"),
|
|
70
|
+
c("TC-N1-NDP-02", NODE_L1, "N1-NDP-02", "AnnounceFrame signature"),
|
|
71
|
+
c("TC-N1-NDP-03", NODE_L1, "N1-NDP-03", "ResolveFrame response"),
|
|
72
|
+
c("TC-N1-NDP-04", NODE_L1, "N1-NDP-04", "GraphFrame topology snapshot", true),
|
|
73
|
+
c("TC-N1-NWP-01", NODE_L1, "N1-NWP-01", "Inbox accepts ActionFrame"),
|
|
74
|
+
c("TC-N1-NWP-02", NODE_L1, "N1-NWP-02", "Inbox persists across restart"),
|
|
75
|
+
c("TC-N1-NWP-03", NODE_L1, "N1-NWP-03", "NWP pull serves inbox"),
|
|
76
|
+
c("TC-N1-NWP-04", NODE_L1, "N1-NWP-04", "100 QPS baseline"),
|
|
77
|
+
c("TC-N1-NWP-05", NODE_L1, "N1-NWP-05", "Push path", true),
|
|
78
|
+
c("TC-N1-OBS-01", NODE_L1, "N1-OBS-01", "Frame log entry per direction"),
|
|
79
|
+
c("TC-N1-OBS-02", NODE_L1, "N1-OBS-02", "Log entry fields"),
|
|
80
|
+
c("TC-N1-OBS-03", NODE_L1, "N1-OBS-03", "Log destination flexibility"),
|
|
81
|
+
];
|
|
82
|
+
export const NODE_L2_CASES = [
|
|
83
|
+
c("TC-N2-AnchorTopo-01", NODE_L2, "L2-08", "Snapshot of a 3-member cluster"),
|
|
84
|
+
c("TC-N2-AnchorTopo-02", NODE_L2, "L2-08", "Version monotonicity across joins"),
|
|
85
|
+
c("TC-N2-AnchorTopo-03", NODE_L2, "L2-08", "Sub-Anchor member surfaces"),
|
|
86
|
+
c("TC-N2-AnchorStream-01", NODE_L2, "L2-08", "member_joined on NDP Announce"),
|
|
87
|
+
c("TC-N2-AnchorStream-02", NODE_L2, "L2-08", "member_left on NDP TTL expiry"),
|
|
88
|
+
c("TC-N2-AnchorStream-03", NODE_L2, "L2-08", "Resume from topology.since_version"),
|
|
89
|
+
c("TC-N2-AnchorTopo-04", NODE_L2, "L2-08", "Unauthorized topology access"),
|
|
90
|
+
c("TC-N2-AnchorTopo-05", NODE_L2, "L2-08", "Depth cap exceeded"),
|
|
91
|
+
c("TC-N2-AnchorTopo-06", NODE_L2, "L2-08", "Unsupported topology scope"),
|
|
92
|
+
c("TC-N2-AnchorTopo-07", NODE_L2, "L2-08", "Unsupported topology filter"),
|
|
93
|
+
c("TC-N2-AnchorTopo-08", NODE_L2, "L2-08", "Unsupported reserved topology type"),
|
|
94
|
+
c("TC-N2-AnchorStream-04", NODE_L2, "L2-08", "resync_required when version is too old"),
|
|
95
|
+
c("TC-N2-Tls-01", NODE_L2, "NPS-RFC-0006", "ALPN nps/1.0 negotiated over TLS 1.3"),
|
|
96
|
+
c("TC-N2-Tls-02", NODE_L2, "NPS-RFC-0006", "Mutual TLS required"),
|
|
97
|
+
c("TC-N2-Tls-03", NODE_L2, "NPS-RFC-0006", "Client cert trust anchor and NID binding"),
|
|
98
|
+
c("TC-N2-Tls-04", NODE_L2, "NPS-RFC-0006", "IdentFrame/certificate NID mismatch"),
|
|
99
|
+
];
|
|
100
|
+
//# sourceMappingURL=conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
|
package/dist/core/codec.d.ts
CHANGED
|
@@ -13,11 +13,16 @@ export declare class Tier2MsgPackCodec {
|
|
|
13
13
|
encode(frame: NpsFrame): Uint8Array;
|
|
14
14
|
decode(frameType: FrameType, payload: Uint8Array, registry: FrameRegistry): NpsFrame;
|
|
15
15
|
}
|
|
16
|
+
export declare class Tier3BinaryVectorCodec {
|
|
17
|
+
encode(frame: NpsFrame): Uint8Array;
|
|
18
|
+
decode(frameType: FrameType, payload: Uint8Array, registry: FrameRegistry): NpsFrame;
|
|
19
|
+
}
|
|
16
20
|
export declare class NpsFrameCodec {
|
|
17
21
|
private readonly _registry;
|
|
18
22
|
private readonly _maxPayload;
|
|
19
23
|
private readonly _json;
|
|
20
24
|
private readonly _msgpack;
|
|
25
|
+
private readonly _binaryVector;
|
|
21
26
|
constructor(registry: FrameRegistry, options?: {
|
|
22
27
|
maxPayload?: number;
|
|
23
28
|
});
|
package/dist/core/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,YAAY,EAEZ,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,YAAY,EAEZ,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAQnD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAID,qBAAa,cAAc;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU;IAWnC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,QAAQ;CAYrF;AAID,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU;IAUnC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,QAAQ;CAWrF;AAID,qBAAa,sBAAsB;IACjC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU;IAUnC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,QAAQ;CAWrF;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgC;gBAElD,QAAQ,EAAE,aAAa,EAAE,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAO1E,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,YAAY,CAAA;KAAO,GAAG,UAAU;IAiClF,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ;IAOlC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW;IAMhD,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;CAMrB"}
|
package/dist/core/codec.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import * as msgpack from "@msgpack/msgpack";
|
|
8
8
|
import { NpsCodecError } from "./exceptions.js";
|
|
9
9
|
import { DEFAULT_MAX_PAYLOAD, EncodingTier, FrameFlags, FrameHeader, } from "./frames.js";
|
|
10
|
+
import { decodeBinaryVectorPayload, encodeBinaryVectorPayload, } from "./codecs/tier3-binary-vector-codec.js";
|
|
10
11
|
// ── Tier-1 JSON codec ─────────────────────────────────────────────────────────
|
|
11
12
|
export class Tier1JsonCodec {
|
|
12
13
|
encode(frame) {
|
|
@@ -51,12 +52,34 @@ export class Tier2MsgPackCodec {
|
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
}
|
|
55
|
+
// ── Tier-3 BinaryVector codec ─────────────────────────────────────────────────
|
|
56
|
+
export class Tier3BinaryVectorCodec {
|
|
57
|
+
encode(frame) {
|
|
58
|
+
try {
|
|
59
|
+
return encodeBinaryVectorPayload(frame.toDict());
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
throw new NpsCodecError(`Tier-3 BinaryVector encode failed for 0x${frame.frameType.toString(16).padStart(2, "0")}: ${String(err)}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
decode(frameType, payload, registry) {
|
|
66
|
+
const cls = registry.resolve(frameType);
|
|
67
|
+
try {
|
|
68
|
+
const data = decodeBinaryVectorPayload(payload);
|
|
69
|
+
return cls.fromDict(data);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
throw new NpsCodecError(`Tier-3 BinaryVector decode failed for 0x${frameType.toString(16).padStart(2, "0")}: ${String(err)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
54
76
|
// ── NpsFrameCodec (dispatcher) ────────────────────────────────────────────────
|
|
55
77
|
export class NpsFrameCodec {
|
|
56
78
|
_registry;
|
|
57
79
|
_maxPayload;
|
|
58
80
|
_json = new Tier1JsonCodec();
|
|
59
81
|
_msgpack = new Tier2MsgPackCodec();
|
|
82
|
+
_binaryVector = new Tier3BinaryVectorCodec();
|
|
60
83
|
constructor(registry, options = {}) {
|
|
61
84
|
this._registry = registry;
|
|
62
85
|
this._maxPayload = options.maxPayload ?? DEFAULT_MAX_PAYLOAD;
|
|
@@ -101,7 +124,19 @@ export class NpsFrameCodec {
|
|
|
101
124
|
}
|
|
102
125
|
// ── Private ───────────────────────────────────────────────────────────────
|
|
103
126
|
_buildFlags(frame, tier) {
|
|
104
|
-
let flags
|
|
127
|
+
let flags;
|
|
128
|
+
if (tier === EncodingTier.JSON) {
|
|
129
|
+
flags = FrameFlags.TIER1_JSON;
|
|
130
|
+
}
|
|
131
|
+
else if (tier === EncodingTier.MSGPACK) {
|
|
132
|
+
flags = FrameFlags.TIER2_MSGPACK;
|
|
133
|
+
}
|
|
134
|
+
else if (tier === EncodingTier.BINARY_VECTOR) {
|
|
135
|
+
flags = FrameFlags.TIER3_BINARY_VECTOR;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
throw new NpsCodecError(`Unsupported encoding tier: 0x${tier.toString(16).padStart(2, "0")}.`);
|
|
139
|
+
}
|
|
105
140
|
const isStreamFrame = "isLast" in frame;
|
|
106
141
|
const isFinal = !isStreamFrame || frame.isLast;
|
|
107
142
|
if (isFinal)
|
|
@@ -113,6 +148,8 @@ export class NpsFrameCodec {
|
|
|
113
148
|
return this._json;
|
|
114
149
|
if (tier === EncodingTier.MSGPACK)
|
|
115
150
|
return this._msgpack;
|
|
151
|
+
if (tier === EncodingTier.BINARY_VECTOR)
|
|
152
|
+
return this._binaryVector;
|
|
116
153
|
throw new NpsCodecError(`Unsupported encoding tier: 0x${tier.toString(16).padStart(2, "0")}.`);
|
|
117
154
|
}
|
|
118
155
|
}
|
package/dist/core/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC;;;GAGG;AAEH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,WAAW,GAEZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ncp-codec.d.ts","sourceRoot":"","sources":["../../../src/core/codecs/ncp-codec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ncp-codec.d.ts","sourceRoot":"","sources":["../../../src/core/codecs/ncp-codec.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,YAAY,EAGZ,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAY5B,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,YAAY,CAwDd;AAMD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,GACrB,UAAU,CAyDZ"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
3
|
//
|
|
4
4
|
// NCP Codec — Top-level encode/decode dispatcher
|
|
5
|
-
// Routes to Tier-1 JSON
|
|
5
|
+
// Routes to Tier-1 JSON, Tier-2 MsgPack, or Tier-3 BinaryVector based on
|
|
6
|
+
// frame header flags.
|
|
6
7
|
import { parseFrameHeader, writeFrameHeader, buildFlags, EncodingTier, NcpError, DEFAULT_MAX_PAYLOAD, } from "../frame-header.js";
|
|
7
8
|
import { encodeJson, decodeJson } from "./tier1-json-codec.js";
|
|
8
9
|
import { encodeMsgPack, decodeMsgPack } from "./tier2-msgpack-codec.js";
|
|
10
|
+
import { decodeBinaryVectorPayload, encodeBinaryVectorPayload, } from "./tier3-binary-vector-codec.js";
|
|
9
11
|
// ---------------------------------------------------------------------------
|
|
10
12
|
// Decode
|
|
11
13
|
// ---------------------------------------------------------------------------
|
|
@@ -40,8 +42,16 @@ export function decodeFrame(buffer, options) {
|
|
|
40
42
|
case EncodingTier.MsgPack:
|
|
41
43
|
payload = decodeMsgPack(payloadBytes);
|
|
42
44
|
break;
|
|
45
|
+
case EncodingTier.BinaryVector:
|
|
46
|
+
try {
|
|
47
|
+
payload = decodeBinaryVectorPayload(payloadBytes);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw new NcpError("NPS-CLIENT-BAD-FRAME", `Malformed BinaryVector payload: ${String(err)}`);
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
43
53
|
default:
|
|
44
|
-
// NCP-E-05: Reserved
|
|
54
|
+
// NCP-E-05: Reserved tier 0x03.
|
|
45
55
|
throw new NcpError("NCP-ENCODING-UNSUPPORTED", `Unsupported encoding tier: 0x${header.tier.toString(16).padStart(2, "0")}`);
|
|
46
56
|
}
|
|
47
57
|
return { header, payload, bytesConsumed: totalSize };
|
|
@@ -63,6 +73,14 @@ export function encodeFrame(payload, options) {
|
|
|
63
73
|
case EncodingTier.MsgPack:
|
|
64
74
|
payloadBytes = encodeMsgPack(payload);
|
|
65
75
|
break;
|
|
76
|
+
case EncodingTier.BinaryVector:
|
|
77
|
+
try {
|
|
78
|
+
payloadBytes = encodeBinaryVectorPayload(payload);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
throw new NcpError("NPS-CLIENT-BAD-FRAME", `BinaryVector encode failed: ${String(err)}`);
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
66
84
|
default:
|
|
67
85
|
throw new NcpError("NCP-ENCODING-UNSUPPORTED", `Unsupported encoding tier for encode: ${tier}`);
|
|
68
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ncp-codec.js","sourceRoot":"","sources":["../../../src/core/codecs/ncp-codec.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,iDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"ncp-codec.js","sourceRoot":"","sources":["../../../src/core/codecs/ncp-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encode a frame payload to Tier-3 BinaryVector v1 bytes.
|
|
3
|
+
*/
|
|
4
|
+
export declare function encodeBinaryVectorPayload(payload: unknown): Uint8Array;
|
|
5
|
+
/**
|
|
6
|
+
* Decode Tier-3 BinaryVector v1 bytes to a payload object.
|
|
7
|
+
*/
|
|
8
|
+
export declare function decodeBinaryVectorPayload(bytes: Uint8Array): unknown;
|
|
9
|
+
//# sourceMappingURL=tier3-binary-vector-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier3-binary-vector-codec.d.ts","sourceRoot":"","sources":["../../../src/core/codecs/tier3-binary-vector-codec.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAqCtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CA4DpE"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
|
|
3
|
+
//
|
|
4
|
+
// Tier-3 BinaryVector Codec — MessagePack metadata + float32 vector segments
|
|
5
|
+
// NPS-1 §8.1
|
|
6
|
+
import { encode, decode } from "@msgpack/msgpack";
|
|
7
|
+
const MAGIC = new Uint8Array([0x4e, 0x50, 0x42, 0x56]); // NPBV
|
|
8
|
+
const VERSION = 1;
|
|
9
|
+
const PREFIX_SIZE = 16;
|
|
10
|
+
const MARKER_KEY = "$nps_binary_vector";
|
|
11
|
+
/**
|
|
12
|
+
* Encode a frame payload to Tier-3 BinaryVector v1 bytes.
|
|
13
|
+
*/
|
|
14
|
+
export function encodeBinaryVectorPayload(payload) {
|
|
15
|
+
const metadata = cloneMetadata(payload);
|
|
16
|
+
if (!isRecord(metadata)) {
|
|
17
|
+
throw new Error("Tier-3 BinaryVector metadata root must be an object.");
|
|
18
|
+
}
|
|
19
|
+
const vectors = [];
|
|
20
|
+
extractVectorSearchVector(metadata, vectors);
|
|
21
|
+
if (vectors.length > 0xffff) {
|
|
22
|
+
throw new Error("Tier-3 BinaryVector supports at most 65535 vectors per frame.");
|
|
23
|
+
}
|
|
24
|
+
const metadataBytes = encode(metadata);
|
|
25
|
+
const segmentBytes = vectors.reduce((sum, vector) => sum + 4 + vector.length * 4, 0);
|
|
26
|
+
const out = new Uint8Array(PREFIX_SIZE + metadataBytes.length + segmentBytes);
|
|
27
|
+
const view = new DataView(out.buffer);
|
|
28
|
+
out.set(MAGIC, 0);
|
|
29
|
+
out[4] = VERSION;
|
|
30
|
+
out[5] = 0;
|
|
31
|
+
view.setUint16(6, vectors.length, false);
|
|
32
|
+
view.setUint32(8, metadataBytes.length, false);
|
|
33
|
+
view.setUint32(12, 0, false);
|
|
34
|
+
out.set(metadataBytes, PREFIX_SIZE);
|
|
35
|
+
let offset = PREFIX_SIZE + metadataBytes.length;
|
|
36
|
+
for (const vector of vectors) {
|
|
37
|
+
view.setUint32(offset, vector.length, false);
|
|
38
|
+
offset += 4;
|
|
39
|
+
for (const value of vector) {
|
|
40
|
+
view.setFloat32(offset, value, true);
|
|
41
|
+
offset += 4;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Decode Tier-3 BinaryVector v1 bytes to a payload object.
|
|
48
|
+
*/
|
|
49
|
+
export function decodeBinaryVectorPayload(bytes) {
|
|
50
|
+
if (bytes.length < PREFIX_SIZE) {
|
|
51
|
+
throw new Error(`Tier-3 BinaryVector payload too short: ${bytes.length} bytes.`);
|
|
52
|
+
}
|
|
53
|
+
if (!MAGIC.every((value, index) => bytes[index] === value)) {
|
|
54
|
+
throw new Error("Tier-3 BinaryVector payload magic mismatch.");
|
|
55
|
+
}
|
|
56
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
57
|
+
if (bytes[4] !== VERSION) {
|
|
58
|
+
throw new Error(`Unsupported Tier-3 BinaryVector version: ${bytes[4]}.`);
|
|
59
|
+
}
|
|
60
|
+
if (bytes[5] !== 0 || view.getUint32(12, false) !== 0) {
|
|
61
|
+
throw new Error("Tier-3 BinaryVector reserved fields must be zero.");
|
|
62
|
+
}
|
|
63
|
+
const vectorCount = view.getUint16(6, false);
|
|
64
|
+
const metadataLength = view.getUint32(8, false);
|
|
65
|
+
if (metadataLength > bytes.length - PREFIX_SIZE) {
|
|
66
|
+
throw new Error("Tier-3 BinaryVector metadata length exceeds payload length.");
|
|
67
|
+
}
|
|
68
|
+
let offset = PREFIX_SIZE;
|
|
69
|
+
const metadataBytes = bytes.subarray(offset, offset + metadataLength);
|
|
70
|
+
offset += metadataLength;
|
|
71
|
+
const metadata = decode(metadataBytes);
|
|
72
|
+
if (!isRecord(metadata)) {
|
|
73
|
+
throw new Error("Tier-3 BinaryVector metadata root must be a map.");
|
|
74
|
+
}
|
|
75
|
+
const vectors = [];
|
|
76
|
+
for (let i = 0; i < vectorCount; i += 1) {
|
|
77
|
+
if (bytes.length - offset < 4) {
|
|
78
|
+
throw new Error("Tier-3 BinaryVector vector segment missing dimension.");
|
|
79
|
+
}
|
|
80
|
+
const dim = view.getUint32(offset, false);
|
|
81
|
+
offset += 4;
|
|
82
|
+
const byteLength = dim * 4;
|
|
83
|
+
if (bytes.length - offset < byteLength) {
|
|
84
|
+
throw new Error("Tier-3 BinaryVector vector segment is truncated.");
|
|
85
|
+
}
|
|
86
|
+
const vector = [];
|
|
87
|
+
for (let j = 0; j < dim; j += 1) {
|
|
88
|
+
vector.push(view.getFloat32(offset, true));
|
|
89
|
+
offset += 4;
|
|
90
|
+
}
|
|
91
|
+
vectors.push(vector);
|
|
92
|
+
}
|
|
93
|
+
if (offset !== bytes.length) {
|
|
94
|
+
throw new Error("Tier-3 BinaryVector payload has trailing bytes.");
|
|
95
|
+
}
|
|
96
|
+
restoreVectorSearchVector(metadata, vectors);
|
|
97
|
+
return metadata;
|
|
98
|
+
}
|
|
99
|
+
function extractVectorSearchVector(metadata, vectors) {
|
|
100
|
+
const vectorSearch = metadata["vector_search"];
|
|
101
|
+
if (!isRecord(vectorSearch))
|
|
102
|
+
return;
|
|
103
|
+
const vector = vectorSearch["vector"];
|
|
104
|
+
if (!Array.isArray(vector) || !vector.every((value) => typeof value === "number" && Number.isFinite(value))) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const index = vectors.length;
|
|
108
|
+
vectors.push([...vector]);
|
|
109
|
+
vectorSearch["vector"] = {
|
|
110
|
+
[MARKER_KEY]: index,
|
|
111
|
+
dtype: "float32",
|
|
112
|
+
dim: vector.length,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function restoreVectorSearchVector(metadata, vectors) {
|
|
116
|
+
const vectorSearch = metadata["vector_search"];
|
|
117
|
+
if (!isRecord(vectorSearch) || !Object.hasOwn(vectorSearch, "vector"))
|
|
118
|
+
return;
|
|
119
|
+
const marker = vectorSearch["vector"];
|
|
120
|
+
if (!isRecord(marker)) {
|
|
121
|
+
throw new Error("Tier-3 BinaryVector marker must be an object.");
|
|
122
|
+
}
|
|
123
|
+
const index = marker[MARKER_KEY];
|
|
124
|
+
if (typeof index !== "number" || !Number.isInteger(index)) {
|
|
125
|
+
throw new Error("Tier-3 BinaryVector marker missing vector index.");
|
|
126
|
+
}
|
|
127
|
+
if (index < 0 || index >= vectors.length) {
|
|
128
|
+
throw new Error(`Tier-3 BinaryVector marker references vector ${index}, but only ${vectors.length} vectors are present.`);
|
|
129
|
+
}
|
|
130
|
+
if (marker["dtype"] !== "float32") {
|
|
131
|
+
throw new Error("Tier-3 BinaryVector v1 only supports dtype=float32.");
|
|
132
|
+
}
|
|
133
|
+
const dim = marker["dim"];
|
|
134
|
+
if (typeof dim !== "number" || !Number.isInteger(dim) || dim !== vectors[index].length) {
|
|
135
|
+
throw new Error("Tier-3 BinaryVector marker dimension does not match vector segment.");
|
|
136
|
+
}
|
|
137
|
+
vectorSearch["vector"] = vectors[index];
|
|
138
|
+
}
|
|
139
|
+
function cloneMetadata(value) {
|
|
140
|
+
if (Array.isArray(value)) {
|
|
141
|
+
return value.map(cloneMetadata);
|
|
142
|
+
}
|
|
143
|
+
if (isRecord(value)) {
|
|
144
|
+
const out = {};
|
|
145
|
+
for (const [key, item] of Object.entries(value)) {
|
|
146
|
+
out[key] = cloneMetadata(item);
|
|
147
|
+
}
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
return value;
|
|
151
|
+
}
|
|
152
|
+
function isRecord(value) {
|
|
153
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=tier3-binary-vector-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier3-binary-vector-codec.js","sourceRoot":"","sources":["../../../src/core/codecs/tier3-binary-vector-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@ export declare enum EncodingTier {
|
|
|
3
3
|
/** Tier-1: UTF-8 JSON — development & compatibility. */
|
|
4
4
|
Json = 0,
|
|
5
5
|
/** Tier-2: MessagePack binary — production (~60% compression). */
|
|
6
|
-
MsgPack = 1
|
|
6
|
+
MsgPack = 1,
|
|
7
|
+
/** Tier-3: BinaryVector v1 — MessagePack metadata plus float32 vector segments. */
|
|
8
|
+
BinaryVector = 2
|
|
7
9
|
}
|
|
8
10
|
/** Unified frame type namespace for the full NPS suite (NPS-0 §9). */
|
|
9
11
|
export declare enum FrameType {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-header.d.ts","sourceRoot":"","sources":["../../src/core/frame-header.ts"],"names":[],"mappings":"AAUA,uDAAuD;AACvD,oBAAY,YAAY;IACtB,wDAAwD;IACxD,IAAI,IAAO;IACX,kEAAkE;IAClE,OAAO,IAAO;
|
|
1
|
+
{"version":3,"file":"frame-header.d.ts","sourceRoot":"","sources":["../../src/core/frame-header.ts"],"names":[],"mappings":"AAUA,uDAAuD;AACvD,oBAAY,YAAY;IACtB,wDAAwD;IACxD,IAAI,IAAO;IACX,kEAAkE;IAClE,OAAO,IAAO;IACd,mFAAmF;IACnF,YAAY,IAAO;CAEpB;AAED,sEAAsE;AACtE,oBAAY,SAAS;IAEnB,MAAM,IAAO;IACb,IAAI,IAAO;IACX,MAAM,IAAO;IACb,IAAI,IAAO;IACX,KAAK,IAAO,CAAE,sCAAsC;IACpD,KAAK,IAAO;IACZ,GAAG,IAAO,CAAE,iCAAiC;IAE7C,KAAK,KAAO;IACZ,MAAM,KAAO;IACb,SAAS,KAAO;IAEhB,KAAK,KAAO;IACZ,KAAK,KAAO;IACZ,MAAM,KAAO;IAEb,QAAQ,KAAO;IACf,OAAO,KAAO;IACd,KAAK,KAAO;IAEZ,IAAI,KAAO;IACX,QAAQ,KAAO;IACf,IAAI,KAAO;IACX,WAAW,KAAO;IAElB,KAAK,MAAO;CACb;AAMD,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAa/C,2DAA2D;AAC3D,qBAAa,QAAS,SAAQ,KAAK;aAKf,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;CAKlB;AAMD,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,IAAI,EAAE,YAAY,CAAC;IACnB,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC,WAAW,CA6Fb;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,GACjB,MAAM,CA0BR;AAMD,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,MAAM,CAMT"}
|
|
@@ -13,7 +13,8 @@ export var EncodingTier;
|
|
|
13
13
|
EncodingTier[EncodingTier["Json"] = 0] = "Json";
|
|
14
14
|
/** Tier-2: MessagePack binary — production (~60% compression). */
|
|
15
15
|
EncodingTier[EncodingTier["MsgPack"] = 1] = "MsgPack";
|
|
16
|
-
|
|
16
|
+
/** Tier-3: BinaryVector v1 — MessagePack metadata plus float32 vector segments. */
|
|
17
|
+
EncodingTier[EncodingTier["BinaryVector"] = 2] = "BinaryVector";
|
|
17
18
|
// 0x03 = Reserved
|
|
18
19
|
})(EncodingTier || (EncodingTier = {}));
|
|
19
20
|
/** Unified frame type namespace for the full NPS suite (NPS-0 §9). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-header.js","sourceRoot":"","sources":["../../src/core/frame-header.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,4DAA4D;AAC5D,iDAAiD;AAEjD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,uDAAuD;AACvD,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"frame-header.js","sourceRoot":"","sources":["../../src/core/frame-header.ts"],"names":[],"mappings":"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"}
|