@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 +1 -1
- package/harness/test_work.py +32 -0
- package/package.json +3 -3
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 = "
|
|
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" : ""}`;
|
package/harness/test_work.py
CHANGED
|
@@ -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.
|
|
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/
|
|
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"
|