werkmeister 0.16.0 → 0.17.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/main.js +53 -1
- package/dist/sandbox-workspaces.vsix +0 -0
- package/package.json +2 -2
package/dist/main.js
CHANGED
|
@@ -44,7 +44,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
44
44
|
var define_SANDBOX_BUILD_default;
|
|
45
45
|
var init_define_SANDBOX_BUILD = __esm({
|
|
46
46
|
"<define:__SANDBOX_BUILD__>"() {
|
|
47
|
-
define_SANDBOX_BUILD_default = { sha: "
|
|
47
|
+
define_SANDBOX_BUILD_default = { sha: "34b0af46d7c7998eecab90f8190813b8c8a7ab48", dirty: false };
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
|
|
@@ -59635,6 +59635,7 @@ __export(sandbox_exports, {
|
|
|
59635
59635
|
buildRefinePrompt: () => buildRefinePrompt,
|
|
59636
59636
|
buildWorkspaceArgs: () => buildWorkspaceArgs,
|
|
59637
59637
|
callbackMessage: () => callbackMessage,
|
|
59638
|
+
checkInTriage: () => checkInTriage,
|
|
59638
59639
|
childEnv: () => childEnv,
|
|
59639
59640
|
claudeResumeCommand: () => claudeResumeCommand,
|
|
59640
59641
|
claudeSendArgs: () => claudeSendArgs,
|
|
@@ -60428,6 +60429,57 @@ async function getWorkspaceStatuses() {
|
|
|
60428
60429
|
}
|
|
60429
60430
|
return { statuses, infra };
|
|
60430
60431
|
}
|
|
60432
|
+
async function proposedGates(dir) {
|
|
60433
|
+
const out = [];
|
|
60434
|
+
const stages = await fs56.readdir(path64.join(dir, "stages")).catch(() => []);
|
|
60435
|
+
for (const stage of stages.sort()) {
|
|
60436
|
+
const rel = path64.join("stages", stage, "output");
|
|
60437
|
+
const files = await fs56.readdir(path64.join(dir, rel)).catch(() => []);
|
|
60438
|
+
for (const f of files.sort()) {
|
|
60439
|
+
if (!f.endsWith(".md"))
|
|
60440
|
+
continue;
|
|
60441
|
+
const text = await fs56.readFile(path64.join(dir, rel, f), "utf-8").catch(() => "");
|
|
60442
|
+
if (/^status: proposed/m.test(text))
|
|
60443
|
+
out.push(path64.join(rel, f));
|
|
60444
|
+
}
|
|
60445
|
+
}
|
|
60446
|
+
return out;
|
|
60447
|
+
}
|
|
60448
|
+
async function checkInTriage() {
|
|
60449
|
+
const now = /* @__PURE__ */ new Date();
|
|
60450
|
+
const [{ root, workspaces }, { statuses }] = await Promise.all([
|
|
60451
|
+
listWorkspaces(),
|
|
60452
|
+
getWorkspaceStatuses()
|
|
60453
|
+
]);
|
|
60454
|
+
const mark2 = path64.join(root, ".check-in-last");
|
|
60455
|
+
const sinceMs = await fs56.stat(mark2).then((s) => s.mtimeMs, () => null);
|
|
60456
|
+
const focus = workspaces.some((w) => w.labels.includes("focus"));
|
|
60457
|
+
const keep = (w) => !w.labels.includes("skip") && (!focus || w.labels.includes("focus"));
|
|
60458
|
+
const byName2 = new Map(statuses.map((s) => [s.name, s]));
|
|
60459
|
+
const rows = await Promise.all(workspaces.filter(keep).map(async (w) => {
|
|
60460
|
+
const status2 = byName2.get(w.name);
|
|
60461
|
+
const { updatedAt } = await resolveSessionSource(w.name).catch(() => ({ updatedAt: null }));
|
|
60462
|
+
return {
|
|
60463
|
+
name: w.name,
|
|
60464
|
+
issueId: w.issueId,
|
|
60465
|
+
labels: w.labels,
|
|
60466
|
+
containers: status2?.state ?? "unknown",
|
|
60467
|
+
claude: status2?.claude ?? { state: "idle", waiting: false },
|
|
60468
|
+
gates: await proposedGates(w.path),
|
|
60469
|
+
updatedAt,
|
|
60470
|
+
changed: sinceMs !== null && updatedAt !== null && Date.parse(updatedAt) > sinceMs
|
|
60471
|
+
};
|
|
60472
|
+
}));
|
|
60473
|
+
await fs56.writeFile(mark2, "", { flag: "a" });
|
|
60474
|
+
await fs56.utimes(mark2, now, now);
|
|
60475
|
+
return {
|
|
60476
|
+
root,
|
|
60477
|
+
since: sinceMs === null ? null : new Date(sinceMs).toISOString(),
|
|
60478
|
+
workspaces: rows,
|
|
60479
|
+
dropped: workspaces.filter((w) => !keep(w)).map((w) => w.name),
|
|
60480
|
+
candidates: rows.filter((r) => r.claude.state !== "running" && (sinceMs === null ? r.claude.waiting : r.gates.length > 0 || r.changed)).map((r) => r.name)
|
|
60481
|
+
};
|
|
60482
|
+
}
|
|
60431
60483
|
async function getIntercepts() {
|
|
60432
60484
|
const parsed = await interceptsSnapshot();
|
|
60433
60485
|
const byFeature = /* @__PURE__ */ new Map();
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "werkmeister",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Multi-feature concurrent development orchestrator CLI tool",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@types/node": "^22.13.0",
|
|
54
54
|
"commander": "^13.1.0",
|
|
55
55
|
"esbuild": "^0.24.0",
|
|
56
|
-
"werkmeister-core": "^0.
|
|
56
|
+
"werkmeister-core": "^0.17.0",
|
|
57
57
|
"tsx": "^4.19.0",
|
|
58
58
|
"typescript": "^5.7.0",
|
|
59
59
|
"vitest": "^3.0.0",
|