@appchy/jarvis 0.1.81 → 0.1.82

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
@@ -10110,7 +10110,7 @@ import { createRequire as createRequire2 } from "module";
10110
10110
  var _require = createRequire2(import.meta.url);
10111
10111
  var VERSION2 = _require("../package.json").version ?? "0.0.0";
10112
10112
  var IS_DEV = String(_require("../package.json").name ?? "").endsWith("-dev");
10113
- var SHA = "fa00fb0";
10113
+ var SHA = "23220f0";
10114
10114
  var BUILT = "2026-09-11";
10115
10115
  var BUILD = SHA ?? "source";
10116
10116
  var BUILD_LABEL = `${SHA ? `${VERSION2} (${SHA}${BUILT ? ` ${BUILT}` : ""})` : `${VERSION2} (source)`}${IS_DEV ? " \u2014 development build" : ""}`;
@@ -2738,6 +2738,38 @@ def test_move_to_blocked_is_refused_because_a_blocked_task_needs_a_question():
2738
2738
  pass
2739
2739
 
2740
2740
 
2741
+ def test_a_formatter_cannot_quietly_break_the_scaffolding_templates():
2742
+ """Every `{{TOKEN}}` in every shipped template is intact and substitutable.
2743
+
2744
+ Prettier reads `{{PRIORITY}}` in YAML frontmatter as two nested flow mappings
2745
+ and rewrites it to `{ { PRIORITY } }`, which matches no substitution and
2746
+ scaffolds a broken file. One `pnpm format` did this to 118 files, failed the
2747
+ harness gate, and was reverted by hand.
2748
+
2749
+ `.prettierignore` is the fix; this is the check, and it is deliberately wider
2750
+ than the cause. It fails for a token broken by a formatter, an editor, a merge
2751
+ or a careless edit — and the thing that must hold is the file, not one tool's
2752
+ configuration.
2753
+ """
2754
+ import re
2755
+ from harness.tree import assets_dir
2756
+
2757
+ # A token is `{{NAME}}` with NO inner spaces. The corrupted form still LOOKS
2758
+ # like a token to a reader, which is why this asserts the shape rather than
2759
+ # merely the presence of braces.
2760
+ good = re.compile(r"\{\{[A-Z][A-Z0-9_]*\}\}")
2761
+ broken = re.compile(r"\{\s*\{[^{}]*\}\s*\}")
2762
+ offenders = []
2763
+ for md in sorted(assets_dir().rglob("*.md")):
2764
+ text = md.read_text()
2765
+ for m in broken.finditer(text):
2766
+ if not good.fullmatch(m.group(0)):
2767
+ offenders.append(f"{md.name}: {m.group(0)}")
2768
+ assert not offenders, (
2769
+ "template token(s) no longer substitutable — a formatter has probably "
2770
+ f"reformatted them: {offenders[:5]}")
2771
+
2772
+
2741
2773
  def test_the_completion_gate_refuses_and_says_which_gate_held():
2742
2774
  with tempfile.TemporaryDirectory() as tmp:
2743
2775
  v = _tree(tmp)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appchy/jarvis",
3
- "version": "0.1.81",
3
+ "version": "0.1.82",
4
4
  "description": "Jarvis — local AI coding assistant CLI",
5
5
  "private": false,
6
6
  "type": "module",
@@ -56,14 +56,14 @@
56
56
  "tsup": "^8.5.1",
57
57
  "typescript": "^5.7.0",
58
58
  "vitest": "^2.1.0",
59
- "@jarvis/agents": "1.0.0",
60
59
  "@jarvis/anthropic": "1.0.0",
61
60
  "@jarvis/board": "0.1.0",
62
- "@jarvis/data": "0.1.0",
61
+ "@jarvis/agents": "1.0.0",
63
62
  "@jarvis/errors": "1.0.0",
64
63
  "@jarvis/logger": "1.0.0",
65
64
  "@jarvis/rpc": "1.0.0",
66
65
  "@jarvis/types": "1.0.0",
66
+ "@jarvis/data": "0.1.0",
67
67
  "@jarvis/typescript-config": "1.0.0",
68
68
  "@jarvis/ui": "0.1.0",
69
69
  "@jarvis/vitest-config": "1.0.0"