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:
|