@staff0rd/assist 0.329.3 → 0.330.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.
- package/dist/commands/sessions/web/bundle.js +92 -92
- package/dist/index.js +104 -16
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Command } from "commander";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "@staff0rd/assist",
|
|
9
|
-
version: "0.
|
|
9
|
+
version: "0.330.0",
|
|
10
10
|
type: "module",
|
|
11
11
|
main: "dist/index.js",
|
|
12
12
|
bin: {
|
|
@@ -6226,6 +6226,68 @@ async function openInCode(req, res) {
|
|
|
6226
6226
|
}
|
|
6227
6227
|
}
|
|
6228
6228
|
|
|
6229
|
+
// src/commands/sessions/web/createCachedGhJson.ts
|
|
6230
|
+
import { execFile as execFile2 } from "child_process";
|
|
6231
|
+
import { promisify as promisify3 } from "util";
|
|
6232
|
+
var execFileAsync2 = promisify3(execFile2);
|
|
6233
|
+
var CACHE_TTL_MS = 3e4;
|
|
6234
|
+
function createCachedGhJson(args, parse3, fallback) {
|
|
6235
|
+
const cache = /* @__PURE__ */ new Map();
|
|
6236
|
+
return async (cwd) => {
|
|
6237
|
+
const now = Date.now();
|
|
6238
|
+
const cached = cache.get(cwd);
|
|
6239
|
+
if (cached && cached.expires > now) return cached.value;
|
|
6240
|
+
let value = fallback;
|
|
6241
|
+
try {
|
|
6242
|
+
const { stdout } = await execFileAsync2("gh", args, {
|
|
6243
|
+
encoding: "utf8",
|
|
6244
|
+
cwd: windowsCwdToWslPath(cwd)
|
|
6245
|
+
});
|
|
6246
|
+
value = parse3(stdout);
|
|
6247
|
+
} catch {
|
|
6248
|
+
value = fallback;
|
|
6249
|
+
}
|
|
6250
|
+
cache.set(cwd, { value, expires: now + CACHE_TTL_MS });
|
|
6251
|
+
return value;
|
|
6252
|
+
};
|
|
6253
|
+
}
|
|
6254
|
+
|
|
6255
|
+
// src/commands/sessions/web/prList.ts
|
|
6256
|
+
var getOpenPrs = createCachedGhJson(
|
|
6257
|
+
["pr", "list", "--state", "open", "--json", "number,title,author,createdAt"],
|
|
6258
|
+
(stdout) => {
|
|
6259
|
+
const parsed = JSON.parse(stdout);
|
|
6260
|
+
if (!Array.isArray(parsed)) return [];
|
|
6261
|
+
return parsed.map((pr) => ({
|
|
6262
|
+
number: pr.number,
|
|
6263
|
+
title: pr.title,
|
|
6264
|
+
author: pr.author?.name || pr.author?.login || "unknown",
|
|
6265
|
+
createdAt: pr.createdAt
|
|
6266
|
+
}));
|
|
6267
|
+
},
|
|
6268
|
+
[]
|
|
6269
|
+
);
|
|
6270
|
+
async function prList(req, res) {
|
|
6271
|
+
const cwd = getCwdParam(req, res);
|
|
6272
|
+
if (!cwd) return;
|
|
6273
|
+
respondJson(res, 200, { prs: await getOpenPrs(cwd) });
|
|
6274
|
+
}
|
|
6275
|
+
|
|
6276
|
+
// src/commands/sessions/web/prStatus.ts
|
|
6277
|
+
var getPrNumber = createCachedGhJson(
|
|
6278
|
+
["pr", "view", "--json", "number"],
|
|
6279
|
+
(stdout) => {
|
|
6280
|
+
const parsed = JSON.parse(stdout);
|
|
6281
|
+
return typeof parsed.number === "number" ? parsed.number : null;
|
|
6282
|
+
},
|
|
6283
|
+
null
|
|
6284
|
+
);
|
|
6285
|
+
async function prStatus(req, res) {
|
|
6286
|
+
const cwd = getCwdParam(req, res);
|
|
6287
|
+
if (!cwd) return;
|
|
6288
|
+
respondJson(res, 200, { number: await getPrNumber(cwd) });
|
|
6289
|
+
}
|
|
6290
|
+
|
|
6229
6291
|
// src/commands/sessions/daemon/stopDaemon.ts
|
|
6230
6292
|
var STOP_TIMEOUT_MS = 5e3;
|
|
6231
6293
|
async function stopDaemon() {
|
|
@@ -6357,6 +6419,8 @@ var routes2 = {
|
|
|
6357
6419
|
"POST /api/restart": restartWeb,
|
|
6358
6420
|
"GET /api/github-url": githubUrl,
|
|
6359
6421
|
"GET /api/git-status": gitStatus,
|
|
6422
|
+
"GET /api/pr-status": prStatus,
|
|
6423
|
+
"GET /api/pr-list": prList,
|
|
6360
6424
|
"GET /api/news/items": listNewsItems,
|
|
6361
6425
|
"GET /api/usage/history": listUsageHistory,
|
|
6362
6426
|
"GET /api/backups/list": getBackups
|
|
@@ -20596,6 +20660,8 @@ function broadcast(clients, msg) {
|
|
|
20596
20660
|
function toSessionInfo({
|
|
20597
20661
|
id: id2,
|
|
20598
20662
|
name,
|
|
20663
|
+
title,
|
|
20664
|
+
subtitle,
|
|
20599
20665
|
commandType,
|
|
20600
20666
|
status: status2,
|
|
20601
20667
|
startedAt,
|
|
@@ -20614,6 +20680,8 @@ function toSessionInfo({
|
|
|
20614
20680
|
return {
|
|
20615
20681
|
id: id2,
|
|
20616
20682
|
name,
|
|
20683
|
+
title,
|
|
20684
|
+
subtitle,
|
|
20617
20685
|
commandType,
|
|
20618
20686
|
status: status2,
|
|
20619
20687
|
startedAt,
|
|
@@ -20752,11 +20820,13 @@ function shellEscape(s) {
|
|
|
20752
20820
|
}
|
|
20753
20821
|
|
|
20754
20822
|
// src/commands/sessions/daemon/createAssistSession.ts
|
|
20755
|
-
function createAssistSession(id2, assistArgs, cwd) {
|
|
20823
|
+
function createAssistSession(id2, assistArgs, cwd, meta) {
|
|
20756
20824
|
const startedAt = Date.now();
|
|
20757
20825
|
return {
|
|
20758
20826
|
id: id2,
|
|
20759
20827
|
name: `assist ${assistArgs.join(" ")}`,
|
|
20828
|
+
title: meta?.title,
|
|
20829
|
+
subtitle: meta?.subtitle,
|
|
20760
20830
|
commandType: "assist",
|
|
20761
20831
|
status: "running",
|
|
20762
20832
|
startedAt,
|
|
@@ -21984,8 +22054,10 @@ var SessionManager = class {
|
|
|
21984
22054
|
spawnRun(runName, runArgs, cwd) {
|
|
21985
22055
|
return this.spawnWith((id2) => createRunSession(id2, runName, runArgs, cwd));
|
|
21986
22056
|
}
|
|
21987
|
-
spawnAssist(assistArgs, cwd) {
|
|
21988
|
-
return this.spawnWith(
|
|
22057
|
+
spawnAssist(assistArgs, cwd, meta) {
|
|
22058
|
+
return this.spawnWith(
|
|
22059
|
+
(id2) => createAssistSession(id2, assistArgs, cwd, meta)
|
|
22060
|
+
);
|
|
21989
22061
|
}
|
|
21990
22062
|
resume(sessionId, cwd, name) {
|
|
21991
22063
|
return this.spawnWith((id2) => resumeSession(id2, sessionId, cwd, name));
|
|
@@ -22052,7 +22124,14 @@ import * as fs30 from "fs";
|
|
|
22052
22124
|
import * as path50 from "path";
|
|
22053
22125
|
|
|
22054
22126
|
// src/commands/sessions/shared/deriveHistoryFields.ts
|
|
22055
|
-
var KNOWN = [
|
|
22127
|
+
var KNOWN = [
|
|
22128
|
+
"draft",
|
|
22129
|
+
"next",
|
|
22130
|
+
"bug",
|
|
22131
|
+
"refine",
|
|
22132
|
+
"review",
|
|
22133
|
+
"run"
|
|
22134
|
+
];
|
|
22056
22135
|
function deriveHistoryFields(commandName, commandArgs, name) {
|
|
22057
22136
|
const fields = {};
|
|
22058
22137
|
const sessionType = deriveSessionType(commandName, name);
|
|
@@ -22319,13 +22398,7 @@ function safeParse2(line) {
|
|
|
22319
22398
|
}
|
|
22320
22399
|
}
|
|
22321
22400
|
|
|
22322
|
-
// src/commands/sessions/daemon/
|
|
22323
|
-
function creator(isNew, spawn12) {
|
|
22324
|
-
return (client, m, d) => {
|
|
22325
|
-
if (m.windowsProxy.route(client, d)) return;
|
|
22326
|
-
sendTo(client, { type: "created", sessionId: spawn12(m, d), isNew });
|
|
22327
|
-
};
|
|
22328
|
-
}
|
|
22401
|
+
// src/commands/sessions/daemon/lifecycleHandlers.ts
|
|
22329
22402
|
function handleHistory(client) {
|
|
22330
22403
|
discoverSessions().then(
|
|
22331
22404
|
(sessions) => sendTo(client, { type: "history", sessions })
|
|
@@ -22342,6 +22415,19 @@ function handleShutdown(client, manager) {
|
|
|
22342
22415
|
sendTo(client, { type: "shutting-down" });
|
|
22343
22416
|
setImmediate(() => process.exit(0));
|
|
22344
22417
|
}
|
|
22418
|
+
var lifecycleHandlers = {
|
|
22419
|
+
history: handleHistory,
|
|
22420
|
+
"fetch-transcript": handleFetchTranscript,
|
|
22421
|
+
shutdown: handleShutdown
|
|
22422
|
+
};
|
|
22423
|
+
|
|
22424
|
+
// src/commands/sessions/daemon/messageHandlers.ts
|
|
22425
|
+
function creator(isNew, spawn12) {
|
|
22426
|
+
return (client, m, d) => {
|
|
22427
|
+
if (m.windowsProxy.route(client, d)) return;
|
|
22428
|
+
sendTo(client, { type: "created", sessionId: spawn12(m, d), isNew });
|
|
22429
|
+
};
|
|
22430
|
+
}
|
|
22345
22431
|
function routed(local) {
|
|
22346
22432
|
return (client, m, d) => {
|
|
22347
22433
|
if (!m.windowsProxy.route(client, d)) local(client, m, d);
|
|
@@ -22367,7 +22453,11 @@ var messageHandlers = {
|
|
|
22367
22453
|
true,
|
|
22368
22454
|
(m, d) => m.spawnAssist(
|
|
22369
22455
|
d.assistArgs ?? [],
|
|
22370
|
-
d.cwd
|
|
22456
|
+
d.cwd,
|
|
22457
|
+
{
|
|
22458
|
+
title: d.title,
|
|
22459
|
+
subtitle: d.subtitle
|
|
22460
|
+
}
|
|
22371
22461
|
)
|
|
22372
22462
|
),
|
|
22373
22463
|
resume: creator(
|
|
@@ -22378,9 +22468,7 @@ var messageHandlers = {
|
|
|
22378
22468
|
d.name
|
|
22379
22469
|
)
|
|
22380
22470
|
),
|
|
22381
|
-
|
|
22382
|
-
"fetch-transcript": handleFetchTranscript,
|
|
22383
|
-
shutdown: handleShutdown,
|
|
22471
|
+
...lifecycleHandlers,
|
|
22384
22472
|
drain: (client, m) => sendTo(client, { type: "drained", count: m.drain() }),
|
|
22385
22473
|
limits: (_client, m, d) => m.clients.updateLimits(d.rateLimits),
|
|
22386
22474
|
input: routed(
|