@sleds/cli 0.1.41 → 0.1.42

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/sleds.mjs +47 -25
  2. package/package.json +1 -1
package/dist/sleds.mjs CHANGED
@@ -345,11 +345,11 @@ var init_guides = __esm(() => {
345
345
  {
346
346
  do: "Open `Work` and read the tabs",
347
347
  where: "Work",
348
- note: "Four tabs, each with its count: Waiting for product · Ready · On sleds · Landed this week. The search at the top narrows the rows as you type; the chips beside the tabs narrow by source, worth, type and `filed by` (you first). Your own work, and what is in front of you, is on Sleds."
348
+ note: "Three tabs, each with its count: Ready · On sleds · Landed this week; what waits for product's yes is on Intake (a line above the tabs says how many). The search at the top narrows the rows as you type; the chips beside the tabs narrow by source, worth, type and `filed by` (you first). Your own work, and what is in front of you, is on Sleds."
349
349
  },
350
350
  {
351
351
  do: "Read a pool item: the band, the worth, the chip, the readiness",
352
- note: "`suggested` (dashed, with a star) names the sled the rules (and the model) suggest, with why on hover; `waiting for product` needs a yes; the five boxes say what the item has (why · done · worth · repo · route) and `N gaps` names what is missing before anyone could start; an amber note says a related or duplicate item exists. `Take it` puts it on your sled; the ⋯ menu can put it on the suggested sled."
352
+ note: "`suggested` (dashed, with a star) names the sled the rules (and the model) suggest, with why on hover; `waiting for product` needs a yes (on Intake, where a row opens a modal to decide it); the five boxes say what the item has (why · done · worth · repo · route) and `N gaps` names what is missing before anyone could start; an amber note says a related or duplicate item exists. `Take it` puts it on your sled; the ⋯ menu can put it on the suggested sled."
353
353
  },
354
354
  {
355
355
  do: "Read a sled card: the seats, the jobs, the band spent",
@@ -679,16 +679,16 @@ var init_guides = __esm(() => {
679
679
  note: "Emails, comma-separated. Blank means any owner or admin of the workspace."
680
680
  },
681
681
  {
682
- do: "Approvers decide from the board or the Overview",
683
- where: "Overview › `Waiting on product`, or the item on Work",
684
- note: "`Approve` opens the gate; `Defer` keeps it closed and carries the note back to the filer, who answers in the brief and it comes back. In chat the same is `approve {project, decision, note?}`."
682
+ do: "Approvers decide on Intake",
683
+ where: "Intake (the rail), or Overview › `Waiting on product`",
684
+ note: "A row opens the ask in a modal over the ledger: `Approve` opens the gate; `Defer` keeps it closed and carries the note back to the filer, who answers in the brief and it comes back; `Ask the filer` sends the one question. A, D and Q do the same from the keyboard and move to the next ask. In chat the same is `approve {project, decision, note?}`."
685
685
  },
686
686
  {
687
687
  do: "Plan after the yes",
688
688
  note: "An approved epic can be planned in chat (`plan`): its milestones are sized, filed under it, and inherit the yes — they do not queue again. The epic's cap is the sum."
689
689
  }
690
690
  ],
691
- check: "File an ask from chat (`intake`): its item shows waiting for product in the pool on Work, the approvers see it under Waiting on product, and `run` on it is refused until someone approves."
691
+ check: "File an ask from chat (`intake`): its item shows waiting for product on Intake, the approvers see it under Waiting on product, and `run` on it is refused until someone approves."
692
692
  }
693
693
  ];
694
694
  });
@@ -1346,6 +1346,9 @@ var init_related = __esm(() => {
1346
1346
  "via"
1347
1347
  ]);
1348
1348
  });
1349
+
1350
+ // ../../packages/shared/src/intake/rank.ts
1351
+ var init_rank = () => {};
1349
1352
  // ../../packages/shared/src/profile/profile.ts
1350
1353
  var LIGHT;
