forget-connect 0.5.0 → 0.5.1

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.
@@ -24,6 +24,42 @@ FORGET_URL = os.environ.get("FORGET_MCP_URL", "http://127.0.0.1:8000/mcp")
24
24
  STATE_DIR = os.path.expanduser("~/.forget/hooks/state")
25
25
  CAPSULE_CHAR_BUDGET = 1_600 # ~400 tokens
26
26
  HANDOFF_MAX_AGE_SECONDS = 48 * 3600 # a stale shift-note is worse than none
27
+ # The server capability these hooks are built against. The capsule response
28
+ # carries server_version from 0.3.9 on; older servers silently drop arguments
29
+ # these hooks send (project layering) — that mismatch must never be silent.
30
+ REQUIRED_SERVER_VERSION = "0.3.9"
31
+
32
+
33
+ def _version_tuple(value: str) -> tuple:
34
+ parts = []
35
+ for chunk in str(value or "").split("."):
36
+ digits = "".join(ch for ch in chunk if ch.isdigit())
37
+ parts.append(int(digits) if digits else 0)
38
+ return tuple(parts or [0])
39
+
40
+
41
+ def _version_notice(server_version: str) -> str:
42
+ """One warning line for the capsule header area, or ''.
43
+
44
+ Two signals, no network: the server's self-reported version (mismatch =
45
+ features silently lost), and the update-check cache that doctor/status
46
+ maintain (a local file — hooks never call out).
47
+ """
48
+ if not server_version:
49
+ return "⚠ 서버가 버전을 안 밝힘(≤0.3.8) — 훅 기능 일부가 조용히 무시될 수 있음. 처방: forget-server upgrade"
50
+ if _version_tuple(server_version) < _version_tuple(REQUIRED_SERVER_VERSION):
51
+ return (
52
+ f"⚠ 서버 {server_version} < 훅 요구 {REQUIRED_SERVER_VERSION} — "
53
+ "프로젝트 층 등이 조용히 무시됨. 처방: forget-server upgrade"
54
+ )
55
+ try:
56
+ with open(os.path.expanduser("~/.forget/update-check.json"), encoding="utf-8") as fh:
57
+ latest = str(json.load(fh).get("latest") or "")
58
+ if latest and _version_tuple(server_version) < _version_tuple(latest):
59
+ return f"새 버전 {latest} 나옴 (현재 {server_version}) — forget-server upgrade"
60
+ except Exception:
61
+ pass
62
+ return ""
27
63
 
28
64
 
29
65
  def _consume_handoff() -> str:
@@ -97,10 +133,13 @@ def main() -> None:
97
133
  if isinstance(items, list) and items:
98
134
  capsule = "\n".join(f"- {item}" for item in items[:6] if isinstance(item, str))
99
135
  handoff = _consume_handoff()
136
+ notice = _version_notice(str(result.get("server_version") or ""))
100
137
  if not capsule and not handoff:
101
- return # low confidence → silence
138
+ return # low confidence → silence (version nags don't earn a lone injection)
102
139
  shown = capsule[:CAPSULE_CHAR_BUDGET]
103
140
  parts = []
141
+ if notice:
142
+ parts.append(f"[forget 버전] {notice}")
104
143
  if handoff:
105
144
  parts.append(handoff)
106
145
  if shown:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forget-connect",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Safely connect Claude Code, Codex, and Claude Desktop to Forget memory.",
5
5
  "type": "module",
6
6
  "bin": {