werkmeister 0.16.0 → 0.17.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.
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: "79cdadc2a1a4f3138deddeb36dbdcbfe124eccef", dirty: false };
47
+ define_SANDBOX_BUILD_default = { sha: "66bd710f14e52210fb81d7f34a9cf338fbbc4b2a", 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,7 @@
1
1
  {
2
2
  "name": "werkmeister",
3
- "version": "0.16.0",
3
+ "version": "0.17.1",
4
+ "license": "Apache-2.0",
4
5
  "description": "Multi-feature concurrent development orchestrator CLI tool",
5
6
  "type": "module",
6
7
  "engines": {
@@ -53,7 +54,7 @@
53
54
  "@types/node": "^22.13.0",
54
55
  "commander": "^13.1.0",
55
56
  "esbuild": "^0.24.0",
56
- "werkmeister-core": "^0.16.0",
57
+ "werkmeister-core": "^0.17.1",
57
58
  "tsx": "^4.19.0",
58
59
  "typescript": "^5.7.0",
59
60
  "vitest": "^3.0.0",