@litfamily/lithermes 1.0.15 → 1.0.16

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/README.md CHANGED
@@ -1,16 +1,16 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitHermes robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitHermes robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
2
2
 
3
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B mark" /></p>
3
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B mark" /></p>
4
4
 
5
5
  <p align="center">
6
- <a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/badge-version.svg" alt="1.0.15" /></a>
7
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/badge-license.svg" alt="MIT license" /></a>
6
+ <a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/badge-version.svg" alt="1.0.16" /></a>
7
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/badge-license.svg" alt="MIT license" /></a>
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/lucide-book-open.svg" width="16" alt="" /> Guide</a> &nbsp;
12
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition film</a> &nbsp;
13
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
11
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/lucide-book-open.svg" width="16" alt="" /> Guide</a> &nbsp;
12
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition film</a> &nbsp;
13
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
14
14
  </p>
15
15
 
16
16
  # LitHermes
@@ -19,7 +19,7 @@
19
19
 
20
20
  A plugin for **Hermes Agent**. Add `lit` to a request, and Hermes plans the task, does it, checks it, and leaves a note the next session can pick up.
21
21
 
22
- **[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/lithermes#readme)** · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/README_Ko-KR.md)
22
+ **[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/lithermes#readme)** · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/README_Ko-KR.md)
23
23
 
24
24
  ## Install
25
25
 
package/README_Ko-KR.md CHANGED
@@ -1,16 +1,16 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitHermes 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitHermes 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
2
2
 
3
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B 마크" /></p>
3
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B 마크" /></p>
4
4
 
5
5
  <p align="center">
6
- <a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/badge-version.svg" alt="1.0.15" /></a>
7
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/badge-license.svg" alt="MIT license" /></a>
6
+ <a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/badge-version.svg" alt="1.0.16" /></a>
7
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/badge-license.svg" alt="MIT license" /></a>
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.ko.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/lucide-book-open.svg" width="16" alt="" /> 안내</a> &nbsp;
12
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition 영상</a> &nbsp;
13
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
11
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.ko.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/lucide-book-open.svg" width="16" alt="" /> 안내</a> &nbsp;
12
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition 영상</a> &nbsp;
13
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
14
14
  </p>
15
15
 
16
16
  # LitHermes
@@ -19,7 +19,7 @@
19
19
 
20
20
  **Hermes Agent**용 플러그인입니다. 요청에 `lit`을 붙이면 Hermes가 작업을 계획하고, 실행하고, 확인한 뒤 다음 세션이 이어받을 기록을 남깁니다.
21
21
 
22
- **[전체 안내와 스킬 갤러리는 GitHub에서](https://github.com/wjgoarxiv/lithermes/blob/main/README_Ko-KR.md)** · [English](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.15/README.md)
22
+ **[전체 안내와 스킬 갤러리는 GitHub에서](https://github.com/wjgoarxiv/lithermes/blob/main/README_Ko-KR.md)** · [English](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.16/README.md)
23
23
 
24
24
  ## 설치
25
25
 
@@ -87,6 +87,7 @@ _NOFOLLOW = getattr(os, "O_NOFOLLOW", 0)
87
87
  _PERCENT = re.compile(r"[0-9]{1,2}")
88
88
  _BARE_HANDOFF = re.compile(r"^\s*handoff\s*$", re.IGNORECASE)
89
89
  _HEADING = re.compile(r"^#{1,4}\s*(.+?)\s*$")
90
+ _MARKDOWN_DECORATION = re.compile(r"[*_`]|<!--|-->")
90
91
  _WANTED_SECTIONS = (("current state", "Current State"), ("next steps", "Next Steps"))
91
92
  _LOCK = threading.RLock()
92
93
  _SESSIONS: dict[str, dict[str, Any]] = {}
@@ -666,6 +667,14 @@ def _directive_block(state: Mapping[str, Any], percent: int) -> str:
666
667
  ])
667
668
 
668
669
 
670
+ def _marker_on_line(line: str, nonce: str) -> bool:
671
+ """True when the line carries this session's marker, however Markdown dresses it (bullet, quote,
672
+ bold, italics, backticks, comment, a leading label). The id must match exactly and end on a
673
+ non-hex character."""
674
+ plain = _MARKDOWN_DECORATION.sub("", line)
675
+ return re.search(rf"(?i:auto-handoff-id)[ \t]*:[ \t]*{re.escape(nonce)}(?![0-9a-f])", plain) is not None
676
+
677
+
669
678
  def _find_handoff(state: Mapping[str, Any]) -> tuple[str, float, str] | None:
670
679
  found: tuple[str, float, str] | None = None
671
680
  for relative in HANDOFF_CANDIDATES:
@@ -681,7 +690,7 @@ def _find_handoff(state: Mapping[str, Any]) -> tuple[str, float, str] | None:
681
690
  text = handle.read(MAX_HANDOFF_READ_BYTES).decode("utf-8", "replace")
682
691
  except OSError:
683
692
  continue
684
- if re.search(rf"auto-handoff-id:[ \t]*{re.escape(state['nonce'])}(?![0-9a-f])", text) is None:
693
+ if not any(_marker_on_line(line, state["nonce"]) for line in text.splitlines()):
685
694
  continue
686
695
  if found is None or info.st_mtime > found[1]:
687
696
  found = (relative, info.st_mtime, text)
@@ -698,7 +707,7 @@ def _digest(text: str, nonce: str) -> str:
698
707
  title = heading.group(1).lower()
699
708
  current = next((label for key, label in _WANTED_SECTIONS if key in title), "")
700
709
  continue
701
- if nonce in line or not line.strip():
710
+ if nonce in line or _marker_on_line(line, nonce) or not line.strip():
702
711
  continue
703
712
  if len(body) < MAX_DIGEST_LINES:
704
713
  body.append(line.strip()[:MAX_DIGEST_LINE_CHARS])
@@ -1,7 +1,7 @@
1
1
  {
2
- "syncedAt": "2026-09-30T13:06:01.009Z",
2
+ "syncedAt": "2026-10-01T12:46:03.128Z",
3
3
  "source": "bundled-payload",
4
- "sourceHash": "92b298c9a38364d94b56fb497641d44835bb3bda3230338eb6a769647a5f61b5",
4
+ "sourceHash": "e01bfaa1dbee52cc21eceee9f7c8095f7eaa94685e92eadaaeed08998fbd9e43",
5
5
  "files": [
6
6
  {
7
7
  "path": "NOTICE.md",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  {
19
19
  "path": "auto_handoff.py",
20
- "sha256": "7c0e5385373cc83b202669a9ab500d46e04d79c5a188ed2ffdea93f863ec7dab"
20
+ "sha256": "452a027f6f8cc800ff723a137ffec3e6b4a582b464519e2e1556c8d141a20242"
21
21
  },
22
22
  {
23
23
  "path": "auto_update.py",
@@ -181,7 +181,7 @@
181
181
  },
182
182
  {
183
183
  "path": "plugin.yaml",
184
- "sha256": "b086300c1f74bf85aca8be93bf6fdf9112e35536f050ff109456584952c1ec78"
184
+ "sha256": "2af459b0dabd0b5800fbc25ccf14b20e56295f9fc6f370f170ab5f0b879c00d9"
185
185
  },
186
186
  {
187
187
  "path": "provider_metrics.py",
@@ -1285,7 +1285,7 @@
1285
1285
  },
1286
1286
  {
1287
1287
  "path": "skills/frontend-ui-ux/references/complete-contract.md",
1288
- "sha256": "a42439ee181e68b729f969e5b8243205566a64e6f212894f2284735f2737809c"
1288
+ "sha256": "475d183a1a31a625b7e176515242319b3fb3ee45455ee610155d97d5a49aa744"
1289
1289
  },
1290
1290
  {
1291
1291
  "path": "skills/frontend-ui-ux/references/composition.md",
@@ -4153,7 +4153,7 @@
4153
4153
  },
4154
4154
  {
4155
4155
  "path": "skills/visual-qa/references/complete-contract.md",
4156
- "sha256": "65b9754533bf3a07fc32d2e6a4b479d885e4bc7bcd25030c1dd36418db748eeb"
4156
+ "sha256": "e9d0a6972ffbb089b644dc1d4737427bd8569b472b3508b26c079607ebdd293b"
4157
4157
  },
4158
4158
  {
4159
4159
  "path": "skills/visual-qa/schemas/evidence-manifest-v1alpha1.schema.json",
@@ -1,5 +1,5 @@
1
1
  name: lithermes
2
- version: 1.0.15
2
+ version: 1.0.16
3
3
  description: "Hermes-native workflow toolkit: litgoal durable runtime, 5-lane review orchestrator, Litwork commands, skills, and prompt steering."
4
4
  author: "LitHermes contributors"
5
5
  kind: standalone
@@ -445,7 +445,7 @@ isolated Hermes home. Use `--hermes-home`; never `--home`.
445
445
 
446
446
  ```text
447
447
  $ node packages/lithermes-installer/bin/lithermes.js install --yes --offline --no-hud --hermes-home "$ISOLATED"
448
- Installed LitHermes 1.0.15
448
+ Installed LitHermes 1.0.16
449
449
  plugin: $ISOLATED/plugins/lithermes
450
450
  model config: updated
451
451
 
@@ -462,7 +462,7 @@ installed payload: PASS
462
462
  enabled config: PASS
463
463
 
464
464
  $ hermes lithermes doctor
465
- [OK] plugin.yaml readable (version 1.0.15)
465
+ [OK] plugin.yaml readable (version 1.0.16)
466
466
  [OK] skills bundled: 36
467
467
  [OK] litgoal durable runtime importable
468
468
  ```
@@ -485,7 +485,7 @@ isolated Hermes home. Use `--hermes-home`; never `--home`.
485
485
 
486
486
  ```text
487
487
  $ node packages/lithermes-installer/bin/lithermes.js install --yes --offline --no-hud --hermes-home "$ISOLATED"
488
- Installed LitHermes 1.0.15
488
+ Installed LitHermes 1.0.16
489
489
  plugin: $ISOLATED/plugins/lithermes
490
490
  model config: updated
491
491
 
@@ -502,7 +502,7 @@ installed payload: PASS
502
502
  enabled config: PASS
503
503
 
504
504
  $ hermes lithermes doctor
505
- [OK] plugin.yaml readable (version 1.0.15)
505
+ [OK] plugin.yaml readable (version 1.0.16)
506
506
  [OK] skills bundled: 36
507
507
  [OK] litgoal durable runtime importable
508
508
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litfamily/lithermes",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "npx/bunx installer for the LitHermes Hermes plugin",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.15"><title>release: 1.0.15</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.15</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.16"><title>release: 1.0.16</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.16</text></g></svg>