@appchy/jarvis 0.1.68 → 0.1.69

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/bin.js CHANGED
@@ -10115,7 +10115,7 @@ import { createRequire as createRequire2 } from "module";
10115
10115
  var _require = createRequire2(import.meta.url);
10116
10116
  var VERSION2 = _require("../package.json").version ?? "0.0.0";
10117
10117
  var IS_DEV = String(_require("../package.json").name ?? "").endsWith("-dev");
10118
- var SHA = "ac6ee80";
10118
+ var SHA = "f0e0cf3";
10119
10119
  var BUILT = "2026-09-10";
10120
10120
  var BUILD = SHA ?? "source";
10121
10121
  var BUILD_LABEL = `${SHA ? `${VERSION2} (${SHA}${BUILT ? ` ${BUILT}` : ""})` : `${VERSION2} (source)`}${IS_DEV ? " \u2014 development build" : ""}`;
@@ -176,7 +176,12 @@ def cmd_place(args) -> int:
176
176
  die(f"placing a single task needs --epic: it lands inside an epic of "
177
177
  f"'{version_name}', never loose. Epics in that version: "
178
178
  f"{', '.join(e.name for e in version.epics) or 'none yet'}")
179
- dest = epic.folder / "queue" / name
179
+ # The bucket IS the status, so landing everything in `queue/` does not move a
180
+ # task, it silently un-starts it. Nine came out queued on one repo — six blocked
181
+ # and three in progress — and the obvious repair is closed, because `work move
182
+ # <task> blocked` is refused for a task with no recorded question. Work arriving
183
+ # from the backlog has no bucket to keep and starts queued.
184
+ dest = epic.folder / (task.status if task.status in BUCKETS else "queue") / name
180
185
  if dest.exists():
181
186
  die(f"{rel(dest, root)} already exists")
182
187
  dest.parent.mkdir(parents=True, exist_ok=True)
@@ -1778,6 +1778,37 @@ def test_doctor_passes_a_degraded_but_legal_install_and_fails_a_real_break():
1778
1778
  assert f"{tree.cli()} init" in out.getvalue()
1779
1779
 
1780
1780
 
1781
+ def test_place_carries_a_tasks_bucket_into_the_new_cut():
1782
+ # The bucket IS the status, so landing everything in `queue/` does not move a
1783
+ # task, it un-starts it — silently, and for blocked work the obvious repair is
1784
+ # closed, because `work move <task> blocked` is refused without a recorded
1785
+ # question. Nine tasks came out queued on one repo doing a re-cut.
1786
+ import os
1787
+ for bucket in ("in-progress", "blocked"):
1788
+ with tempfile.TemporaryDirectory() as tmp:
1789
+ here = _tree(tmp, name="01-here")
1790
+ root = Path(tmp)
1791
+ there = root / "versions" / "02-there"
1792
+ there.mkdir(parents=True)
1793
+ (there / "version.md").write_text(
1794
+ "---\ncreated: 2026-08-01\norder: 02\noutcome: b\n---\n\n# 02-there\n")
1795
+ from_epic = _epic(here, "one")
1796
+ _epic(there, "two")
1797
+ (from_epic / bucket).mkdir()
1798
+ _task(from_epic / bucket, "moving")
1799
+
1800
+ os.environ["WORK_DIR"] = tmp
1801
+ try:
1802
+ task.cmd_place({"name": "moving", "version": "02-there", "epic": "two"})
1803
+ finally:
1804
+ os.environ.pop("WORK_DIR")
1805
+
1806
+ landed = list(root.rglob("*/moving/task.md"))
1807
+ assert len(landed) == 1, f"expected one landing, got {landed}"
1808
+ assert landed[0].parent.parent.name == bucket, \
1809
+ f"place un-started it: {bucket} -> {landed[0].parent.parent.name}"
1810
+
1811
+
1781
1812
  def test_doctor_reads_a_ledger_as_an_id_and_leaves_prose_alone():
1782
1813
  import io, contextlib
1783
1814
  with tempfile.TemporaryDirectory() as tmp:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appchy/jarvis",
3
- "version": "0.1.68",
3
+ "version": "0.1.69",
4
4
  "description": "Jarvis — local AI coding assistant CLI",
5
5
  "private": false,
6
6
  "type": "module",
@@ -58,15 +58,15 @@
58
58
  "vitest": "^2.1.0",
59
59
  "@jarvis/agents": "1.0.0",
60
60
  "@jarvis/anthropic": "1.0.0",
61
- "@jarvis/board": "0.1.0",
62
61
  "@jarvis/data": "0.1.0",
63
62
  "@jarvis/errors": "1.0.0",
64
63
  "@jarvis/logger": "1.0.0",
64
+ "@jarvis/board": "0.1.0",
65
65
  "@jarvis/rpc": "1.0.0",
66
66
  "@jarvis/types": "1.0.0",
67
67
  "@jarvis/typescript-config": "1.0.0",
68
- "@jarvis/ui": "0.1.0",
69
- "@jarvis/vitest-config": "1.0.0"
68
+ "@jarvis/vitest-config": "1.0.0",
69
+ "@jarvis/ui": "0.1.0"
70
70
  },
71
71
  "scripts": {
72
72
  "dev": "tsx watch src/bin.ts start --foreground",