@appchy/jarvis 0.1.54 → 0.1.55
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/harness/safety.py +58 -0
- package/package.json +2 -2
package/dist/bin.js
CHANGED
|
@@ -9891,7 +9891,7 @@ import { createRequire as createRequire2 } from "module";
|
|
|
9891
9891
|
var _require = createRequire2(import.meta.url);
|
|
9892
9892
|
var VERSION2 = _require("../package.json").version ?? "0.0.0";
|
|
9893
9893
|
var IS_DEV = String(_require("../package.json").name ?? "").endsWith("-dev");
|
|
9894
|
-
var SHA = "
|
|
9894
|
+
var SHA = "60b2448";
|
|
9895
9895
|
var BUILT = "2026-09-09";
|
|
9896
9896
|
var BUILD = SHA ?? "source";
|
|
9897
9897
|
var BUILD_LABEL = `${SHA ? `${VERSION2} (${SHA}${BUILT ? ` ${BUILT}` : ""})` : `${VERSION2} (source)`}${IS_DEV ? " \u2014 development build" : ""}`;
|
|
@@ -10,6 +10,7 @@ import json
|
|
|
10
10
|
import os
|
|
11
11
|
import platform
|
|
12
12
|
import re
|
|
13
|
+
import shutil
|
|
13
14
|
import sys
|
|
14
15
|
from datetime import date
|
|
15
16
|
from pathlib import Path
|
|
@@ -137,6 +138,31 @@ def cmd_id_new(args) -> int:
|
|
|
137
138
|
return 0
|
|
138
139
|
|
|
139
140
|
|
|
141
|
+
#: The extractor `jarvis build graph` shells out to. The npm package is `graphifyy`
|
|
142
|
+
#: and the binary it installs is `graphify` — a letter apart, which is its own small
|
|
143
|
+
#: trap when somebody checks for the wrong one.
|
|
144
|
+
GRAPH_TOOL = "graphify"
|
|
145
|
+
|
|
146
|
+
#: Where a tool lands when it is installed and still not reachable. `uv` uses the
|
|
147
|
+
#: first; the rest are the ordinary places a user-level binary goes on macOS and
|
|
148
|
+
#: Linux, so the "installed but invisible" message can name the actual path rather
|
|
149
|
+
#: than guessing at one.
|
|
150
|
+
_TOOL_DIRS = ("~/.local/bin", "~/.cargo/bin", "/opt/homebrew/bin", "/usr/local/bin")
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def _installed_elsewhere(tool: str):
|
|
154
|
+
"""The tool's path if it is on disk somewhere PATH does not reach, else None.
|
|
155
|
+
|
|
156
|
+
Asked only after `shutil.which` has already said no, so a hit here means exactly
|
|
157
|
+
one thing: it is installed and the shell cannot see it.
|
|
158
|
+
"""
|
|
159
|
+
for d in _TOOL_DIRS:
|
|
160
|
+
candidate = Path(d).expanduser() / tool
|
|
161
|
+
if candidate.exists():
|
|
162
|
+
return candidate
|
|
163
|
+
return None
|
|
164
|
+
|
|
165
|
+
|
|
140
166
|
def _mcp_declared(repo: Path, server: str) -> bool:
|
|
141
167
|
"""Whether any `.mcp.json` in the project declares `server`."""
|
|
142
168
|
for p in (repo / ".mcp.json", repo / ".claude" / ".mcp.json"):
|
|
@@ -299,6 +325,38 @@ def cmd_doctor(args) -> int:
|
|
|
299
325
|
f"plugin — this checks declarations, it cannot probe a "
|
|
300
326
|
f"live server from here.")
|
|
301
327
|
|
|
328
|
+
# The extractor `jarvis build graph` shells out to. Only asked about in a repo
|
|
329
|
+
# that actually maps itself — a repo with no `jarvis.config.ts` neither needs
|
|
330
|
+
# the tool nor should be told to install it.
|
|
331
|
+
#
|
|
332
|
+
# **PATH, not installedness, and the difference is the whole check.** `uv tool
|
|
333
|
+
# install graphifyy` puts the binary in `~/.local/bin`, which a fresh macOS
|
|
334
|
+
# shell does not carry, and `uv` says so on the line before the scroll takes
|
|
335
|
+
# it. So the machine that most needs this check has the tool INSTALLED and
|
|
336
|
+
# UNREACHABLE — and a check asking `uv tool list` reports green on exactly
|
|
337
|
+
# that machine, which is how the failure survived being looked for. The two
|
|
338
|
+
# states get different messages because they need different instructions:
|
|
339
|
+
# one is "install it", the other is "your PATH is wrong", and telling
|
|
340
|
+
# somebody to reinstall a tool they already have is how a doctor loses its
|
|
341
|
+
# reader.
|
|
342
|
+
if (repo / "jarvis.config.ts").is_file():
|
|
343
|
+
found = shutil.which(GRAPH_TOOL)
|
|
344
|
+
if found:
|
|
345
|
+
ok("map tool", f"{GRAPH_TOOL} on PATH at {found}")
|
|
346
|
+
else:
|
|
347
|
+
stray = _installed_elsewhere(GRAPH_TOOL)
|
|
348
|
+
if stray:
|
|
349
|
+
bad("map tool", f"{GRAPH_TOOL} is INSTALLED but not on PATH — it "
|
|
350
|
+
f"is at {stray}, and your shell cannot see it, so "
|
|
351
|
+
f"`jarvis build graph` fails as though it were "
|
|
352
|
+
f"missing. Add its directory to PATH:\n"
|
|
353
|
+
f" export PATH=\"{stray.parent}:$PATH\"")
|
|
354
|
+
else:
|
|
355
|
+
bad("map tool", f"{GRAPH_TOOL} is not installed, so `jarvis build "
|
|
356
|
+
f"graph` cannot run and this repo has no map. "
|
|
357
|
+
f"Install it:\n"
|
|
358
|
+
f" uv tool install graphifyy")
|
|
359
|
+
|
|
302
360
|
if cfg["verify"]:
|
|
303
361
|
ok("verify", ", ".join(sorted(cfg["verify"])))
|
|
304
362
|
else:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appchy/jarvis",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.55",
|
|
4
4
|
"description": "Jarvis — local AI coding assistant CLI",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
"@jarvis/errors": "1.0.0",
|
|
64
64
|
"@jarvis/logger": "1.0.0",
|
|
65
65
|
"@jarvis/rpc": "1.0.0",
|
|
66
|
-
"@jarvis/types": "1.0.0",
|
|
67
66
|
"@jarvis/typescript-config": "1.0.0",
|
|
67
|
+
"@jarvis/types": "1.0.0",
|
|
68
68
|
"@jarvis/ui": "0.1.0",
|
|
69
69
|
"@jarvis/vitest-config": "1.0.0"
|
|
70
70
|
},
|