scrybe-cli 0.1.1__tar.gz → 0.2.0__tar.gz

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 (58) hide show
  1. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/Cargo.lock +10 -10
  2. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/Cargo.toml +8 -8
  3. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/PKG-INFO +1 -1
  4. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/pyproject.toml +1 -1
  5. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/Cargo.toml +1 -1
  6. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/Cargo.toml +1 -1
  7. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/Cargo.toml +1 -1
  8. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/pyproject.toml +1 -1
  9. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/Cargo.toml +1 -1
  10. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/README.md +31 -0
  11. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/pyproject.toml +4 -1
  12. scrybe_cli-0.2.0/scrybe-mermaid/tests/test_python_quickstart.py +53 -0
  13. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/Cargo.toml +1 -1
  14. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-rpc/Cargo.toml +1 -1
  15. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-rpc/src/lib.rs +32 -25
  16. scrybe_cli-0.1.1/scrybe-mcp-server/scrybe_mcp_server/__init__.py +0 -25
  17. scrybe_cli-0.1.1/scrybe-mcp-server/scrybe_mcp_server/__main__.py +0 -2
  18. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/README.md +0 -0
  19. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/python/scrybe_cli/__init__.py +0 -0
  20. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/python/scrybe_cli/py.typed +0 -0
  21. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/README.md +0 -0
  22. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/src/lib.rs +0 -0
  23. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/src/lint.rs +0 -0
  24. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/src/main.rs +0 -0
  25. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/src/rpc_client.rs +0 -0
  26. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/src/wrap.rs +0 -0
  27. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-cli/tests/rpc_socket.rs +0 -0
  28. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/README.md +0 -0
  29. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/ast.rs +0 -0
  30. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/change.rs +0 -0
  31. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/content.rs +0 -0
  32. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/document.rs +0 -0
  33. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/error.rs +0 -0
  34. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/lib.rs +0 -0
  35. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/plugin.rs +0 -0
  36. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-core/src/workspace.rs +0 -0
  37. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/README.md +0 -0
  38. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/python/scrybe_mcp_server/__init__.py +0 -0
  39. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/python/scrybe_mcp_server/py.typed +0 -0
  40. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/src/lib.rs +0 -0
  41. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/src/main.rs +0 -0
  42. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/src/server.rs +0 -0
  43. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mcp-server/src/tools.rs +0 -0
  44. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/python/scrybe_mermaid/__init__.py +0 -0
  45. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/python/scrybe_mermaid/py.typed +0 -0
  46. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/src/codec.rs +0 -0
  47. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/src/error.rs +0 -0
  48. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-mermaid/src/lib.rs +0 -0
  49. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/README.md +0 -0
  50. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/html.rs +0 -0
  51. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/lib.rs +0 -0
  52. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/math.rs +0 -0
  53. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/mermaid.rs +0 -0
  54. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/theme.rs +0 -0
  55. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/themes/dark.css +0 -0
  56. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/themes/default.css +0 -0
  57. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-render/src/themes/solarized.css +0 -0
  58. {scrybe_cli-0.1.1 → scrybe_cli-0.2.0}/scrybe-rpc/README.md +0 -0
@@ -3525,7 +3525,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
3525
3525
 
3526
3526
  [[package]]
3527
3527
  name = "scrybe-app"
