staklink 0.4.1 → 0.4.2

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.
@@ -24061,7 +24061,7 @@ var require_token_io = __commonJS({
24061
24061
  module2.exports = __toCommonJS(token_io_exports);
24062
24062
  var import_path5 = __toESM2(require("path"));
24063
24063
  var import_fs6 = __toESM2(require("fs"));
24064
- var import_os2 = __toESM2(require("os"));
24064
+ var import_os3 = __toESM2(require("os"));
24065
24065
  var import_token_error = require_token_error();
24066
24066
  function findRootDir() {
24067
24067
  try {
@@ -24084,11 +24084,11 @@ var require_token_io = __commonJS({
24084
24084
  if (process.env.XDG_DATA_HOME) {
24085
24085
  return process.env.XDG_DATA_HOME;
24086
24086
  }
24087
- switch (import_os2.default.platform()) {
24087
+ switch (import_os3.default.platform()) {
24088
24088
  case "darwin":
24089
- return import_path5.default.join(import_os2.default.homedir(), "Library/Application Support");
24089
+ return import_path5.default.join(import_os3.default.homedir(), "Library/Application Support");
24090
24090
  case "linux":
24091
- return import_path5.default.join(import_os2.default.homedir(), ".local/share");
24091
+ return import_path5.default.join(import_os3.default.homedir(), ".local/share");
24092
24092
  case "win32":
24093
24093
  if (process.env.LOCALAPPDATA) {
24094
24094
  return process.env.LOCALAPPDATA;
@@ -26200,7 +26200,7 @@ var require_token_io2 = __commonJS({
26200
26200
  module2.exports = __toCommonJS(token_io_exports);
26201
26201
  var import_path5 = __toESM2(require("path"));
26202
26202
  var import_fs6 = __toESM2(require("fs"));
26203
- var import_os2 = __toESM2(require("os"));
26203
+ var import_os3 = __toESM2(require("os"));
26204
26204
  var import_token_error = require_token_error2();
26205
26205
  function findRootDir() {
26206
26206
  try {
@@ -26223,11 +26223,11 @@ var require_token_io2 = __commonJS({
26223
26223
  if (process.env.XDG_DATA_HOME) {
26224
26224
  return process.env.XDG_DATA_HOME;
26225
26225
  }
26226
- switch (import_os2.default.platform()) {
26226
+ switch (import_os3.default.platform()) {
26227
26227
  case "darwin":
26228
- return import_path5.default.join(import_os2.default.homedir(), "Library/Application Support");
26228
+ return import_path5.default.join(import_os3.default.homedir(), "Library/Application Support");
26229
26229
  case "linux":
26230
- return import_path5.default.join(import_os2.default.homedir(), ".local/share");
26230
+ return import_path5.default.join(import_os3.default.homedir(), ".local/share");
26231
26231
  case "win32":
26232
26232
  if (process.env.LOCALAPPDATA) {
26233
26233
  return process.env.LOCALAPPDATA;
@@ -26351,10 +26351,10 @@ var require_oauth = __commonJS({
26351
26351
  refreshTokenRequest: () => refreshTokenRequest
26352
26352
  });
26353
26353
  module2.exports = __toCommonJS(oauth_exports);
26354
- var import_os2 = require("os");
26354
+ var import_os3 = require("os");
26355
26355
  var VERCEL_ISSUER = "https://vercel.com";
26356
26356
  var VERCEL_CLI_CLIENT_ID = "cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp";
26357
- var userAgent = `@vercel/oidc node-${process.version} ${(0, import_os2.platform)()} (${(0, import_os2.arch)()}) ${(0, import_os2.hostname)()}`;
26357
+ var userAgent = `@vercel/oidc node-${process.version} ${(0, import_os3.platform)()} (${(0, import_os3.arch)()}) ${(0, import_os3.hostname)()}`;
26358
26358
  var _tokenEndpoint = null;
26359
26359
  async function getTokenEndpoint() {
26360
26360
  if (_tokenEndpoint) {
@@ -61258,7 +61258,7 @@ var SSEManager = class {
61258
61258
  var sseManager = new SSEManager();
61259
61259
 
61260
61260
  // src/proxy/version.ts
61261
- var VERSION = "0.4.1";
61261
+ var VERSION = "0.4.2";
61262
61262
 
61263
61263
  // node_modules/uuid/dist/esm/stringify.js
61264
61264
  var byteToHex = [];
@@ -137436,6 +137436,32 @@ setInterval(cleanup, 6e4);
137436
137436
  // src/agent/async_handler.ts
137437
137437
  var import_path3 = __toESM(require("path"), 1);
137438
137438
  var import_promises2 = __toESM(require("fs/promises"), 1);
137439
+ var import_os2 = __toESM(require("os"), 1);
137440
+ var SCREENSHOT_DIR = import_path3.default.join(
137441
+ import_os2.default.homedir(),
137442
+ ".agent-browser",
137443
+ "tmp",
137444
+ "screenshots"
137445
+ );
137446
+ async function collectScreenshots(since) {
137447
+ try {
137448
+ const entries = await import_promises2.default.readdir(SCREENSHOT_DIR);
137449
+ const pngs = entries.filter((e) => e.endsWith(".png"));
137450
+ const results = [];
137451
+ for (const file3 of pngs) {
137452
+ const filePath = import_path3.default.join(SCREENSHOT_DIR, file3);
137453
+ const stat4 = await import_promises2.default.stat(filePath);
137454
+ if (stat4.mtimeMs < since) {
137455
+ continue;
137456
+ }
137457
+ const buf = await import_promises2.default.readFile(filePath);
137458
+ results.push({ filename: file3, base64: `data:image/png;base64,${buf.toString("base64")}` });
137459
+ }
137460
+ return results;
137461
+ } catch {
137462
+ return [];
137463
+ }
137464
+ }
137439
137465
  var createAsyncAgentHandler = (getParams, transformResult) => {
137440
137466
  return async (req, res) => {
137441
137467
  const request_id = startReq();
@@ -137456,6 +137482,7 @@ var createAsyncAgentHandler = (getParams, transformResult) => {
137456
137482
  }
137457
137483
  const agentFn = chooseAgent(agent_name || "goose");
137458
137484
  const defaultApiKey = agent_name === "codex" ? process.env.OPENAI_API_KEY || "" : process.env.ANTHROPIC_API_KEY || "";
137485
+ const startTime = Date.now();
137459
137486
  agentFn({
137460
137487
  prompt: params.prompt,
137461
137488
  apiKey: apiKey || defaultApiKey,
@@ -137466,11 +137493,13 @@ var createAsyncAgentHandler = (getParams, transformResult) => {
137466
137493
  model,
137467
137494
  searchApiKey,
137468
137495
  summaryApiKey
137469
- }).then((result) => {
137496
+ }).then(async (result) => {
137470
137497
  const finalResult = transformResult ? transformResult(result) : result;
137498
+ const screenshots = await collectScreenshots(startTime);
137471
137499
  finishReq(request_id, {
137472
137500
  success: true,
137473
- result: finalResult
137501
+ result: finalResult,
137502
+ ...screenshots.length > 0 && { screenshots }
137474
137503
  });
137475
137504
  }).catch((error87) => {
137476
137505
  error("Agent error:", error87);
@@ -10967,17 +10967,21 @@ var glob = Object.assign(glob_, {
10967
10967
  glob.glob = glob;
10968
10968
 
10969
10969
  // src/proxy/version.ts
10970
- var VERSION = "0.4.1";
10970
+ var VERSION = "0.4.2";
10971
10971
 
10972
10972
  // src/deps.ts
10973
10973
  var import_child_process = require("child_process");
10974
10974
  var import_util2 = require("util");
10975
+ var import_fs3 = require("fs");
10976
+ var import_os = require("os");
10977
+ var import_path2 = require("path");
10975
10978
  var execAsync = (0, import_util2.promisify)(import_child_process.exec);
10976
10979
  var GOOSE_VERSION = "1.22.0";
10977
10980
  async function ensureDepsInstalled() {
10978
10981
  await ensureGooseInstalled();
10979
10982
  await ensureAgentBrowserInstalled();
10980
10983
  await ensureAgentBrowserSkillInstalled();
10984
+ await migrateAgentBrowserSkill();
10981
10985
  }
10982
10986
  async function ensureGooseInstalled() {
10983
10987
  try {
@@ -11031,17 +11035,29 @@ async function installAgentBrowser() {
11031
11035
  var AGENT_BROWSER_SKILL_NAME = "agent-browser";
11032
11036
  var AGENT_BROWSER_SKILL_REPO = "https://github.com/vercel-labs/agent-browser";
11033
11037
  async function ensureAgentBrowserSkillInstalled() {
11038
+ const skillPath = (0, import_path2.join)((0, import_os.homedir)(), ".config", "agents", "skills", AGENT_BROWSER_SKILL_NAME);
11039
+ if ((0, import_fs3.existsSync)(skillPath)) {
11040
+ console.log(`\u2705 Skill "${AGENT_BROWSER_SKILL_NAME}" is already installed`);
11041
+ return;
11042
+ }
11043
+ console.log(`\u{1F4E6} Installing ${AGENT_BROWSER_SKILL_NAME} skill...`);
11044
+ await installAgentBrowserSkill();
11045
+ }
11046
+ async function migrateAgentBrowserSkill() {
11047
+ const home = (0, import_os.homedir)();
11048
+ const oldPath = (0, import_path2.join)(home, ".agents", "skills", "agent-browser");
11049
+ const newDir = (0, import_path2.join)(home, ".config", "agents", "skills");
11050
+ const newPath = (0, import_path2.join)(newDir, "agent-browser");
11051
+ if (!(0, import_fs3.existsSync)(oldPath) || (0, import_fs3.existsSync)(newPath)) {
11052
+ return;
11053
+ }
11034
11054
  try {
11035
- const { stdout } = await execAsync("npx skills ls -g");
11036
- if (stdout.includes(AGENT_BROWSER_SKILL_NAME)) {
11037
- console.log(`\u2705 Skill "${AGENT_BROWSER_SKILL_NAME}" is already installed`);
11038
- return;
11039
- }
11040
- console.log(`\u{1F4E6} Installing ${AGENT_BROWSER_SKILL_NAME} skill...`);
11041
- await installAgentBrowserSkill();
11042
- } catch {
11043
- console.log(`\u{1F4E6} Installing ${AGENT_BROWSER_SKILL_NAME} skill...`);
11044
- await installAgentBrowserSkill();
11055
+ console.log("\u{1F504} Migrating agent-browser skill to new location...");
11056
+ await execAsync(`mkdir -p "${newDir}"`);
11057
+ await execAsync(`mv "${oldPath}" "${newPath}"`);
11058
+ console.log("\u2705 agent-browser skill migrated successfully");
11059
+ } catch (error2) {
11060
+ console.error("\u26A0\uFE0F Failed to migrate agent-browser skill:", error2);
11045
11061
  }
11046
11062
  }
11047
11063
  async function installAgentBrowserSkill() {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "staklink",
3
3
  "displayName": "staklink",
4
4
  "description": "staklink process manager",
5
- "version": "0.4.1",
5
+ "version": "0.4.2",
6
6
  "type": "module",
7
7
  "publisher": "stakwork",
8
8
  "engines": {