@kaynooo/forgejo-tools 0.7.0 → 0.7.1

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 (2) hide show
  1. package/dist/cli.js +70 -71
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1222,8 +1222,77 @@ function capped(rows, limit) {
1222
1222
  var DAY_MS = 24 * 60 * 60 * 1000;
1223
1223
  // ../kit/src/secrets.ts
1224
1224
  var SECRET_WORDS = new Set(["key", "pass", "pwd", "auth", "salt", "cookie", "session", "jwt", "ssn", "iban", "card", "cvv", "otp"]);
1225
+ // ../kit/src/sessions.ts
1226
+ import { homedir } from "os";
1227
+ import { join } from "path";
1228
+ import process10 from "process";
1229
+ var {Glob } = globalThis.Bun;
1230
+ var SESSION_FILES = new Glob("*.json");
1231
+ var ACCOUNT_DIRS = new Glob("*/sessions");
1232
+ async function sessionDirs() {
1233
+ const home = homedir();
1234
+ const dirs = new Set([join(home, ".claude", "sessions")]);
1235
+ if (process10.env.CLAUDE_CONFIG_DIR !== undefined)
1236
+ dirs.add(join(process10.env.CLAUDE_CONFIG_DIR, "sessions"));
1237
+ try {
1238
+ for await (const dir of ACCOUNT_DIRS.scan({ cwd: join(home, ".claude-accounts"), onlyFiles: false, absolute: true }))
1239
+ dirs.add(dir);
1240
+ } catch {}
1241
+ return [...dirs];
1242
+ }
1243
+ async function procStat(pid) {
1244
+ try {
1245
+ const stat = await Bun.file(`/proc/${pid}/stat`).text();
1246
+ return stat.slice(stat.lastIndexOf(")") + 2).split(" ");
1247
+ } catch {
1248
+ return;
1249
+ }
1250
+ }
1251
+ async function isAlive(pid, procStart) {
1252
+ const stat = await procStat(pid);
1253
+ if (stat === undefined)
1254
+ return false;
1255
+ return procStart === undefined || stat[19] === procStart;
1256
+ }
1257
+ async function liveSessions() {
1258
+ const sessions = new Map;
1259
+ for (const dir of await sessionDirs()) {
1260
+ let files;
1261
+ try {
1262
+ files = await Array.fromAsync(SESSION_FILES.scan({ cwd: dir, absolute: true }));
1263
+ } catch {
1264
+ continue;
1265
+ }
1266
+ for (const file of files) {
1267
+ let entry;
1268
+ try {
1269
+ entry = await Bun.file(file).json();
1270
+ } catch {
1271
+ continue;
1272
+ }
1273
+ if (entry.name === undefined || entry.pid === undefined || sessions.has(entry.pid) || !await isAlive(entry.pid, entry.procStart))
1274
+ continue;
1275
+ sessions.set(entry.pid, { name: entry.name, pid: entry.pid, status: entry.status ?? "unknown", cwd: entry.cwd ?? "" });
1276
+ }
1277
+ }
1278
+ return [...sessions.values()];
1279
+ }
1280
+ async function currentSession(sessions) {
1281
+ const byPid = new Map(sessions.map((session) => [session.pid, session]));
1282
+ let pid = process10.ppid;
1283
+ for (let depth = 0;depth < 32 && pid > 1; depth++) {
1284
+ const session = byPid.get(pid);
1285
+ if (session !== undefined)
1286
+ return session;
1287
+ const parent = Number((await procStat(pid))?.[1]);
1288
+ if (!Number.isInteger(parent))
1289
+ return;
1290
+ pid = parent;
1291
+ }
1292
+ return;
1293
+ }
1225
1294
  // package.json
1226
- var version = "0.7.0";
1295
+ var version = "0.7.1";
1227
1296
 
1228
1297
  // src/args.ts
1229
1298
  var repoOption = {
@@ -1625,76 +1694,6 @@ async function closeMilestone(id, repo) {
1625
1694
  await repoWrite("PATCH", `milestones/${id}`, { state: "closed" }, repo);
1626
1695
  }
1627
1696
 
1628
- // src/sessions.ts
1629
- import { homedir } from "os";
1630
- import { join } from "path";
1631
- import process11 from "process";
1632
- var {Glob } = globalThis.Bun;
1633
- var SESSION_FILES = new Glob("*.json");
1634
- var ACCOUNT_DIRS = new Glob("*/sessions");
1635
- async function sessionDirs() {
1636
- const home = homedir();
1637
- const dirs = new Set([join(home, ".claude", "sessions")]);
1638
- if (process11.env.CLAUDE_CONFIG_DIR !== undefined)
1639
- dirs.add(join(process11.env.CLAUDE_CONFIG_DIR, "sessions"));
1640
- try {
1641
- for await (const dir of ACCOUNT_DIRS.scan({ cwd: join(home, ".claude-accounts"), onlyFiles: false, absolute: true }))
1642
- dirs.add(dir);
1643
- } catch {}
1644
- return [...dirs];
1645
- }
1646
- async function procStat(pid) {
1647
- try {
1648
- const stat = await Bun.file(`/proc/${pid}/stat`).text();
1649
- return stat.slice(stat.lastIndexOf(")") + 2).split(" ");
1650
- } catch {
1651
- return;
1652
- }
1653
- }
1654
- async function isAlive(pid, procStart) {
1655
- const stat = await procStat(pid);
1656
- if (stat === undefined)
1657
- return false;
1658
- return procStart === undefined || stat[19] === procStart;
1659
- }
1660
- async function liveSessions() {
1661
- const sessions = new Map;
1662
- for (const dir of await sessionDirs()) {
1663
- let files;
1664
- try {
1665
- files = await Array.fromAsync(SESSION_FILES.scan({ cwd: dir, absolute: true }));
1666
- } catch {
1667
- continue;
1668
- }
1669
- for (const file of files) {
1670
- let entry;
1671
- try {
1672
- entry = await Bun.file(file).json();
1673
- } catch {
1674
- continue;
1675
- }
1676
- if (entry.name === undefined || entry.pid === undefined || sessions.has(entry.pid) || !await isAlive(entry.pid, entry.procStart))
1677
- continue;
1678
- sessions.set(entry.pid, { name: entry.name, pid: entry.pid, status: entry.status ?? "unknown", cwd: entry.cwd ?? "" });
1679
- }
1680
- }
1681
- return [...sessions.values()];
1682
- }
1683
- async function currentSession(sessions) {
1684
- const byPid = new Map(sessions.map((session) => [session.pid, session]));
1685
- let pid = process11.ppid;
1686
- for (let depth = 0;depth < 32 && pid > 1; depth++) {
1687
- const session = byPid.get(pid);
1688
- if (session !== undefined)
1689
- return session;
1690
- const parent = Number((await procStat(pid))?.[1]);
1691
- if (!Number.isInteger(parent))
1692
- return;
1693
- pid = parent;
1694
- }
1695
- return;
1696
- }
1697
-
1698
1697
  // src/commands/board.ts
1699
1698
  var LINE_START = /^/gm;
1700
1699
  var TITLE_WIDTH = 80;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kaynooo/forgejo-tools",
3
3
  "type": "module",
4
- "version": "0.7.0",
4
+ "version": "0.7.1",
5
5
  "description": "ft: Forgejo CI runs, logs, releases and issue checklists from the terminal, through tea.",
6
6
  "author": "Kaynooo <contact@kaynooo.fr>",
7
7
  "license": "MIT",