staklink 0.3.61 → 0.3.63
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/proxy-server.cjs +36 -17
- package/dist/staklink-cli.cjs +1 -1
- package/package.json +1 -1
package/dist/proxy-server.cjs
CHANGED
|
@@ -61229,7 +61229,7 @@ var SSEManager = class {
|
|
|
61229
61229
|
var sseManager = new SSEManager();
|
|
61230
61230
|
|
|
61231
61231
|
// src/proxy/version.ts
|
|
61232
|
-
var VERSION = "0.3.
|
|
61232
|
+
var VERSION = "0.3.63";
|
|
61233
61233
|
|
|
61234
61234
|
// node_modules/uuid/dist/esm/stringify.js
|
|
61235
61235
|
var byteToHex = [];
|
|
@@ -121508,7 +121508,7 @@ async function runAgent({ prompt, apiKey, cwd, system_prompt, session, resume, s
|
|
|
121508
121508
|
const res = await executeCommand(cmd, cwd, env, (l) => console.log(l));
|
|
121509
121509
|
const output = res.stdout;
|
|
121510
121510
|
if (summarize && session) {
|
|
121511
|
-
const sessionData =
|
|
121511
|
+
const sessionData = exportSession(session, "assistant");
|
|
121512
121512
|
const summary = await summarizeSession(JSON.stringify(sessionData), apiKey);
|
|
121513
121513
|
return { output, summary };
|
|
121514
121514
|
}
|
|
@@ -132792,7 +132792,7 @@ async function streamGooseToSSE(sessionId, prompt, apiKey, res, options) {
|
|
|
132792
132792
|
try {
|
|
132793
132793
|
const result = streamText2({
|
|
132794
132794
|
model: goose("anthropic/claude-sonnet-4-5", {
|
|
132795
|
-
sessionName:
|
|
132795
|
+
sessionName: sessionId,
|
|
132796
132796
|
apiKey,
|
|
132797
132797
|
resume: options?.resume
|
|
132798
132798
|
}),
|
|
@@ -132886,16 +132886,32 @@ var jwt3 = __toESM(require_jsonwebtoken(), 1);
|
|
|
132886
132886
|
var crypto = __toESM(require("crypto"), 1);
|
|
132887
132887
|
var JWT_SECRET = process.env.JWT_SECRET || crypto.randomBytes(32).toString("hex");
|
|
132888
132888
|
var TOKEN_EXPIRY = "10m";
|
|
132889
|
+
var SESSION_INACTIVITY_TTL = 24 * 60 * 60 * 1e3;
|
|
132889
132890
|
var SESSIONS = /* @__PURE__ */ new Map();
|
|
132890
|
-
function
|
|
132891
|
-
|
|
132891
|
+
function issueToken(sessionId) {
|
|
132892
|
+
return jwt3.sign({ sessionId }, JWT_SECRET, { expiresIn: TOKEN_EXPIRY });
|
|
132893
|
+
}
|
|
132894
|
+
function createSession(sessionId, webhookUrl, apiKey) {
|
|
132895
|
+
const now3 = Date.now();
|
|
132896
|
+
const existing = SESSIONS.get(sessionId);
|
|
132897
|
+
if (existing) {
|
|
132898
|
+
existing.lastActivity = now3;
|
|
132899
|
+
if (webhookUrl !== void 0) {
|
|
132900
|
+
existing.webhookUrl = webhookUrl;
|
|
132901
|
+
}
|
|
132902
|
+
if (apiKey !== void 0) {
|
|
132903
|
+
existing.apiKey = apiKey;
|
|
132904
|
+
}
|
|
132905
|
+
return { token: issueToken(sessionId), created: false };
|
|
132906
|
+
}
|
|
132892
132907
|
SESSIONS.set(sessionId, {
|
|
132893
132908
|
sessionId,
|
|
132894
|
-
|
|
132895
|
-
|
|
132896
|
-
webhookUrl
|
|
132909
|
+
createdAt: now3,
|
|
132910
|
+
lastActivity: now3,
|
|
132911
|
+
webhookUrl,
|
|
132912
|
+
apiKey
|
|
132897
132913
|
});
|
|
132898
|
-
return { token };
|
|
132914
|
+
return { token: issueToken(sessionId), created: true };
|
|
132899
132915
|
}
|
|
132900
132916
|
function validateAndGetSession(sessionId, token) {
|
|
132901
132917
|
try {
|
|
@@ -132904,6 +132920,9 @@ function validateAndGetSession(sessionId, token) {
|
|
|
132904
132920
|
return null;
|
|
132905
132921
|
}
|
|
132906
132922
|
const session = SESSIONS.get(sessionId);
|
|
132923
|
+
if (session) {
|
|
132924
|
+
session.lastActivity = Date.now();
|
|
132925
|
+
}
|
|
132907
132926
|
return session || null;
|
|
132908
132927
|
} catch (error87) {
|
|
132909
132928
|
return null;
|
|
@@ -132911,9 +132930,8 @@ function validateAndGetSession(sessionId, token) {
|
|
|
132911
132930
|
}
|
|
132912
132931
|
function cleanup() {
|
|
132913
132932
|
const now3 = Date.now();
|
|
132914
|
-
const TEN_MIN = 10 * 60 * 1e3;
|
|
132915
132933
|
for (const [sessionId, session] of SESSIONS.entries()) {
|
|
132916
|
-
if (now3 - session.
|
|
132934
|
+
if (now3 - session.lastActivity > SESSION_INACTIVITY_TTL) {
|
|
132917
132935
|
SESSIONS.delete(sessionId);
|
|
132918
132936
|
}
|
|
132919
132937
|
}
|
|
@@ -134795,10 +134813,10 @@ ${diff.trim()}`);
|
|
|
134795
134813
|
res.status(401).json({ error: "Invalid or expired token" });
|
|
134796
134814
|
return;
|
|
134797
134815
|
}
|
|
134798
|
-
const { prompt,
|
|
134816
|
+
const { prompt, system, resume } = req.body;
|
|
134799
134817
|
if (!prompt) {
|
|
134800
134818
|
res.status(400).json({
|
|
134801
|
-
error: "Missing required
|
|
134819
|
+
error: "Missing required field: prompt"
|
|
134802
134820
|
});
|
|
134803
134821
|
return;
|
|
134804
134822
|
}
|
|
@@ -134810,24 +134828,25 @@ ${diff.trim()}`);
|
|
|
134810
134828
|
await streamGooseToSSE(
|
|
134811
134829
|
sessionId,
|
|
134812
134830
|
prompt,
|
|
134813
|
-
apiKey || process.env.ANTHROPIC_API_KEY || "",
|
|
134831
|
+
session.apiKey || process.env.ANTHROPIC_API_KEY || "",
|
|
134814
134832
|
res,
|
|
134815
|
-
{ system,
|
|
134833
|
+
{ system, resume, webhookUrl: session.webhookUrl }
|
|
134816
134834
|
);
|
|
134817
134835
|
});
|
|
134818
134836
|
app.use(requireAuth);
|
|
134819
134837
|
app.post("/session", async (req, res) => {
|
|
134820
|
-
const { sessionId, webhookUrl } = req.body;
|
|
134838
|
+
const { sessionId, webhookUrl, apiKey } = req.body;
|
|
134821
134839
|
if (!sessionId) {
|
|
134822
134840
|
res.status(400).json({
|
|
134823
134841
|
error: "Missing required fields: sessionId, webhookUrl"
|
|
134824
134842
|
});
|
|
134825
134843
|
return;
|
|
134826
134844
|
}
|
|
134827
|
-
const { token } = createSession(sessionId, webhookUrl);
|
|
134845
|
+
const { token, created } = createSession(sessionId, webhookUrl, apiKey);
|
|
134828
134846
|
res.json({
|
|
134829
134847
|
sessionId,
|
|
134830
134848
|
token,
|
|
134849
|
+
created,
|
|
134831
134850
|
streamUrl: `${req.protocol}://${req.get("host")}/stream/${sessionId}`
|
|
134832
134851
|
});
|
|
134833
134852
|
});
|
package/dist/staklink-cli.cjs
CHANGED
|
@@ -10967,7 +10967,7 @@ var glob = Object.assign(glob_, {
|
|
|
10967
10967
|
glob.glob = glob;
|
|
10968
10968
|
|
|
10969
10969
|
// src/proxy/version.ts
|
|
10970
|
-
var VERSION = "0.3.
|
|
10970
|
+
var VERSION = "0.3.63";
|
|
10971
10971
|
|
|
10972
10972
|
// src/cli.ts
|
|
10973
10973
|
var STAKLINK_PROXY = "staklink-proxy";
|