1351
1354
  var init_profile = __esm(() => {
@@ -5543,6 +5546,34 @@ var init_fieldMap = __esm(() => {
5543
5546
  var SEPT_30 = "/whats-new/2026-09-30", WHATS_NEW;
5544
5547
  var init_whatsNew = __esm(() => {
5545
5548
  WHATS_NEW = [
5549
+ {
5550
+ date: "2026-10-20",
5551
+ title: "Intake: the gate gets its own page",
5552
+ lede: "What waits for product's yes was the first tab on Work. It is a page now, Intake, between Work and Sleds on the rail: the same rows, with the policy an approver decides under on one line, the counts over them, and a modal that reads one ask fast and decides it without leaving the list. Work keeps what is ready and who is on it, and opens on Ready.",
5553
+ sections: [
5554
+ {
5555
+ title: "One ask at a time, over the ledger",
5556
+ where: "Intake › a row",
5557
+ body: "A row on Intake opens a centred modal, not the item's page: what SLEDS says and why, the six steps from filed to landed with this one's place on them, the brief, and — folded, each with its answer on the fold — the ticket, the split and who takes it. Approve, Defer with a note and Ask the filer are at the foot, with Open the full item for anything deeper. ‹ › and the arrow keys walk the ledger in its order; A, D and Q decide and move on; Decide in order starts at the top. Esc goes back to the ledger as it was."
5558
+ },
5559
+ {
5560
+ title: "The policy on the page",
5561
+ where: "Intake, above the rows",
5562
+ body: "Above the rows, one dashed line says whose yes is needed and for which asks, who the approvers are, and what a yes writes to Jira — read from Policy, with Change in Policy beside it. Under it, four counts: open, need a worth, waiting on a filer, and became work this week (which opens the Record)."
5563
+ },
5564
+ {
5565
+ title: "Where things went on Work",
5566
+ where: "Work",
5567
+ body: "Work's tabs are Ready, On sleds and Landed. A line above them says how many wait in Intake and links there; the Board layout says the same in place of its Waiting column. The rail's count under Work is what is ready now; Intake's is what waits. Old links — Approvals, a waiting lane, a search hit on a waiting item — land on Intake."
5568
+ }
5569
+ ],
5570
+ also: [
5571
+ {
5572
+ label: "Next",
5573
+ text: "Worth from the modal and from Jira's Business Value, the return of each ask against its time, SLEDS's own suggested verdict, and auto-approve in shadow mode first — spec 41's later slices."
5574
+ }
5575
+ ]
5576
+ },
5546
5577
  {
5547
5578
  date: "2026-10-10",
5548
5579
  title: "Docs beside the work, and webhooks for your own tools",
@@ -7523,6 +7554,7 @@ var init_src = __esm(() => {
7523
7554
  init_verbs();
7524
7555
  init_brief();
7525
7556
  init_related();
7557
+ init_rank();
7526
7558
  init_markdown2();
7527
7559
  init_plan3();
7528
7560
  init_recommend();
@@ -8222,6 +8254,7 @@ init_guides();
8222
8254
  init_verbs();
8223
8255
  init_brief();
8224
8256
  init_related();
8257
+ init_rank();
8225
8258
  init_markdown2();
8226
8259
  init_plan3();
8227
8260
  init_recommend();
@@ -10267,28 +10300,17 @@ function cmuxRunner(exec, deps = {}) {
10267
10300
  }
10268
10301
  let id = parseCmuxWorkspace(r.stdout);
10269
10302
  const ref = id ? null : parseCmuxRef(r.stdout);
10270
- let closed = false;
10271
10303
  if (ref) {
10272
- let listed = null;
10273
- for (let i = 0;i < CMUX_LIST_TRIES; i++) {
10304
+ for (let i = 0;i < CMUX_LIST_TRIES && !id; i++) {
10274
10305
  if (i > 0)
10275
10306
  sleep(CMUX_LIST_WAIT_MS);
10276
10307
  const l = cmux(["--id-format", "both", "list-workspaces"]);
10277
- if (l.status !== 0)
10278
- continue;
10279
- listed = l.stdout;
10280
- if (namedLines(l.stdout, o.name).length > 0)
10281
- break;
10282
- }
10283
- if (listed !== null) {
10284
- id = cmuxIdForRef(listed, ref, o.name);
10285
- const stray = id ? null : cmuxIdForName(listed, o.name);
10286
- if (stray)
10287
- closed = closeWorkspace(stray);
10308
+ if (l.status === 0)
10309
+ id = cmuxIdForRef(l.stdout, ref, o.name);
10288
10310
  }
10289
10311
  }
10290
10312
  if (!id) {
10291
- throw new Error(ref ? `cmux workspace create ${o.name} gave ${ref} but no workspace id for it; ${closed ? "that workspace was closed" : UNWATCHED}` : `cmux workspace create ${o.name} returned no workspace (${r.stdout.trim() || "nothing"}); ${UNWATCHED}`);
10313
+ throw new Error(ref ? `cmux workspace create ${o.name} gave ${ref} but no workspace id for it; ${UNWATCHED}` : `cmux workspace create ${o.name} returned no workspace (${r.stdout.trim() || "nothing"}); ${UNWATCHED}`);
10292
10314
  }
10293
10315
  if (group && listed && !joined) {
10294
10316
  const c = cmux([
@@ -10422,7 +10444,7 @@ function beatBody(state, flags, host = {}, cap = {}) {
10422
10444
  name: flags.name,
10423
10445
  os: host.os ?? process.platform,
10424
10446
  runner: flags.runner,
10425
- version: host.version ?? "0.1.41" ?? "dev",
10447
+ version: host.version ?? "0.1.42" ?? "dev",
10426
10448
  running: live.length,
10427
10449
  items: live.slice(0, BEAT_ITEMS).map((r) => `${r.item}/${r.node}`),
10428
10450
  ...cap.atOnce !== undefined ? { atOnce: cap.atOnce } : {},
@@ -16314,7 +16336,7 @@ async function driveEngine(o, flags, deps, until = {}) {
16314
16336
  runner: deps.runner.name,
16315
16337
  atOnce: flags.atOnce,
16316
16338
  interval: flags.interval,
16317
- cliVersion: "0.1.41"
16339
+ cliVersion: "0.1.42"
16318
16340
  };
16319
16341
  const beat = (checkedAt) => {
16320
16342
  const m = deps.machine;
@@ -18376,7 +18398,7 @@ async function driveEngine2(o, flags, deps, until = {}) {
18376
18398
  runner: deps.runner.name,
18377
18399
  atOnce: flags.atOnce,
18378
18400
  interval: flags.interval,
18379
- cliVersion: "0.1.41"
18401
+ cliVersion: "0.1.42"
18380
18402
  };
18381
18403
  const beat = (checkedAt) => {
18382
18404
  const m = deps.machine;
@@ -24853,7 +24875,7 @@ ${renderHelpText(argv[1])}`);
24853
24875
  case "version":
24854
24876
  case "--version":
24855
24877
  case "-v":
24856
- console.log("sleds 0.1.41");
24878
+ console.log("sleds 0.1.42");
24857
24879
  return 0;
24858
24880
  default:
24859
24881
  console.error(`unknown command: ${cmd}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleds/cli",
3
- "version": "0.1.41",
3
+ "version": "0.1.42",
4
4
  "description": "SLEDS CLI — the cost and limits of AI agent work, decided at the wall. Point Claude Code at a SLEDS proxy; estimate before you run; hold, switch model, or run overnight when you hit a limit.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",