remote-pi 0.1.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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +384 -0
  3. package/dist/config.d.ts +18 -0
  4. package/dist/config.js +51 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.d.ts +77 -0
  7. package/dist/index.js +1285 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/pairing/crypto.d.ts +8 -0
  10. package/dist/pairing/crypto.js +22 -0
  11. package/dist/pairing/crypto.js.map +1 -0
  12. package/dist/pairing/handshake.d.ts +28 -0
  13. package/dist/pairing/handshake.js +113 -0
  14. package/dist/pairing/handshake.js.map +1 -0
  15. package/dist/pairing/noise-sha256.d.ts +16 -0
  16. package/dist/pairing/noise-sha256.js +103 -0
  17. package/dist/pairing/noise-sha256.js.map +1 -0
  18. package/dist/pairing/qr.d.ts +41 -0
  19. package/dist/pairing/qr.js +96 -0
  20. package/dist/pairing/qr.js.map +1 -0
  21. package/dist/pairing/storage.d.ts +10 -0
  22. package/dist/pairing/storage.js +65 -0
  23. package/dist/pairing/storage.js.map +1 -0
  24. package/dist/protocol/codec.d.ts +7 -0
  25. package/dist/protocol/codec.js +46 -0
  26. package/dist/protocol/codec.js.map +1 -0
  27. package/dist/protocol/types.d.ts +119 -0
  28. package/dist/protocol/types.js +2 -0
  29. package/dist/protocol/types.js.map +1 -0
  30. package/dist/rooms.d.ts +9 -0
  31. package/dist/rooms.js +22 -0
  32. package/dist/rooms.js.map +1 -0
  33. package/dist/session/agent_bridge.d.ts +55 -0
  34. package/dist/session/agent_bridge.js +146 -0
  35. package/dist/session/agent_bridge.js.map +1 -0
  36. package/dist/session/broker.d.ts +37 -0
  37. package/dist/session/broker.js +206 -0
  38. package/dist/session/broker.js.map +1 -0
  39. package/dist/session/envelope.d.ts +24 -0
  40. package/dist/session/envelope.js +89 -0
  41. package/dist/session/envelope.js.map +1 -0
  42. package/dist/session/global_config.d.ts +14 -0
  43. package/dist/session/global_config.js +51 -0
  44. package/dist/session/global_config.js.map +1 -0
  45. package/dist/session/leader_election.d.ts +16 -0
  46. package/dist/session/leader_election.js +78 -0
  47. package/dist/session/leader_election.js.map +1 -0
  48. package/dist/session/local_config.d.ts +18 -0
  49. package/dist/session/local_config.js +47 -0
  50. package/dist/session/local_config.js.map +1 -0
  51. package/dist/session/peer.d.ts +80 -0
  52. package/dist/session/peer.js +268 -0
  53. package/dist/session/peer.js.map +1 -0
  54. package/dist/session/setup_wizard.d.ts +32 -0
  55. package/dist/session/setup_wizard.js +60 -0
  56. package/dist/session/setup_wizard.js.map +1 -0
  57. package/dist/session/tool_gate.d.ts +5 -0
  58. package/dist/session/tool_gate.js +11 -0
  59. package/dist/session/tool_gate.js.map +1 -0
  60. package/dist/session/tools.d.ts +16 -0
  61. package/dist/session/tools.js +123 -0
  62. package/dist/session/tools.js.map +1 -0
  63. package/dist/session/wizard.d.ts +13 -0
  64. package/dist/session/wizard.js +20 -0
  65. package/dist/session/wizard.js.map +1 -0
  66. package/dist/settings.d.ts +15 -0
  67. package/dist/settings.js +52 -0
  68. package/dist/settings.js.map +1 -0
  69. package/dist/transport/peer_channel.d.ts +37 -0
  70. package/dist/transport/peer_channel.js +85 -0
  71. package/dist/transport/peer_channel.js.map +1 -0
  72. package/dist/transport/relay_client.d.ts +81 -0
  73. package/dist/transport/relay_client.js +154 -0
  74. package/dist/transport/relay_client.js.map +1 -0
  75. package/dist/ui/footer.d.ts +32 -0
  76. package/dist/ui/footer.js +32 -0
  77. package/dist/ui/footer.js.map +1 -0
  78. package/package.json +77 -0
  79. package/skills/agent-network/SKILL.md +429 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface Ed25519Keypair {
2
+ publicKey: Uint8Array;
3
+ secretKey: Uint8Array;
4
+ }
5
+ /** Generates an Ed25519 keypair for relay challenge-response auth. */
6
+ export declare function generateEd25519Keypair(): Ed25519Keypair;
7
+ export declare function ed25519Sign(sk: Uint8Array, msg: Uint8Array): Uint8Array;
8
+ export declare function ed25519Verify(pk: Uint8Array, msg: Uint8Array, sig: Uint8Array): boolean;
@@ -0,0 +1,22 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import * as ed from "@noble/ed25519";
3
+ // Configure @noble/ed25519 v3 to use Node.js built-in SHA-512
4
+ ed.hashes["sha512"] = (...msgs) => {
5
+ const h = createHash("sha512");
6
+ for (const m of msgs)
7
+ h.update(m);
8
+ return Uint8Array.from(h.digest());
9
+ };
10
+ /** Generates an Ed25519 keypair for relay challenge-response auth. */
11
+ export function generateEd25519Keypair() {
12
+ const secretKey = randomBytes(32);
13
+ const publicKey = ed.getPublicKey(secretKey);
14
+ return { secretKey, publicKey: Buffer.from(publicKey) };
15
+ }
16
+ export function ed25519Sign(sk, msg) {
17
+ return Buffer.from(ed.sign(msg, sk));
18
+ }
19
+ export function ed25519Verify(pk, msg, sig) {
20
+ return ed.verify(sig, msg, pk);
21
+ }
22
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/pairing/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErC,8DAA8D;AAC7D,EAAE,CAAC,MAAkC,CAAC,QAAQ,CAAC,GAAG,CACjD,GAAG,IAAkB,EACrB,EAAE;IACF,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAOF,sEAAsE;AACtE,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAc,EAAE,GAAe;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAc,EACd,GAAe,EACf,GAAe;IAEf,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type X25519Keypair } from "./crypto.js";
2
+ export interface SessionKeys {
3
+ /** Cipher state for sending (ChaCha20-Poly1305). First 32 bytes = key. */
4
+ tx: Uint8Array;
5
+ /** Cipher state for receiving (ChaCha20-Poly1305). First 32 bytes = key. */
6
+ rx: Uint8Array;
7
+ /** 6-emoji safety number derived from the handshake hash. */
8
+ safetyNumber: string;
9
+ /** Raw 32-byte SHA-256 handshake hash, usable for further derivation. */
10
+ handshakeHash: Buffer;
11
+ /**
12
+ * Curve25519 static public key received from the initiator (app).
13
+ * Extracted from state.rs before destroy() — use for peer identity validation.
14
+ */
15
+ remoteStaticKey?: Uint8Array;
16
+ }
17
+ /**
18
+ * Runs Noise_XX_25519_ChaChaPoly_SHA256 as **responder** (the Mac side).
19
+ * Pattern: receive msg1 (→e), send msg2 (←e,ee,s,es), receive msg3 (→s,se)
20
+ * @param prologue Optional prologue bytes mixed into handshake hash (default: empty).
21
+ */
22
+ export declare function runHandshakeResponder(localStatic: X25519Keypair, sendFn: (msg: Buffer) => Promise<void>, recvFn: () => Promise<Buffer>, prologue?: Uint8Array): Promise<SessionKeys>;
23
+ /**
24
+ * Runs Noise_XX_25519_ChaChaPoly_SHA256 as **initiator** (the mobile side).
25
+ * Exported for use in tests — production initiator is the app (Dart).
26
+ * @param prologue Optional prologue bytes mixed into handshake hash (default: empty).
27
+ */
28
+ export declare function runHandshakeInitiator(localStatic: X25519Keypair, sendFn: (msg: Buffer) => Promise<void>, recvFn: () => Promise<Buffer>, prologue?: Uint8Array): Promise<SessionKeys>;
@@ -0,0 +1,113 @@
1
+ import { deriveSafetyNumber } from "./crypto.js";
2
+ import { HASH_LEN_SHA256, HASH_OFFSET_SHA256, NoiseXX_SHA256, } from "./noise-sha256.js";
3
+ // Noise_XX_25519_ChaChaPoly_SHA256 — SHA-256 HASHLEN=32
4
+ // symmetricState layout: [ck(32), h(32), cipher_state(40)] = 104 bytes
5
+ // h (handshake hash) lives at bytes [32..64].
6
+ const HASH_OFFSET = HASH_OFFSET_SHA256; // 32
7
+ const HASH_LEN = HASH_LEN_SHA256; // 32
8
+ const MSG_BUF_SIZE = 4096;
9
+ function _logStep(label, ss) {
10
+ const h = Buffer.from(ss.subarray(32, 64)).toString("hex");
11
+ const ck = Buffer.from(ss.subarray(0, 32)).toString("hex");
12
+ const k = Buffer.from(ss.subarray(64, 96)).toString("hex");
13
+ const n = Buffer.from(ss.subarray(96, 104)).readBigUInt64LE(0).toString();
14
+ console.error(`== RT STEP ${label} ==`);
15
+ console.error(`h: ${h}`);
16
+ console.error(`ck: ${ck}`);
17
+ console.error(`k: ${k}`);
18
+ console.error(`n: ${n}`);
19
+ }
20
+ /**
21
+ * Runs Noise_XX_25519_ChaChaPoly_SHA256 as **responder** (the Mac side).
22
+ * Pattern: receive msg1 (→e), send msg2 (←e,ee,s,es), receive msg3 (→s,se)
23
+ * @param prologue Optional prologue bytes mixed into handshake hash (default: empty).
24
+ */
25
+ export async function runHandshakeResponder(localStatic, sendFn, recvFn, prologue = Buffer.alloc(0)) {
26
+ const state = NoiseXX_SHA256.initialize("XX", false, prologue, localStatic);
27
+ // Payload buffers: allocate generously so non-empty payloads from the app
28
+ // don't cause RangeError. We don't use handshake payloads in the protocol,
29
+ // but the Dart side might include app-level data. 1 KiB is ample.
30
+ const PAYLOAD_BUF = 1024;
31
+ // msg1: -> e (receive from initiator)
32
+ const msg1 = await recvFn();
33
+ console.error(`[remote-pi] msg1 received: ${msg1.length} bytes (expected: 32)`);
34
+ NoiseXX_SHA256.readMessage(state, msg1, Buffer.alloc(PAYLOAD_BUF));
35
+ _logStep("after readMessage1", state.symmetricState);
36
+ // msg2: <- e, ee, s, es (send to initiator)
37
+ const msg2buf = Buffer.alloc(MSG_BUF_SIZE);
38
+ NoiseXX_SHA256.writeMessage(state, Buffer.alloc(0), msg2buf);
39
+ const msg2bytes = NoiseXX_SHA256.writeMessage.bytes;
40
+ await sendFn(msg2buf.subarray(0, msg2bytes));
41
+ console.error(`[remote-pi] msg2 sent: ${msg2bytes} bytes (expected: 96)`);
42
+ _logStep("after writeMessage2", state.symmetricState);
43
+ // msg3: -> s, se (receive → handshake complete)
44
+ const msg3 = await recvFn();
45
+ console.error(`[remote-pi] msg3 received: ${msg3.length} bytes (expected: 64)`);
46
+ // Noise XX msg3 must be ≥ 64 bytes: 48 (encrypted static key) + 16 (MAC of
47
+ // empty payload). An AssertionError otherwise. Clear diagnostic if too short.
48
+ if (msg3.length < 64) {
49
+ const hexDump = msg3.toString("hex");
50
+ // Decode what 45/48 bytes might indicate:
51
+ // 48 bytes → static key encrypted (32 + 16 MAC) but NO payload MAC
52
+ // <48 bytes → static key may be unencrypted (32 B) + partial tag, or wrong format
53
+ const hint = msg3.length === 48
54
+ ? "static key encrypted OK but payload MAC (16 B) missing — call EncryptAndHash([]) after SE"
55
+ : msg3.length >= 32
56
+ ? `${msg3.length - 32} extra bytes after 32 B key — key may be unencrypted (no AEAD) or wrong cipher`
57
+ : "message shorter than a 32-byte key — framing or encoding error";
58
+ NoiseXX_SHA256.destroy(state);
59
+ throw new Error(`handshake_failed: msg3 too short (${msg3.length} B, need ≥64 B)\n` +
60
+ ` hint: ${hint}\n` +
61
+ ` hex: ${hexDump}\n` +
62
+ ` expected structure: [encrypt(s_pk)=48 B][encrypt([])=16 B]\n` +
63
+ ` ensure Dart calls EncryptAndHash with empty payload after SE token`);
64
+ }
65
+ const result = NoiseXX_SHA256.readMessage(state, msg3, Buffer.alloc(PAYLOAD_BUF));
66
+ _logStep("after readMessage3", state.symmetricState);
67
+ const handshakeHash = Buffer.from(state.symmetricState.subarray(HASH_OFFSET, HASH_OFFSET + HASH_LEN));
68
+ // Capture initiator's static public key BEFORE destroy().
69
+ // state.rs is set during readMessage of msg3 (TOK_S token).
70
+ const remoteStaticKey = state.rs
71
+ ? new Uint8Array(state.rs.subarray(0, 32))
72
+ : undefined;
73
+ NoiseXX_SHA256.destroy(state);
74
+ if (!result)
75
+ throw new Error("handshake_failed: split did not occur");
76
+ return {
77
+ tx: result.tx,
78
+ rx: result.rx,
79
+ safetyNumber: deriveSafetyNumber(handshakeHash),
80
+ handshakeHash,
81
+ remoteStaticKey,
82
+ };
83
+ }
84
+ /**
85
+ * Runs Noise_XX_25519_ChaChaPoly_SHA256 as **initiator** (the mobile side).
86
+ * Exported for use in tests — production initiator is the app (Dart).
87
+ * @param prologue Optional prologue bytes mixed into handshake hash (default: empty).
88
+ */
89
+ export async function runHandshakeInitiator(localStatic, sendFn, recvFn, prologue = Buffer.alloc(0)) {
90
+ const state = NoiseXX_SHA256.initialize("XX", true, prologue, localStatic);
91
+ // msg1: -> e
92
+ const msg1buf = Buffer.alloc(MSG_BUF_SIZE);
93
+ NoiseXX_SHA256.writeMessage(state, Buffer.alloc(0), msg1buf);
94
+ await sendFn(msg1buf.subarray(0, NoiseXX_SHA256.writeMessage.bytes));
95
+ // msg2: <- e, ee, s, es
96
+ const msg2 = await recvFn();
97
+ NoiseXX_SHA256.readMessage(state, msg2, Buffer.alloc(0));
98
+ // msg3: -> s, se (handshake complete)
99
+ const msg3buf = Buffer.alloc(MSG_BUF_SIZE);
100
+ const result = NoiseXX_SHA256.writeMessage(state, Buffer.alloc(0), msg3buf);
101
+ await sendFn(msg3buf.subarray(0, NoiseXX_SHA256.writeMessage.bytes));
102
+ const handshakeHash = Buffer.from(state.symmetricState.subarray(HASH_OFFSET, HASH_OFFSET + HASH_LEN));
103
+ NoiseXX_SHA256.destroy(state);
104
+ if (!result)
105
+ throw new Error("handshake_failed: split did not occur");
106
+ return {
107
+ tx: result.tx,
108
+ rx: result.rx,
109
+ safetyNumber: deriveSafetyNumber(handshakeHash),
110
+ handshakeHash,
111
+ };
112
+ }
113
+ //# sourceMappingURL=handshake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/pairing/handshake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import Noise from "noise-protocol";
2
+ import type { X25519Keypair } from "./crypto.js";
3
+ export declare const HASH_OFFSET_SHA256 = 32;
4
+ export declare const HASH_LEN_SHA256 = 32;
5
+ /**
6
+ * Test-only: makes the NEXT internal ephemeral `generateKeypair` call use
7
+ * the provided fixed keys instead of random ones. Consumes after one use.
8
+ * Required to reproduce official Noise test vectors.
9
+ */
10
+ export declare function setNextEphemeralForTest(pk: Uint8Array, sk: Uint8Array): void;
11
+ export declare const NoiseXX_SHA256: typeof Noise;
12
+ /**
13
+ * Builds a noise-protocol keypair from a raw 32-byte X25519 private scalar.
14
+ * Computes the public key via X25519 base-point multiplication.
15
+ */
16
+ export declare function keypairFromRawSk(rawSk: Uint8Array): X25519Keypair;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Assembles Noise_XX_25519_ChaChaPoly_SHA256 using noise-protocol's
3
+ * createHandshake factory with a plugged-in SHA-256 hash module.
4
+ *
5
+ * The default noise-protocol uses BLAKE2b — incompatible with the Dart side
6
+ * which needs a zero-dependency SHA-256 path.
7
+ */
8
+ import { createHash, createHmac } from "node:crypto";
9
+ import { createRequire } from "node:module";
10
+ import Noise from "noise-protocol";
11
+ // Resolve sodium-universal through noise-protocol's dependency tree.
12
+ // sodium-universal is not hoisted into pi-extension's own node_modules.
13
+ const _reqNoise = createRequire(import.meta.resolve("noise-protocol"));
14
+ // Internal noise-protocol factories (CJS modules, no TS types)
15
+ const _createDH = _reqNoise("noise-protocol/dh");
16
+ const _createCipher = _reqNoise("noise-protocol/cipher");
17
+ const _createCipherState = _reqNoise("noise-protocol/cipher-state");
18
+ const _createSymmetricState = _reqNoise("noise-protocol/symmetric-state");
19
+ const _sm = _reqNoise("sodium-universal/crypto_scalarmult");
20
+ // ── SHA-256 hash module ──────────────────────────────────────────────────────
21
+ // With SHA-256: symmetricState layout = [ck(32), h(32), cipher_state(40)]
22
+ // The handshake hash h is at bytes [32..64] in state.symmetricState.
23
+ export const HASH_OFFSET_SHA256 = 32;
24
+ export const HASH_LEN_SHA256 = 32;
25
+ const _tempHK = Buffer.alloc(32);
26
+ const _B = [Buffer.from([0x01]), Buffer.from([0x02]), Buffer.from([0x03])];
27
+ function _hash(out, data) {
28
+ const h = createHash("sha256");
29
+ for (const d of data)
30
+ h.update(d);
31
+ out.set(h.digest());
32
+ }
33
+ function _hmac(out, key, parts) {
34
+ const h = createHmac("sha256", key);
35
+ for (const p of parts)
36
+ h.update(p);
37
+ out.set(h.digest());
38
+ }
39
+ function _hkdf(out1, out2, out3, ck, ikm) {
40
+ _hmac(_tempHK, ck, [ikm]);
41
+ _hmac(out1, _tempHK, [_B[0]]);
42
+ _hmac(out2, _tempHK, [out1, _B[1]]);
43
+ if (out3 != null)
44
+ _hmac(out3, _tempHK, [out2, _B[2]]);
45
+ _tempHK.fill(0);
46
+ }
47
+ const _sha256Hash = {
48
+ HASHLEN: 32,
49
+ BLOCKLEN: 64,
50
+ ALG: "SHA256",
51
+ hash: _hash,
52
+ hkdf: _hkdf,
53
+ };
54
+ // ── DH wrapper with test key-injection hook ───────────────────────────────────
55
+ let _nextEph = null;
56
+ /**
57
+ * Test-only: makes the NEXT internal ephemeral `generateKeypair` call use
58
+ * the provided fixed keys instead of random ones. Consumes after one use.
59
+ * Required to reproduce official Noise test vectors.
60
+ */
61
+ export function setNextEphemeralForTest(pk, sk) {
62
+ _nextEph = { pk: Buffer.from(pk), sk: Buffer.from(sk) };
63
+ }
64
+ const _baseDH = _createDH();
65
+ const _patchedDH = {
66
+ ..._baseDH,
67
+ generateKeypair(pk, sk) {
68
+ if (_nextEph) {
69
+ pk.set(_nextEph.pk);
70
+ sk.set(_nextEph.sk);
71
+ _nextEph = null;
72
+ }
73
+ else {
74
+ _baseDH.generateKeypair(pk, sk);
75
+ }
76
+ },
77
+ };
78
+ // ── Assembles the full Noise_XX_25519_ChaChaPoly_SHA256 instance ─────────────
79
+ const _cipher = _createCipher();
80
+ const _cipherState = _createCipherState({ cipher: _cipher });
81
+ const _symmetricState = _createSymmetricState({
82
+ hash: _sha256Hash,
83
+ cipherState: _cipherState,
84
+ });
85
+ export const NoiseXX_SHA256 = Noise.createHandshake({
86
+ dh: _patchedDH,
87
+ hash: _sha256Hash,
88
+ cipher: _cipher,
89
+ cipherState: _cipherState,
90
+ symmetricState: _symmetricState,
91
+ });
92
+ // ── Key-building utility ─────────────────────────────────────────────────────
93
+ /**
94
+ * Builds a noise-protocol keypair from a raw 32-byte X25519 private scalar.
95
+ * Computes the public key via X25519 base-point multiplication.
96
+ */
97
+ export function keypairFromRawSk(rawSk) {
98
+ const kp = NoiseXX_SHA256.keygen(); // sodium-allocated buffers of correct size
99
+ kp.secretKey.set(Buffer.from(rawSk));
100
+ _sm.crypto_scalarmult_base(kp.publicKey, kp.secretKey);
101
+ return kp;
102
+ }
103
+ //# sourceMappingURL=noise-sha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise-sha256.js","sourceRoot":"","sources":["../../src/pairing/noise-sha256.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /** Encapsulates the single active QR token. One instance per Pi process. */
2
+ export declare class QRSession {
3
+ private active;
4
+ /** Generates a fresh 16-byte random token encoded as base64url. */
5
+ generateToken(): string;
6
+ /**
7
+ * Issues a new active token, invalidating any previous one.
8
+ * Returns the token and its expiry timestamp.
9
+ */
10
+ issueToken(): {
11
+ token: string;
12
+ expiresAt: number;
13
+ };
14
+ /** Validates and atomically consumes a token. */
15
+ consumeToken(token: string): "ok" | "expired" | "consumed" | "unknown";
16
+ clear(): void;
17
+ }
18
+ export declare const qrSession: QRSession;
19
+ export declare function buildQRUri(token: string, longtermEdPk: Uint8Array, // Ed25519 — only peer ID after E2E rollback
20
+ sessionName: string,
21
+ /**
22
+ * Pi room id (12 chars, base64url) derived from cwd. App routes pair_request
23
+ * to this room so the relay delivers it to the right Pi instance among N
24
+ * paralelos com mesmo epk. Adicionado no fix do plano 17 (sem `rm` o app
25
+ * cai em room=main e o relay drops com "dest not found").
26
+ */
27
+ roomId?: string): string;
28
+ /**
29
+ * Renders the QR + URI in the Pi TUI's output pane via stderr. `ctx.ui.notify`
30
+ * collapses multi-line content into a single toast, so for ASCII art we need
31
+ * the raw stderr capture that the Pi TUI exposes as scrollable log. Post
32
+ * plano 14 the QR carries only `t/epk/n`, fits comfortably in the panel
33
+ * without needing a separate Terminal window.
34
+ */
35
+ export declare function displayQR(uri: string): void;
36
+ /**
37
+ * Starts a rotating QR session: generates a new QR every 60s, printing it
38
+ * to stdout. Returns a `stop()` function that cancels the rotation and clears
39
+ * the active token.
40
+ */
41
+ export declare function startQRRotation(longtermEdPk: Uint8Array, sessionName: string, roomId?: string): () => void;
@@ -0,0 +1,96 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import qrTerminal from "qrcode-terminal";
3
+ const TOKEN_TTL_MS = 60_000;
4
+ /** Encapsulates the single active QR token. One instance per Pi process. */
5
+ export class QRSession {
6
+ active = null;
7
+ /** Generates a fresh 16-byte random token encoded as base64url. */
8
+ generateToken() {
9
+ return randomBytes(16).toString("base64url");
10
+ }
11
+ /**
12
+ * Issues a new active token, invalidating any previous one.
13
+ * Returns the token and its expiry timestamp.
14
+ */
15
+ issueToken() {
16
+ const token = this.generateToken();
17
+ const expiresAt = Date.now() + TOKEN_TTL_MS;
18
+ this.active = { token, expiresAt, consumed: false };
19
+ return { token, expiresAt };
20
+ }
21
+ /** Validates and atomically consumes a token. */
22
+ consumeToken(token) {
23
+ if (!this.active || this.active.token !== token)
24
+ return "unknown";
25
+ if (this.active.consumed)
26
+ return "consumed";
27
+ if (Date.now() > this.active.expiresAt)
28
+ return "expired";
29
+ this.active.consumed = true;
30
+ return "ok";
31
+ }
32
+ clear() {
33
+ this.active = null;
34
+ }
35
+ }
36
+ export const qrSession = new QRSession();
37
+ // ── URI + display ─────────────────────────────────────────────────────────────
38
+ export function buildQRUri(token, longtermEdPk, // Ed25519 — only peer ID after E2E rollback
39
+ sessionName,
40
+ /**
41
+ * Pi room id (12 chars, base64url) derived from cwd. App routes pair_request
42
+ * to this room so the relay delivers it to the right Pi instance among N
43
+ * paralelos com mesmo epk. Adicionado no fix do plano 17 (sem `rm` o app
44
+ * cai em room=main e o relay drops com "dest not found").
45
+ */
46
+ roomId) {
47
+ // `r` (relay URL) removed in plano 14 — relay now comes from app config /
48
+ // pi-ext env|config|default chain. Keeps QR ~30-50 chars shorter.
49
+ const epkB64 = Buffer.from(longtermEdPk).toString("base64url");
50
+ const params = new URLSearchParams({
51
+ t: token,
52
+ epk: epkB64,
53
+ n: sessionName.slice(0, 80),
54
+ });
55
+ if (roomId)
56
+ params.set("rm", roomId);
57
+ return `remotepi://pair?${params.toString()}`;
58
+ }
59
+ /**
60
+ * Renders the QR + URI in the Pi TUI's output pane via stderr. `ctx.ui.notify`
61
+ * collapses multi-line content into a single toast, so for ASCII art we need
62
+ * the raw stderr capture that the Pi TUI exposes as scrollable log. Post
63
+ * plano 14 the QR carries only `t/epk/n`, fits comfortably in the panel
64
+ * without needing a separate Terminal window.
65
+ */
66
+ export function displayQR(uri) {
67
+ qrTerminal.generate(uri, { small: true }, (qrcode) => {
68
+ process.stderr.write(`\n📱 Scan to pair:\n\n${qrcode}\n${uri}\n`);
69
+ });
70
+ }
71
+ /**
72
+ * Starts a rotating QR session: generates a new QR every 60s, printing it
73
+ * to stdout. Returns a `stop()` function that cancels the rotation and clears
74
+ * the active token.
75
+ */
76
+ export function startQRRotation(longtermEdPk, sessionName, roomId) {
77
+ let timer = null;
78
+ let stopped = false;
79
+ const rotate = () => {
80
+ if (stopped)
81
+ return;
82
+ const { token, expiresAt } = qrSession.issueToken();
83
+ const uri = buildQRUri(token, longtermEdPk, sessionName, roomId);
84
+ displayQR(uri);
85
+ console.log(`⏱ Renews at ${new Date(expiresAt).toLocaleTimeString()} — waiting for scan…`);
86
+ timer = setTimeout(rotate, TOKEN_TTL_MS);
87
+ };
88
+ rotate();
89
+ return () => {
90
+ stopped = true;
91
+ if (timer !== null)
92
+ clearTimeout(timer);
93
+ qrSession.clear();
94
+ };
95
+ }
96
+ //# sourceMappingURL=qr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.js","sourceRoot":"","sources":["../../src/pairing/qr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Ed25519Keypair } from "./crypto.js";
2
+ export declare function getOrCreateEd25519Keypair(): Promise<Ed25519Keypair>;
3
+ export interface PeerRecord {
4
+ name: string;
5
+ remote_epk: string;
6
+ paired_at: string;
7
+ }
8
+ export declare function listPeers(): Promise<PeerRecord[]>;
9
+ export declare function addPeer(record: PeerRecord): Promise<void>;
10
+ export declare function removePeer(remoteEpk: string): Promise<boolean>;