3528
- version = "0.1.1"
3528
+ version = "0.2.0"
3529
3529
  dependencies = [
3530
3530
  "anyhow",
3531
3531
  "dirs 5.0.1",
@@ -3551,7 +3551,7 @@ dependencies = [
3551
3551
 
3552
3552
  [[package]]
3553
3553
  name = "scrybe-cli"
3554
- version = "0.1.1"
3554
+ version = "0.2.0"
3555
3555
  dependencies = [
3556
3556
  "anyhow",
3557
3557
  "clap",
@@ -3570,7 +3570,7 @@ dependencies = [
3570
3570
 
3571
3571
  [[package]]
3572
3572
  name = "scrybe-core"
3573
- version = "0.1.1"
3573
+ version = "0.2.0"
3574
3574
  dependencies = [
3575
3575
  "anyhow",
3576
3576
  "blake3",
@@ -3587,7 +3587,7 @@ dependencies = [
3587
3587
 
3588
3588
  [[package]]
3589
3589
  name = "scrybe-mcp-client"
3590
- version = "0.1.1"
3590
+ version = "0.2.0"
3591
3591
  dependencies = [
3592
3592
  "anyhow",
3593
3593
  "dirs 5.0.1",
@@ -3602,7 +3602,7 @@ dependencies = [
3602
3602
 
3603
3603
  [[package]]
3604
3604
  name = "scrybe-mcp-server"
3605
- version = "0.1.1"
3605
+ version = "0.2.0"
3606
3606
  dependencies = [
3607
3607
  "anyhow",
3608
3608
  "clap",
@@ -3619,7 +3619,7 @@ dependencies = [
3619
3619
 
3620
3620
  [[package]]
3621
3621
  name = "scrybe-mermaid"
3622
- version = "0.1.1"
3622
+ version = "0.2.0"
3623
3623
  dependencies = [
3624
3624
  "anyhow",
3625
3625
  "base64 0.22.1",
@@ -3635,7 +3635,7 @@ dependencies = [
3635
3635
 
3636
3636
  [[package]]
3637
3637
  name = "scrybe-py"
3638
- version = "0.1.1"
3638
+ version = "0.2.0"
3639
3639
  dependencies = [
3640
3640
  "anyhow",
3641
3641
  "pyo3",
@@ -3649,7 +3649,7 @@ dependencies = [
3649
3649
 
3650
3650
  [[package]]
3651
3651
  name = "scrybe-render"
3652
- version = "0.1.1"
3652
+ version = "0.2.0"
3653
3653
  dependencies = [
3654
3654
  "anyhow",
3655
3655
  "pulldown-cmark",
@@ -3662,7 +3662,7 @@ dependencies = [
3662
3662
 
3663
3663
  [[package]]
3664
3664
  name = "scrybe-rpc"
3665
- version = "0.1.1"
3665
+ version = "0.2.0"
3666
3666
  dependencies = [
3667
3667
  "serde",
3668
3668
  "serde_json",
@@ -3671,7 +3671,7 @@ dependencies = [
3671
3671
 
3672
3672
  [[package]]
3673
3673
  name = "scrybe-vcs"
3674
- version = "0.1.1"
3674
+ version = "0.2.0"
3675
3675
  dependencies = [
3676
3676
  "anyhow",
3677
3677
  "chrono",
@@ -52,14 +52,14 @@ tauri-build = { version = "2", features = [] }
52
52
  # Internal crates — version pinned (=) so cargo publish accepts the
53
53
  # tarballs (path-deps without versions are rejected at publish time).
54
54
  # Workspace lock-step: every release bumps all members together.
55
- scrybe-core = { path = "scrybe-core", version = "=0.1.1" }
56
- scrybe-render = { path = "scrybe-render", version = "=0.1.1" }
57
- scrybe-mcp-client = { path = "scrybe-mcp-client", version = "=0.1.1" }
58
- scrybe-mcp-server = { path = "scrybe-mcp-server", version = "=0.1.1" }
59
- scrybe-mermaid = { path = "scrybe-mermaid", version = "=0.1.1" }
60
- scrybe-vcs = { path = "scrybe-vcs", version = "=0.1.1" }
61
- scrybe-py = { path = "scrybe-py", version = "=0.1.1" }
62
- scrybe-rpc = { path = "scrybe-rpc", version = "=0.1.1" }
55
+ scrybe-core = { path = "scrybe-core", version = "=0.2.0" }
56
+ scrybe-render = { path = "scrybe-render", version = "=0.2.0" }
57
+ scrybe-mcp-client = { path = "scrybe-mcp-client", version = "=0.2.0" }
58
+ scrybe-mcp-server = { path = "scrybe-mcp-server", version = "=0.2.0" }
59
+ scrybe-mermaid = { path = "scrybe-mermaid", version = "=0.2.0" }
60
+ scrybe-vcs = { path = "scrybe-vcs", version = "=0.2.0" }
61
+ scrybe-py = { path = "scrybe-py", version = "=0.2.0" }
62
+ scrybe-rpc = { path = "scrybe-rpc", version = "=0.2.0" }
63
63
 
64
64
  [workspace.lints.clippy]
65
65
  explicit_iter_loop = "warn"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scrybe-cli
3
- Version: 0.1.1
3
+ Version: 0.2.0
4
4
  Summary: Scrybe CLI — headless Markdown render/lint/mermaid tool (binary wheel)
5
5
  Home-Page: https://github.com/hartsock/scrybe
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "scrybe-cli"
7
- version = "0.1.1"
7
+ version = "0.2.0"
8
8
  description = "Scrybe CLI — headless Markdown render/lint/mermaid tool (binary wheel)"
9
9
  license = {text = "Apache-2.0"}
10
10
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "scrybe-cli"
3
- version = "0.1.1"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Scrybe CLI — headless render/lint/mermaid/panel command-line tool"
6
6
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "scrybe-core"
3
- version = "0.1.1"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Scrybe core — AST, Document, ContentAddressable, Plugin trait, Workspace"
6
6
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "scrybe-mcp-server"
3
- version = "0.1.1"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Scrybe MCP server — inbound MCP tools: open/read/section/edit/diff/find/embed/lint"
6
6
  license = "Apache-2.0"
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "scrybe-mcp-server"
7
- version = "0.1.1"
7
+ version = "0.2.0"
8
8
  description = "Scrybe MCP server — standalone inbound MCP server (binary wheel)"
9
9
  license = {text = "Apache-2.0"}
10
10
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "scrybe-mermaid"
3
- version = "0.1.1"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Scrybe mermaid — standalone PNG iTXt codec, embeds Mermaid source in PNG metadata"
6
6
  license = "Apache-2.0"
@@ -16,6 +16,37 @@ Mermaid diagram source alongside the rendered image. The PNG is fully valid
16
16
  and renders normally in any image viewer. The source text travels with the
17
17
  image and can be round-tripped without loss.
18
18
 
19
+ ## Python quick start
20
+
21
+ ```bash
22
+ pip install scrybe-mermaid
23
+ ```
24
+
25
+ ```python
26
+ from pathlib import Path
27
+ from scrybe_mermaid import embed, extract
28
+
29
+ source = """
30
+ graph TD
31
+ A[Christmas] -->|Get money| B(Go shopping)
32
+ B --> C{Let me think}
33
+ C -->|One| D[Laptop]
34
+ C -->|Two| E[iPhone]
35
+ """
36
+
37
+ # diagram.png: any PNG — render one with mmdc, Kroki, or the Mermaid live editor
38
+ png_in = Path("diagram.png").read_bytes()
39
+ png_out = embed(png_in, source)
40
+ Path("diagram-with-source.png").write_bytes(png_out)
41
+
42
+ payload = extract(png_out)
43
+ if payload.source != source: # optional
44
+ raise ValueError("Round-trip mismatch")
45
+ print(f"Round-tripped {len(payload.source)} chars; sha256={payload.sha256[:12]}…")
46
+ ```
47
+
48
+ The resulting PNG renders normally in any image viewer *and* carries its own Mermaid source for round-tripping. See the [API reference](#key-public-types-and-entry-points) below.
49
+
19
50
  ## Codec format
20
51
 
21
52
  - **Chunk key:** `scrybe-mermaid`
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "scrybe-mermaid"
7
- version = "0.1.1"
7
+ version = "0.2.0"
8
8
  description = "Scrybe Mermaid — standalone PNG iTXt codec (Rust-backed)"
9
9
  license = {text = "Apache-2.0"}
10
10
  readme = "README.md"
@@ -14,6 +14,9 @@ dependencies = []
14
14
  [project.urls]
15
15
  Homepage = "https://github.com/hartsock/scrybe"
16
16
 
17
+ [tool.pytest.ini_options]
18
+ testpaths = ["tests"]
19
+
17
20
  [tool.maturin]
18
21
  module-name = "scrybe_mermaid._rust"
19
22
  python-source = "python"
@@ -0,0 +1,53 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ """Integration test: README Python quick-start example round-trips correctly."""
3
+ import struct
4
+ import zlib
5
+ from pathlib import Path
6
+
7
+ import pytest
8
+
9
+ scrybe_mermaid = pytest.importorskip("scrybe_mermaid")
10
+
11
+
12
+ def _minimal_png() -> bytes:
13
+ """Build a 1×1 white RGB PNG from stdlib primitives — no external deps."""
14
+ sig = b"\x89PNG\r\n\x1a\n"
15
+
16
+ def chunk(name: bytes, data: bytes) -> bytes:
17
+ crc = zlib.crc32(name + data) & 0xFFFFFFFF
18
+ return struct.pack(">I", len(data)) + name + data + struct.pack(">I", crc)
19
+
20
+ ihdr = struct.pack(">IIBBBBB", 1, 1, 8, 2, 0, 0, 0) # 1×1, 8-bit RGB
21
+ idat = zlib.compress(b"\x00\xff\xff\xff") # filter=0, R G B = white
22
+ return sig + chunk(b"IHDR", ihdr) + chunk(b"IDAT", idat) + chunk(b"IEND", b"")
23
+
24
+
25
+ def test_readme_quickstart_roundtrip(tmp_path: Path) -> None:
26
+ """README quick-start example embeds and extracts Mermaid source correctly."""
27
+ if not scrybe_mermaid._RUST_AVAILABLE:
28
+ pytest.skip("Rust extension not built — run: maturin develop --release")
29
+
30
+ (tmp_path / "diagram.png").write_bytes(_minimal_png())
31
+
32
+ # ── verbatim from README ──────────────────────────────────────────────────
33
+ source = """
34
+ graph TD
35
+ A[Christmas] -->|Get money| B(Go shopping)
36
+ B --> C{Let me think}
37
+ C -->|One| D[Laptop]
38
+ C -->|Two| E[iPhone]
39
+ """
40
+
41
+ png_in = (tmp_path / "diagram.png").read_bytes()
42
+ png_out = scrybe_mermaid.embed(png_in, source)
43
+ (tmp_path / "diagram-with-source.png").write_bytes(png_out)
44
+
45
+ payload = scrybe_mermaid.extract(png_out)
46
+ if payload.source != source:
47
+ raise ValueError("Round-trip mismatch")
48
+ print(f"Round-tripped {len(payload.source)} chars; sha256={payload.sha256[:12]}…")
49
+ # ─────────────────────────────────────────────────────────────────────────
50
+
51
+ assert (tmp_path / "diagram-with-source.png").exists()
52
+ assert payload.source == source
53
+ assert len(payload.sha256) == 64 # SHA-256 hex is always 64 chars
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "scrybe-render"
3
- version = "0.1.1"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Scrybe render — Markdown-to-HTML pipeline, syntect, KaTeX/Mermaid"
6
6
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "scrybe-rpc"
3
- version = "0.1.1"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Scrybe CLI ↔ GUI wire protocol — JSON-RPC 2.0 types over a Unix socket."
6
6
  license = "Apache-2.0"
@@ -311,11 +311,21 @@ impl Response {
311
311
  /// Resolve the socket path: `$SCRYBE_SOCK` if set, otherwise `~/.scrybe/sock`.
312
312
  /// Falls back to `/tmp/.scrybe-sock` only if `$HOME` is also unset.
313
313
  pub fn default_socket_path() -> PathBuf {
314
- if let Ok(s) = std::env::var("SCRYBE_SOCK") {
314
+ resolve_socket_path(
315
+ std::env::var("SCRYBE_SOCK").ok().as_deref(),
316
+ std::env::var("HOME").ok().as_deref(),
317
+ )
318
+ }
319
+
320
+ /// Pure resolution logic for [`default_socket_path`]. Split out so it can be
321
+ /// unit-tested without mutating process-global env vars (which races across
322
+ /// parallel tests).
323
+ fn resolve_socket_path(sock_override: Option<&str>, home: Option<&str>) -> PathBuf {
324
+ if let Some(s) = sock_override {
315
325
  return PathBuf::from(s);
316
326
  }
317
- if let Ok(home) = std::env::var("HOME") {
318
- return PathBuf::from(home).join(".scrybe").join("sock");
327
+ if let Some(h) = home {
328
+ return PathBuf::from(h).join(".scrybe").join("sock");
319
329
  }
320
330
  PathBuf::from("/tmp/.scrybe-sock")
321
331
  }
@@ -545,32 +555,29 @@ mod tests {
545
555
  }
546
556
 
547
557
  #[test]
548
- fn default_socket_path_uses_env_override() {
549
- // Save and restore so the test doesn't leak.
550
- let prev_sock = std::env::var("SCRYBE_SOCK").ok();
551
- std::env::set_var("SCRYBE_SOCK", "/tmp/custom-scrybe-sock");
552
- let p = default_socket_path();
558
+ fn resolve_socket_path_uses_override() {
559
+ let p = resolve_socket_path(Some("/tmp/custom-scrybe-sock"), Some("/home/test"));
553
560
  assert_eq!(p, PathBuf::from("/tmp/custom-scrybe-sock"));
554
- match prev_sock {
555
- Some(v) => std::env::set_var("SCRYBE_SOCK", v),
556
- None => std::env::remove_var("SCRYBE_SOCK"),
557
- }
558
561
  }
559
562
 
560
563
  #[test]
561
- fn default_socket_path_uses_home() {
562
- let prev_sock = std::env::var("SCRYBE_SOCK").ok();
563
- std::env::remove_var("SCRYBE_SOCK");
564
- let prev_home = std::env::var("HOME").ok();
565
- std::env::set_var("HOME", "/home/test");
566
- let p = default_socket_path();
564
+ fn resolve_socket_path_uses_home_when_no_override() {
565
+ let p = resolve_socket_path(None, Some("/home/test"));
567
566
  assert_eq!(p, PathBuf::from("/home/test/.scrybe/sock"));
568
- match prev_home {
569
- Some(v) => std::env::set_var("HOME", v),
570
- None => std::env::remove_var("HOME"),
571
- }
572
- if let Some(v) = prev_sock {
573
- std::env::set_var("SCRYBE_SOCK", v);
574
- }
567
+ }
568
+
569
+ #[test]
570
+ fn resolve_socket_path_falls_back_when_home_unset() {
571
+ let p = resolve_socket_path(None, None);
572
+ assert_eq!(p, PathBuf::from("/tmp/.scrybe-sock"));
573
+ }
574
+
575
+ #[test]
576
+ fn default_socket_path_returns_some_path() {
577
+ // Smoke test: the env-reading wrapper produces *some* path. The
578
+ // resolution logic itself is covered by the pure-function tests above,
579
+ // which don't race on process-global env vars.
580
+ let p = default_socket_path();
581
+ assert!(!p.as_os_str().is_empty());
575
582
  }
576
583
  }
@@ -1,25 +0,0 @@
1
- # SPDX-License-Identifier: Apache-2.0
2
- """scrybe-mcp-server — standalone Scrybe MCP server.
3
-
4
- Install: pip install scrybe-mcp-server
5
- Use: python -m scrybe_mcp_server stdio
6
- Or: claude mcp add scrybe -- python -m scrybe_mcp_server stdio
7
- """
8
- __version__ = "0.5.20260506"
9
-
10
- import subprocess
11
- import sys
12
-
13
-
14
- def _run() -> None:
15
- """Entry point: delegates to the compiled scrybe-mcp-server binary."""
16
- import shutil
17
- binary = shutil.which("scrybe-mcp-server")
18
- if binary is None:
19
- print("scrybe-mcp-server binary not found. Reinstall: pip install scrybe-mcp-server", file=sys.stderr)
20
- sys.exit(1)
21
- sys.exit(subprocess.call([binary] + sys.argv[1:]))
22
-
23
-
24
- if __name__ == "__main__":
25
- _run()
@@ -1,2 +0,0 @@
1
- from scrybe_mcp_server import _run
2
- _run()
File without changes