genetics-mcp 2.10.0 → 2.11.0

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.
Binary file
package/bin/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "aarch64-apple-darwin": "5f55dbeb42b014ba4ad849c536effab371d0a48382844536c3fcd03a36b93b3e",
3
- "aarch64-unknown-linux-musl": "e3dd6c45aa0a8310d66fb8cc8264730cde86194215e1f4a20dd3785508ae0b85",
4
- "x86_64-apple-darwin": "dce5e7e3746be8e2dbeae5f5749398095f4dcc07c098b8b2969488c7cf34b80a",
5
- "x86_64-unknown-linux-musl": "103cd8dd5d9ea942bf70603376884b88e74beae6fb4f3562d24d03ff1aeab887"
2
+ "aarch64-apple-darwin": "490fc2e63df176db0c7fad4a6ed01d90103ac0839e3ac15a023dbe21c6cebf80",
3
+ "aarch64-unknown-linux-musl": "a4571fe7eb68778094fc77cb9230d1374f02b76857882ca1608c6593b32dedb3",
4
+ "x86_64-apple-darwin": "24c3dcf235f76419afb429a9f8f4a328ff52aa6dd53795042fa3060e2f2528e4",
5
+ "x86_64-unknown-linux-musl": "0fa8151588ab65921846da51f88683af4a0517286dcedb27418f596363fe2ca7"
6
6
  }
Binary file
Binary file
package/genetics.mjs CHANGED
@@ -1674,6 +1674,8 @@ function indexAdoptCurrent() {
1674
1674
  if (p) rows.push({ dir: path.dirname(p), tenant: e.tenant, tenant_id: e.tenant_id });
1675
1675
  }
1676
1676
  const pick = adoptTenantOf(myDir, rows);
1677
+ // 이 폴더의 **첫 세션**이면 근거가 없다 — 여기서 조용히 되돌아가는 것은 의도이고,
1678
+ // 사람에게는 도구 응답 꼬리(`tenantNotice`)가 되풀이해 말한다. 여기서 말하면 20초마다다.
1677
1679
  if (!pick) return;
1678
1680
  if (pick.ambiguous) {
1679
1681
  // **조용히 넘기지 않는다** — 왜 안 올라가는지 사람이 알아야 한다.
@@ -2673,6 +2675,38 @@ function worldFacts(max = 8) {
2673
2675
  } catch { return null; }
2674
2676
  }
2675
2677
 
2678
+ /** 소속처 미등록 안내의 되풀이 간격. 설치 상태라 한 번만 말하면 놓친 세션은 영영 모른다. */
2679
+ const TENANT_NOTICE_MS = 30 * 60_000;
2680
+ let tenantSaidAt = 0;
2681
+
2682
+ /*
2683
+ * 「이 세션이 어느 소속처에도 안 붙어 있다」 — 변화분이 아니라 **고쳐야 할 설치 상태**다
2684
+ * (「세포가 없다」와 같은 성격이고, 고치면 저절로 사라진다).
2685
+ *
2686
+ * ⚠ **왜 저절로 안 붙나.** `indexAdoptCurrent()` 는 **같은 폴더의 앞 세션**을 근거로 붙인다
2687
+ * (`adoptTenantOf`). 그래서 그 폴더의 **첫 세션**은 근거가 없어 못 붙는데, 그 분기(`!pick`)는
2688
+ * 조용히 되돌아갔다 — 갈림이 있는 경우(`ambiguous`)만 말하고 있었다.
2689
+ *
2690
+ * 그 침묵의 값을 2026-08-26 에 쟀다: 색인 6항목이 **전부 한 폴더**(atflee/app)의 것이라
2691
+ * report-portal 폴더의 세션 넷이 색인 밖에 있었고, 세포가 소속처를 못 얻어
2692
+ * `spawn_sync` 가 첫 줄에서 되돌아갔다 — 메일·보유자·「이 세션이 속한 일」이 그 저장소에서
2693
+ * **한 번도 안 돌았다**(`world-<root>.json` 의 `cursor` 가 null 이었다).
2694
+ */
2695
+ function tenantNotice() {
2696
+ const mine = process.env.CLAUDE_CODE_SESSION_ID || '';
2697
+ if (!mine) return '';
2698
+ try {
2699
+ if (indexRead()[mine]?.tenant_id) return ''; // 붙어 있다 — 조용하다
2700
+ if (!credential()) return ''; // 자격이 없으면 붙일 수도 없다(다른 안내가 나간다)
2701
+ } catch { return ''; }
2702
+ const now = Date.now();
2703
+ if (now - tenantSaidAt < TENANT_NOTICE_MS) return '';
2704
+ tenantSaidAt = now;
2705
+ return 'genetics: 이 세션은 아직 어느 소속처에도 안 붙어 있다 — 이 폴더에 앞 세션이 없어 '
2706
+ + '자동 등록이 안 됐다. `push_session` 으로 한 번 정하면 그 뒤는 자동이고, '
2707
+ + '그래야 메일·보유자·「이 세션이 속한 일」이 이 저장소에서 돈다.';
2708
+ }
2709
+
2676
2710
  function worldDelta() {
2677
2711
  const { bin, why } = cellCheck();
2678
2712
  if (!bin) return cellNotice(why);
@@ -3129,6 +3163,10 @@ function worldAppend(result) {
3129
3163
  if (mm) result.content.push({ type: 'text', text: mm });
3130
3164
  const v = brainSays();
3131
3165
  if (v) result.content.push({ type: 'text', text: v });
3166
+ // ★ 소속처 미등록은 **델타보다 앞**이다. 델타가 비어도(조용한 구간) 나가야 하고,
3167
+ // 그것이 안 풀리면 위의 메일·백신도 이 저장소에서는 영영 안 온다.
3168
+ const tn = tenantNotice();
3169
+ if (tn) result.content.push({ type: 'text', text: tn });
3132
3170
  const t = worldDelta();
3133
3171
  if (!t) return;
3134
3172
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genetics-mcp",
3
- "version": "2.10.0",
3
+ "version": "2.11.0",
4
4
  "description": "문서 포털 발행·세션 이식·사례 기억 MCP — 데이터를 주면 규격 문서가 나온다 (짝인 스킬 동봉)",
5
5
  "author": "주식회사 LIM (LIM Inc.)",
6
6
  "license": "SEE LICENSE IN LICENSE",