@threadbase-sh/streamer 1.69.3 → 1.69.5
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/dist/api/handlers/sessions.handlers.d.ts +2 -0
- package/dist/api/handlers/sessions.handlers.d.ts.map +1 -1
- package/dist/cli.cjs +95 -43
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +88 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +72 -20
- package/dist/index.js.map +1 -1
- package/dist/server-wiring.d.ts +2 -0
- package/dist/server-wiring.d.ts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/services/questions/answersToKeystrokes.d.ts +8 -0
- package/dist/services/questions/answersToKeystrokes.d.ts.map +1 -1
- package/dist/services/questions/resolveAnswer.d.ts +1 -1
- package/dist/services/questions/resolveAnswer.d.ts.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -57,6 +57,8 @@ export type SessionHandlersDeps = {
|
|
|
57
57
|
detail?: string;
|
|
58
58
|
options: PermissionOption[];
|
|
59
59
|
cursor?: number;
|
|
60
|
+
/** Server-owned instance id, minted by handlePermissionChange. */
|
|
61
|
+
gateId: string;
|
|
60
62
|
}>;
|
|
61
63
|
pendingPermissionKey: Map<string, string>;
|
|
62
64
|
contendedSessions: Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.handlers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/sessions.handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessions.handlers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/sessions.handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.cjs
CHANGED
|
@@ -119705,11 +119705,11 @@ function toPublicSession(s3) {
|
|
|
119705
119705
|
subStatus: s3.subStatus ?? null
|
|
119706
119706
|
};
|
|
119707
119707
|
}
|
|
119708
|
-
var
|
|
119708
|
+
var import_crypto12, import_fs26, import_path26, OUTPUT_BUFFER_MAX, INPUT_HISTORY_MAX, QUIET_DETECT_MS, CODEX_READY_FALLBACK_MS, SUBMIT_BYTES, CODEX_SUBMIT_DELAY_MS, CODEX_SUBMIT_MAX_WAIT_MS, CODEX_SUBMIT_STALE_MS, CodexPtyRunner;
|
|
119709
119709
|
var init_codex_pty_runner = __esm({
|
|
119710
119710
|
"src/codex-pty-runner.ts"() {
|
|
119711
119711
|
"use strict";
|
|
119712
|
-
|
|
119712
|
+
import_crypto12 = require("crypto");
|
|
119713
119713
|
import_fs26 = require("fs");
|
|
119714
119714
|
import_path26 = require("path");
|
|
119715
119715
|
init_logger();
|
|
@@ -119874,7 +119874,7 @@ var init_codex_pty_runner = __esm({
|
|
|
119874
119874
|
// binding logic). This runner generates a local placeholder id for the
|
|
119875
119875
|
// ManagedSession handle only.
|
|
119876
119876
|
async startFresh(options) {
|
|
119877
|
-
const sessionId = (0,
|
|
119877
|
+
const sessionId = (0, import_crypto12.randomUUID)();
|
|
119878
119878
|
const args = ["--cd", options.projectPath, "--no-alt-screen"];
|
|
119879
119879
|
if (options.systemPrompt) {
|
|
119880
119880
|
args.push(options.systemPrompt);
|
|
@@ -119893,7 +119893,7 @@ var init_codex_pty_runner = __esm({
|
|
|
119893
119893
|
* until watchForCodexRollout binds the real id.
|
|
119894
119894
|
*/
|
|
119895
119895
|
async startFork(options) {
|
|
119896
|
-
const sessionId = (0,
|
|
119896
|
+
const sessionId = (0, import_crypto12.randomUUID)();
|
|
119897
119897
|
return this.launch(
|
|
119898
119898
|
sessionId,
|
|
119899
119899
|
["fork", options.forkFromId, "--cd", options.projectPath, "--no-alt-screen"],
|
|
@@ -121111,11 +121111,11 @@ function toPublicSession2(s3) {
|
|
|
121111
121111
|
subStatus: s3.subStatus ?? null
|
|
121112
121112
|
};
|
|
121113
121113
|
}
|
|
121114
|
-
var
|
|
121114
|
+
var import_crypto13, import_fs27, import_path27, OUTPUT_BUFFER_MAX2, INPUT_HISTORY_MAX2, CLAUDE_PROMPT_MARKERS, QUIET_DETECT_MS2, OSC_TAIL_CHARS, SCRAPE_THROTTLE_MS, CLAUDE_READY_FALLBACK_MS, SUBMIT_BYTES2, SUBMIT_DELAY_MS, SUBMIT_MAX_WAIT_MS, PTYManager;
|
|
121115
121115
|
var init_pty_manager = __esm({
|
|
121116
121116
|
"src/pty-manager.ts"() {
|
|
121117
121117
|
"use strict";
|
|
121118
|
-
|
|
121118
|
+
import_crypto13 = require("crypto");
|
|
121119
121119
|
import_fs27 = require("fs");
|
|
121120
121120
|
import_path27 = require("path");
|
|
121121
121121
|
init_claude_flags();
|
|
@@ -121308,7 +121308,7 @@ var init_pty_manager = __esm({
|
|
|
121308
121308
|
// onReady fires once Claude reaches its first prompt (waiting_input).
|
|
121309
121309
|
async startFresh(options) {
|
|
121310
121310
|
const nodePty = await loadPty();
|
|
121311
|
-
const sessionId = (0,
|
|
121311
|
+
const sessionId = (0, import_crypto13.randomUUID)();
|
|
121312
121312
|
const projectName = options.projectName ?? (0, import_path27.basename)(options.projectPath);
|
|
121313
121313
|
const permissionMode = options.permissionMode ?? "acceptEdits";
|
|
121314
121314
|
const args = [
|
|
@@ -132349,7 +132349,7 @@ Content-Length: 0\r
|
|
|
132349
132349
|
|
|
132350
132350
|
// src/server.ts
|
|
132351
132351
|
var import_client = __toESM(require_lib3(), 1);
|
|
132352
|
-
var
|
|
132352
|
+
var import_crypto16 = require("crypto");
|
|
132353
132353
|
var import_events2 = require("events");
|
|
132354
132354
|
var import_fs39 = require("fs");
|
|
132355
132355
|
var import_promises16 = require("fs/promises");
|
|
@@ -147066,6 +147066,7 @@ var ConversationHandlers = class {
|
|
|
147066
147066
|
};
|
|
147067
147067
|
|
|
147068
147068
|
// src/api/handlers/sessions.handlers.ts
|
|
147069
|
+
var import_crypto9 = require("crypto");
|
|
147069
147070
|
var import_fs22 = require("fs");
|
|
147070
147071
|
var import_path22 = require("path");
|
|
147071
147072
|
|
|
@@ -147717,19 +147718,39 @@ var UnknownOptionError = class extends Error {
|
|
|
147717
147718
|
question;
|
|
147718
147719
|
value;
|
|
147719
147720
|
};
|
|
147721
|
+
var UnsupportedPromptShapeError = class extends Error {
|
|
147722
|
+
constructor(detail) {
|
|
147723
|
+
super(`Unsupported prompt shape: ${detail}`);
|
|
147724
|
+
this.detail = detail;
|
|
147725
|
+
this.name = "UnsupportedPromptShapeError";
|
|
147726
|
+
}
|
|
147727
|
+
detail;
|
|
147728
|
+
};
|
|
147729
|
+
var IncompleteAnswerError = class extends Error {
|
|
147730
|
+
constructor(question) {
|
|
147731
|
+
super(`Missing answer for question "${question}"`);
|
|
147732
|
+
this.question = question;
|
|
147733
|
+
this.name = "IncompleteAnswerError";
|
|
147734
|
+
}
|
|
147735
|
+
question;
|
|
147736
|
+
};
|
|
147720
147737
|
function answersToKeystrokes(questions, answers) {
|
|
147721
|
-
|
|
147722
|
-
|
|
147723
|
-
const raw2 = answers[q2.question];
|
|
147724
|
-
if (raw2 === void 0) {
|
|
147725
|
-
throw new Error(`Missing answer for question "${q2.question}"`);
|
|
147726
|
-
}
|
|
147727
|
-
const label = Array.isArray(raw2) ? raw2[0] : raw2;
|
|
147728
|
-
const target = q2.options.findIndex((o) => o.label === label);
|
|
147729
|
-
if (target < 0) throw new UnknownOptionError(q2.question, label);
|
|
147730
|
-
out += DOWN.repeat(target) + ENTER2;
|
|
147738
|
+
if (questions.length !== 1) {
|
|
147739
|
+
throw new UnsupportedPromptShapeError(`${questions.length} questions`);
|
|
147731
147740
|
}
|
|
147732
|
-
|
|
147741
|
+
const q2 = questions[0];
|
|
147742
|
+
if (q2.multiSelect) throw new UnsupportedPromptShapeError("multiSelect");
|
|
147743
|
+
const raw2 = answers[q2.question];
|
|
147744
|
+
if (raw2 === void 0 || Array.isArray(raw2) && raw2.length === 0) {
|
|
147745
|
+
throw new IncompleteAnswerError(q2.question);
|
|
147746
|
+
}
|
|
147747
|
+
if (Array.isArray(raw2) && raw2.length > 1) {
|
|
147748
|
+
throw new UnsupportedPromptShapeError(`${raw2.length} labels for a single-select question`);
|
|
147749
|
+
}
|
|
147750
|
+
const label = Array.isArray(raw2) ? raw2[0] : raw2;
|
|
147751
|
+
const target = q2.options.findIndex((o) => o.label === label);
|
|
147752
|
+
if (target < 0) throw new UnknownOptionError(q2.question, label);
|
|
147753
|
+
return DOWN.repeat(target) + ENTER2;
|
|
147733
147754
|
}
|
|
147734
147755
|
|
|
147735
147756
|
// src/services/questions/resolveAnswer.ts
|
|
@@ -147743,6 +147764,10 @@ function resolveAnswer(pending, body) {
|
|
|
147743
147764
|
return { ok: true, keys: answersToKeystrokes(pending.questions, answers) };
|
|
147744
147765
|
} catch (e) {
|
|
147745
147766
|
if (e instanceof UnknownOptionError) return { ok: false, reason: "unknown_option" };
|
|
147767
|
+
if (e instanceof UnsupportedPromptShapeError) {
|
|
147768
|
+
return { ok: false, reason: "unsupported_prompt_shape" };
|
|
147769
|
+
}
|
|
147770
|
+
if (e instanceof IncompleteAnswerError) return { ok: false, reason: "incomplete_answer" };
|
|
147746
147771
|
throw e;
|
|
147747
147772
|
}
|
|
147748
147773
|
}
|
|
@@ -148641,7 +148666,9 @@ var SessionHandlers = class {
|
|
|
148641
148666
|
}
|
|
148642
148667
|
const key = permissionContentKey(gate);
|
|
148643
148668
|
if (this.pendingPermissionKey.get(sessionId) === key) return;
|
|
148644
|
-
this.pendingPermission.
|
|
148669
|
+
const prior = this.pendingPermission.get(sessionId);
|
|
148670
|
+
const gateId = prior && permissionGateKey(prior) === permissionGateKey(gate) ? prior.gateId : (0, import_crypto9.randomUUID)();
|
|
148671
|
+
this.pendingPermission.set(sessionId, { ...gate, gateId });
|
|
148645
148672
|
this.pendingPermissionKey.set(sessionId, key);
|
|
148646
148673
|
const subscriberCount = this.sessionSubscribers.get(sessionId)?.size ?? 0;
|
|
148647
148674
|
this.log.info(
|
|
@@ -148655,7 +148682,8 @@ var SessionHandlers = class {
|
|
|
148655
148682
|
...gate.detail ? { detail: gate.detail } : {},
|
|
148656
148683
|
options: gate.options,
|
|
148657
148684
|
...gate.cursor !== void 0 ? { cursor: gate.cursor } : {},
|
|
148658
|
-
contentKey: permissionGateKey(gate)
|
|
148685
|
+
contentKey: permissionGateKey(gate),
|
|
148686
|
+
gateId
|
|
148659
148687
|
});
|
|
148660
148688
|
}
|
|
148661
148689
|
/**
|
|
@@ -148683,10 +148711,15 @@ var SessionHandlers = class {
|
|
|
148683
148711
|
const body = await readBody2(req);
|
|
148684
148712
|
const contentKey = body?.contentKey;
|
|
148685
148713
|
const optionIndex = body?.optionIndex;
|
|
148714
|
+
const gateId = body?.gateId;
|
|
148686
148715
|
if (typeof contentKey !== "string" || !Number.isInteger(optionIndex) || optionIndex < 0) {
|
|
148687
148716
|
json2(res, 400, { ok: false, reason: "Expected { contentKey: string, optionIndex: number }" });
|
|
148688
148717
|
return;
|
|
148689
148718
|
}
|
|
148719
|
+
if (gateId !== void 0 && typeof gateId !== "string") {
|
|
148720
|
+
json2(res, 400, { ok: false, reason: "Expected gateId to be a string" });
|
|
148721
|
+
return;
|
|
148722
|
+
}
|
|
148690
148723
|
const gateClosed = () => {
|
|
148691
148724
|
this.pendingPermission.delete(sessionId);
|
|
148692
148725
|
this.pendingPermissionKey.delete(sessionId);
|
|
@@ -148698,6 +148731,16 @@ var SessionHandlers = class {
|
|
|
148698
148731
|
gateClosed();
|
|
148699
148732
|
return;
|
|
148700
148733
|
}
|
|
148734
|
+
if (gateId !== void 0 && gateId !== gate.gateId) {
|
|
148735
|
+
json2(res, 409, { ok: false, reason: "gate_mismatch" });
|
|
148736
|
+
return;
|
|
148737
|
+
}
|
|
148738
|
+
if (gateId === void 0) {
|
|
148739
|
+
this.log.info(`[permission.answer_legacy_identity] ${sessionId.slice(0, 8)}`, {
|
|
148740
|
+
event: "permission.answer_legacy_identity",
|
|
148741
|
+
sessionId
|
|
148742
|
+
});
|
|
148743
|
+
}
|
|
148701
148744
|
if (permissionGateKey(gate) !== contentKey) {
|
|
148702
148745
|
json2(res, 409, { ok: false, reason: "gate_mismatch" });
|
|
148703
148746
|
return;
|
|
@@ -148707,7 +148750,8 @@ var SessionHandlers = class {
|
|
|
148707
148750
|
json2(res, 409, { ok: false, reason: "unknown_option" });
|
|
148708
148751
|
return;
|
|
148709
148752
|
}
|
|
148710
|
-
|
|
148753
|
+
const provider = this.sessionStore.getManaged(sessionId)?.provider;
|
|
148754
|
+
if (provider !== CODEX_CLI_PROVIDER && !await this.permissionGateStillOpen(sessionId, contentKey)) {
|
|
148711
148755
|
gateClosed();
|
|
148712
148756
|
return;
|
|
148713
148757
|
}
|
|
@@ -148751,7 +148795,14 @@ var SessionHandlers = class {
|
|
|
148751
148795
|
const pending = this.pendingQuestions.get(sessionId);
|
|
148752
148796
|
const resolution = resolveAnswer(pending, body);
|
|
148753
148797
|
if (!resolution.ok) {
|
|
148754
|
-
|
|
148798
|
+
const unanswerable = resolution.reason === "unsupported_prompt_shape" || resolution.reason === "incomplete_answer";
|
|
148799
|
+
json2(res, 400, {
|
|
148800
|
+
ok: false,
|
|
148801
|
+
reason: resolution.reason,
|
|
148802
|
+
...unanswerable ? {
|
|
148803
|
+
error: "This prompt needs an answer the app cannot give yet; answer it in the terminal"
|
|
148804
|
+
} : {}
|
|
148805
|
+
});
|
|
148755
148806
|
return;
|
|
148756
148807
|
}
|
|
148757
148808
|
const toolUseId = pending?.toolUseId ?? "";
|
|
@@ -149512,7 +149563,7 @@ var ManagedSessionsRepository = class {
|
|
|
149512
149563
|
};
|
|
149513
149564
|
|
|
149514
149565
|
// src/db/repositories/projects.repository.ts
|
|
149515
|
-
var
|
|
149566
|
+
var import_crypto10 = require("crypto");
|
|
149516
149567
|
function rowToProject(row) {
|
|
149517
149568
|
return {
|
|
149518
149569
|
id: row.id,
|
|
@@ -149597,7 +149648,7 @@ var ProjectsRepository = class {
|
|
|
149597
149648
|
});
|
|
149598
149649
|
return rowToProject(this.getById.get(existing.id));
|
|
149599
149650
|
}
|
|
149600
|
-
const id = (0,
|
|
149651
|
+
const id = (0, import_crypto10.randomUUID)();
|
|
149601
149652
|
this.insert.run({
|
|
149602
149653
|
id,
|
|
149603
149654
|
path: path2,
|
|
@@ -149636,7 +149687,7 @@ var SessionsRepository = class {
|
|
|
149636
149687
|
init_runtime_store();
|
|
149637
149688
|
|
|
149638
149689
|
// src/e2ee/noise.ts
|
|
149639
|
-
var
|
|
149690
|
+
var import_crypto11 = require("crypto");
|
|
149640
149691
|
var NOISE_PROTOCOL_NAME = "Noise_IKpsk1_25519_ChaChaPoly_SHA256";
|
|
149641
149692
|
var PAIR_PROLOGUE = Buffer.from("threadbase-e2ee/1 pair", "utf-8");
|
|
149642
149693
|
var DHLEN = 32;
|
|
@@ -149652,15 +149703,15 @@ var NoiseError = class extends Error {
|
|
|
149652
149703
|
}
|
|
149653
149704
|
};
|
|
149654
149705
|
function generateKeyPair() {
|
|
149655
|
-
const { publicKey, privateKey } = (0,
|
|
149706
|
+
const { publicKey, privateKey } = (0, import_crypto11.generateKeyPairSync)("x25519");
|
|
149656
149707
|
return { publicKey, privateKey, publicKeyRaw: rawPublicKey(publicKey) };
|
|
149657
149708
|
}
|
|
149658
149709
|
function keyPairFrom(privateKey) {
|
|
149659
|
-
const publicKey = (0,
|
|
149710
|
+
const publicKey = (0, import_crypto11.createPublicKey)(privateKey);
|
|
149660
149711
|
return { publicKey, privateKey, publicKeyRaw: rawPublicKey(publicKey) };
|
|
149661
149712
|
}
|
|
149662
149713
|
function rawPublicKey(key) {
|
|
149663
|
-
const pub = key.type === "public" ? key : (0,
|
|
149714
|
+
const pub = key.type === "public" ? key : (0, import_crypto11.createPublicKey)(key);
|
|
149664
149715
|
const jwk = pub.export({ format: "jwk" });
|
|
149665
149716
|
if (jwk.crv !== "X25519" || typeof jwk.x !== "string") {
|
|
149666
149717
|
throw new NoiseError("Not an X25519 public key");
|
|
@@ -149672,7 +149723,7 @@ function publicKeyFromRaw(raw2) {
|
|
|
149672
149723
|
throw new NoiseError(`X25519 public key must be ${DHLEN} bytes, got ${raw2.length}`);
|
|
149673
149724
|
}
|
|
149674
149725
|
try {
|
|
149675
|
-
return (0,
|
|
149726
|
+
return (0, import_crypto11.createPublicKey)({
|
|
149676
149727
|
key: { kty: "OKP", crv: "X25519", x: raw2.toString("base64url") },
|
|
149677
149728
|
format: "jwk"
|
|
149678
149729
|
});
|
|
@@ -149681,7 +149732,7 @@ function publicKeyFromRaw(raw2) {
|
|
|
149681
149732
|
}
|
|
149682
149733
|
}
|
|
149683
149734
|
function pskFromPairToken(token) {
|
|
149684
|
-
return (0,
|
|
149735
|
+
return (0, import_crypto11.createHash)("sha256").update("threadbase-e2ee/1 psk", "utf-8").update(token, "utf-8").digest();
|
|
149685
149736
|
}
|
|
149686
149737
|
function chachaNonce(n) {
|
|
149687
149738
|
const nonce = Buffer.alloc(12);
|
|
@@ -149700,7 +149751,7 @@ var CipherState = class {
|
|
|
149700
149751
|
}
|
|
149701
149752
|
encryptWithAd(ad, plaintext) {
|
|
149702
149753
|
if (!this.k) return plaintext;
|
|
149703
|
-
const cipher = (0,
|
|
149754
|
+
const cipher = (0, import_crypto11.createCipheriv)("chacha20-poly1305", this.k, chachaNonce(this.n), {
|
|
149704
149755
|
authTagLength: TAGLEN
|
|
149705
149756
|
});
|
|
149706
149757
|
cipher.setAAD(ad, { plaintextLength: plaintext.length });
|
|
@@ -149713,7 +149764,7 @@ var CipherState = class {
|
|
|
149713
149764
|
if (ciphertext.length < TAGLEN) throw new NoiseError("Ciphertext shorter than its tag");
|
|
149714
149765
|
const body = ciphertext.subarray(0, ciphertext.length - TAGLEN);
|
|
149715
149766
|
const tag = ciphertext.subarray(ciphertext.length - TAGLEN);
|
|
149716
|
-
const decipher = (0,
|
|
149767
|
+
const decipher = (0, import_crypto11.createDecipheriv)("chacha20-poly1305", this.k, chachaNonce(this.n), {
|
|
149717
149768
|
authTagLength: TAGLEN
|
|
149718
149769
|
});
|
|
149719
149770
|
decipher.setAAD(ad, { plaintextLength: body.length });
|
|
@@ -149734,7 +149785,7 @@ var SymmetricState = class {
|
|
|
149734
149785
|
cipher = new CipherState();
|
|
149735
149786
|
constructor(protocolName) {
|
|
149736
149787
|
const name = Buffer.from(protocolName, "utf-8");
|
|
149737
|
-
this.h = name.length <= HASHLEN ? Buffer.concat([name, Buffer.alloc(HASHLEN - name.length)]) : (0,
|
|
149788
|
+
this.h = name.length <= HASHLEN ? Buffer.concat([name, Buffer.alloc(HASHLEN - name.length)]) : (0, import_crypto11.createHash)("sha256").update(name).digest();
|
|
149738
149789
|
this.ck = Buffer.from(this.h);
|
|
149739
149790
|
this.cipher.initializeKey(null);
|
|
149740
149791
|
}
|
|
@@ -149746,7 +149797,7 @@ var SymmetricState = class {
|
|
|
149746
149797
|
* subtly wrong.
|
|
149747
149798
|
*/
|
|
149748
149799
|
hkdf(ikm, outputs) {
|
|
149749
|
-
const raw2 = Buffer.from((0,
|
|
149800
|
+
const raw2 = Buffer.from((0, import_crypto11.hkdfSync)("sha256", ikm, this.ck, Buffer.alloc(0), HASHLEN * outputs));
|
|
149750
149801
|
const out = [];
|
|
149751
149802
|
for (let i = 0; i < outputs; i++) out.push(raw2.subarray(i * HASHLEN, (i + 1) * HASHLEN));
|
|
149752
149803
|
return out;
|
|
@@ -149757,7 +149808,7 @@ var SymmetricState = class {
|
|
|
149757
149808
|
this.cipher.initializeKey(tempK);
|
|
149758
149809
|
}
|
|
149759
149810
|
mixHash(data) {
|
|
149760
|
-
this.h = (0,
|
|
149811
|
+
this.h = (0, import_crypto11.createHash)("sha256").update(this.h).update(data).digest();
|
|
149761
149812
|
}
|
|
149762
149813
|
/** Spec §5.2. Used only by the `psk` token. */
|
|
149763
149814
|
mixKeyAndHash(ikm) {
|
|
@@ -149787,7 +149838,7 @@ var SymmetricState = class {
|
|
|
149787
149838
|
}
|
|
149788
149839
|
};
|
|
149789
149840
|
function dh(privateKey, publicKey) {
|
|
149790
|
-
return (0,
|
|
149841
|
+
return (0, import_crypto11.diffieHellman)({ privateKey, publicKey });
|
|
149791
149842
|
}
|
|
149792
149843
|
function readMessage1(args) {
|
|
149793
149844
|
assertMessageSize(args.message1, NOISE_MESSAGE_1_OVERHEAD);
|
|
@@ -150105,7 +150156,7 @@ init_live_session_manager();
|
|
|
150105
150156
|
init_logger();
|
|
150106
150157
|
|
|
150107
150158
|
// src/pair-store.ts
|
|
150108
|
-
var
|
|
150159
|
+
var import_crypto14 = require("crypto");
|
|
150109
150160
|
var DEFAULT_TTL_SECONDS = 180;
|
|
150110
150161
|
var SWEEP_INTERVAL_MS = 6e4;
|
|
150111
150162
|
var PairTokenStore = class {
|
|
@@ -150120,7 +150171,7 @@ var PairTokenStore = class {
|
|
|
150120
150171
|
}
|
|
150121
150172
|
}
|
|
150122
150173
|
mint() {
|
|
150123
|
-
const token = `pt_${(0,
|
|
150174
|
+
const token = `pt_${(0, import_crypto14.randomBytes)(16).toString("hex")}`;
|
|
150124
150175
|
const expiresAt = Date.now() + this.ttlMs;
|
|
150125
150176
|
this.current = { token, expiresAt, used: false };
|
|
150126
150177
|
return {
|
|
@@ -151467,7 +151518,8 @@ function createApiDeps(deps) {
|
|
|
151467
151518
|
...pendingGate.detail ? { detail: pendingGate.detail } : {},
|
|
151468
151519
|
options: pendingGate.options,
|
|
151469
151520
|
...pendingGate.cursor !== void 0 ? { cursor: pendingGate.cursor } : {},
|
|
151470
|
-
contentKey: permissionGateKey(pendingGate)
|
|
151521
|
+
contentKey: permissionGateKey(pendingGate),
|
|
151522
|
+
gateId: pendingGate.gateId
|
|
151471
151523
|
})
|
|
151472
151524
|
);
|
|
151473
151525
|
}
|
|
@@ -151534,7 +151586,7 @@ function createApiDeps(deps) {
|
|
|
151534
151586
|
}
|
|
151535
151587
|
|
|
151536
151588
|
// src/services/cache-integrity/cacheIntegrityMonitor.ts
|
|
151537
|
-
var
|
|
151589
|
+
var import_crypto15 = require("crypto");
|
|
151538
151590
|
var import_fs34 = require("fs");
|
|
151539
151591
|
|
|
151540
151592
|
// src/services/cache-integrity/alertStore.ts
|
|
@@ -151599,7 +151651,7 @@ function envInt(name, fallback) {
|
|
|
151599
151651
|
}
|
|
151600
151652
|
function fingerprintOf(ids) {
|
|
151601
151653
|
const sorted = [...ids].sort();
|
|
151602
|
-
return `sha256:${(0,
|
|
151654
|
+
return `sha256:${(0, import_crypto15.createHash)("sha256").update(sorted.join("\n")).digest("hex")}`;
|
|
151603
151655
|
}
|
|
151604
151656
|
var CacheIntegrityMonitor = class {
|
|
151605
151657
|
constructor(cache, wsHub, log15, cacheDir, rescan, runDuringReset) {
|
|
@@ -154369,7 +154421,7 @@ var StreamerServer = class {
|
|
|
154369
154421
|
runtimeStore = null;
|
|
154370
154422
|
// Identifies this streamer run. A registry row carrying a different id is a
|
|
154371
154423
|
// session that outlived the process that started it.
|
|
154372
|
-
streamerInstanceId = (0,
|
|
154424
|
+
streamerInstanceId = (0, import_crypto16.randomUUID)();
|
|
154373
154425
|
cacheMetadataRepo = null;
|
|
154374
154426
|
// Push registration + delivery state (C7). Null when the cache DB failed to
|
|
154375
154427
|
// open — registration then degrades to a no-op rather than 500ing.
|