@litfamily/lithermes 1.0.14 → 1.0.15
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 +8 -8
- package/README_Ko-KR.md +8 -8
- package/assets/lithermes-plugin/README.md +6 -4
- package/assets/lithermes-plugin/__init__.py +1 -0
- package/assets/lithermes-plugin/auto_handoff.py +57 -3
- package/assets/lithermes-plugin/diagnostics.py +4 -2
- package/assets/lithermes-plugin/payload-version.json +9 -9
- package/assets/lithermes-plugin/plugin.yaml +1 -1
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/complete-contract.md +2 -2
- package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +2 -2
- package/package.json +1 -1
- package/readme-assets/badge-version.svg +1 -1
- package/src/lib/modelRoutePolicy.js +9 -1
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.
|
|
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>
|
|
2
2
|
|
|
3
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
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>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
7
|
-
<a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
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>
|
|
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.
|
|
12
|
-
<a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
13
|
-
<a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
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>
|
|
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>
|
|
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>
|
|
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.
|
|
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)
|
|
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.
|
|
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>
|
|
2
2
|
|
|
3
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
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>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
7
|
-
<a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
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>
|
|
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.
|
|
12
|
-
<a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
13
|
-
<a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.
|
|
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>
|
|
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>
|
|
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>
|
|
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.
|
|
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)
|
|
23
23
|
|
|
24
24
|
## 설치
|
|
25
25
|
|
|
@@ -254,10 +254,12 @@ CLI/plugin name, not the npm package name.
|
|
|
254
254
|
- New installs default to the lead route `gpt-6-astra` / `xhigh` for planning,
|
|
255
255
|
review, and other lead work, and to `gpt-6-luna` / `max` for helpers and
|
|
256
256
|
ordinary workers on the global child route. Model diagnostics report these
|
|
257
|
-
routes without exposing credential fields. The coding-lead alternative is `gpt-6-sol` /
|
|
258
|
-
`xhigh`. Astra and
|
|
259
|
-
and `ultra`; Sol defaults to `xhigh` when selected as lead.
|
|
260
|
-
|
|
257
|
+
routes without exposing credential fields. The coding-lead alternative is `gpt-6.1-sol` /
|
|
258
|
+
`xhigh`. Astra and `gpt-6.1-sol` each support `low`, `medium`, `high`, `xhigh`,
|
|
259
|
+
`max`, and `ultra`; Sol defaults to `xhigh` when selected as lead. The previous
|
|
260
|
+
generation `gpt-6-sol` stays selectable with the same efforts, so existing
|
|
261
|
+
configs keep working. Luna supports `low`, `medium`, `high`, `xhigh`, and
|
|
262
|
+
`max`, with no `ultra`. Existing GPT-5.6
|
|
261
263
|
choices remain selectable within their listed bounds: `gpt-5.6-sol` at
|
|
262
264
|
`high` or `xhigh`, `gpt-5.6-terra` at `high`, `xhigh`, or `max`, and `gpt-5.6-luna`
|
|
263
265
|
at `high` or `max`; general `gpt-5.6` offers `high`. The live model catalog
|
|
@@ -329,6 +329,7 @@ def _auto_handoff_block(kwargs: dict[str, Any]) -> str:
|
|
|
329
329
|
user_message=kwargs.get("user_message"),
|
|
330
330
|
conversation_history=kwargs.get("conversation_history"),
|
|
331
331
|
platform=kwargs.get("platform"),
|
|
332
|
+
parent_session_id=kwargs.get("parent_session_id"),
|
|
332
333
|
)
|
|
333
334
|
except Exception: # noqa: BLE001 - advisory only
|
|
334
335
|
return ""
|
|
@@ -19,6 +19,12 @@ How it works on this host, step by step:
|
|
|
19
19
|
compaction summary in the history and loads a bounded digest of the handoff,
|
|
20
20
|
but only if the file carries this session's id and was written after the
|
|
21
21
|
directive. Anything else is refused.
|
|
22
|
+
4. Hermes moves a compacted conversation to a new session id. When a turn
|
|
23
|
+
arrives under an id this process has no waiting state for, carries a new
|
|
24
|
+
compaction summary, and exactly one session with the same platform and
|
|
25
|
+
profile is waiting for its reload, that state moves to the new id (a
|
|
26
|
+
``parent_session_id`` that names a waiting session settles it directly).
|
|
27
|
+
With two or more waiting sessions and no named parent, nothing is adopted.
|
|
22
28
|
|
|
23
29
|
The feature fires once per crossing of the percent, never inside a tool call,
|
|
24
30
|
and never for delegate children. State is kept in memory per session; only the
|
|
@@ -497,7 +503,7 @@ def _state(session_id: str) -> dict[str, Any]:
|
|
|
497
503
|
state = _SESSIONS[session_id] = {
|
|
498
504
|
"percent": None, "used": None, "window": None,
|
|
499
505
|
"above": False, "pending": False, "awaiting": False, "dropped": False,
|
|
500
|
-
"nonce": "", "fired_at": 0.0, "cwd": "", "summary": "",
|
|
506
|
+
"nonce": "", "fired_at": 0.0, "cwd": "", "summary": "", "platform": "", "home": "",
|
|
501
507
|
}
|
|
502
508
|
return state
|
|
503
509
|
|
|
@@ -576,8 +582,12 @@ def pre_llm_call(**kwargs: Any) -> str:
|
|
|
576
582
|
if not session_id or is_delegate_child_platform(str(kwargs.get("platform") or "")):
|
|
577
583
|
return ""
|
|
578
584
|
history = kwargs.get("conversation_history")
|
|
585
|
+
platform = str(kwargs.get("platform") or "")
|
|
579
586
|
with _LOCK:
|
|
580
587
|
state = _SESSIONS.get(session_id)
|
|
588
|
+
if state is None or _is_fresh(state):
|
|
589
|
+
adopted = _adopt_rotated(session_id, str(kwargs.get("parent_session_id") or ""), platform, history)
|
|
590
|
+
state = adopted or state
|
|
581
591
|
if state is None:
|
|
582
592
|
return ""
|
|
583
593
|
_LAST_SESSION[0] = session_id
|
|
@@ -591,12 +601,56 @@ def pre_llm_call(**kwargs: Any) -> str:
|
|
|
591
601
|
return ""
|
|
592
602
|
if not state["pending"] or _explicit_handoff_turn(str(kwargs.get("user_message") or "")):
|
|
593
603
|
return ""
|
|
604
|
+
if state["percent"] is None:
|
|
605
|
+
return ""
|
|
606
|
+
nonce = secrets.token_hex(6)
|
|
607
|
+
block = _directive_block({**state, "nonce": nonce}, setting.percent)
|
|
594
608
|
state["pending"], state["awaiting"], state["dropped"] = False, True, False
|
|
595
|
-
state["nonce"] =
|
|
609
|
+
state["nonce"] = nonce
|
|
596
610
|
state["fired_at"] = time.time()
|
|
597
611
|
state["cwd"] = os.getcwd()
|
|
598
612
|
state["summary"] = _summary_fingerprint(history)
|
|
599
|
-
|
|
613
|
+
state["platform"], state["home"] = platform, str(get_hermes_home())
|
|
614
|
+
return block
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
def _is_fresh(state: Mapping[str, Any]) -> bool:
|
|
618
|
+
"""A state that has only read usage: never crossed, never fired."""
|
|
619
|
+
return not (state["awaiting"] or state["pending"] or state["nonce"])
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
def _adopt_rotated(
|
|
623
|
+
session_id: str, parent_session_id: str, platform: str, history: Any
|
|
624
|
+
) -> dict[str, Any] | None:
|
|
625
|
+
"""Move a waiting state to the new id Hermes gave the conversation when it compacted.
|
|
626
|
+
|
|
627
|
+
Returns the moved state, or None when nothing is adopted. Caller holds the lock.
|
|
628
|
+
"""
|
|
629
|
+
if not any(value["awaiting"] for value in _SESSIONS.values()):
|
|
630
|
+
return None
|
|
631
|
+
summary = _summary_fingerprint(history)
|
|
632
|
+
if not summary:
|
|
633
|
+
return None
|
|
634
|
+
home = str(get_hermes_home())
|
|
635
|
+
waiting = {
|
|
636
|
+
key: value for key, value in _SESSIONS.items()
|
|
637
|
+
if key != session_id and value["awaiting"] and value["platform"] == platform
|
|
638
|
+
and value["home"] == home and summary != value["summary"]
|
|
639
|
+
}
|
|
640
|
+
if parent_session_id in waiting:
|
|
641
|
+
old_id = parent_session_id
|
|
642
|
+
elif len(waiting) == 1:
|
|
643
|
+
old_id = next(iter(waiting))
|
|
644
|
+
else:
|
|
645
|
+
return None
|
|
646
|
+
state = waiting[old_id]
|
|
647
|
+
fresh = _SESSIONS.pop(session_id, None)
|
|
648
|
+
if fresh is not None:
|
|
649
|
+
for name in ("percent", "used", "window", "above"):
|
|
650
|
+
state[name] = fresh[name]
|
|
651
|
+
del _SESSIONS[old_id]
|
|
652
|
+
_SESSIONS[session_id] = state
|
|
653
|
+
return state
|
|
600
654
|
|
|
601
655
|
|
|
602
656
|
def _directive_block(state: Mapping[str, Any], percent: int) -> str:
|
|
@@ -79,7 +79,8 @@ _RUNTIME_STEM = "".join(("co", "dex"))
|
|
|
79
79
|
_OPENAI_PROVIDER = f"openai-{_RUNTIME_STEM}"
|
|
80
80
|
_RESPONSES_MODE = f"{_RUNTIME_STEM}_responses"
|
|
81
81
|
_ASTRA_MODEL = "gpt-6-astra"
|
|
82
|
-
_SOL_MODEL = "gpt-6-sol"
|
|
82
|
+
_SOL_MODEL = "gpt-6.1-sol"
|
|
83
|
+
_PREVIOUS_SOL_MODEL = "gpt-6-sol"
|
|
83
84
|
_LUNA_MODEL = "gpt-6-luna"
|
|
84
85
|
_LEGACY_SOL_MODEL = "gpt-5.6-sol"
|
|
85
86
|
_TERRA_MODEL = "gpt-5.6-terra"
|
|
@@ -94,6 +95,7 @@ _ASTRA_EFFORTS = _GPT6_LEAD_EFFORTS
|
|
|
94
95
|
_OPENAI_CATALOG_EFFORTS = {
|
|
95
96
|
_ASTRA_MODEL: _ASTRA_EFFORTS,
|
|
96
97
|
_SOL_MODEL: _GPT6_LEAD_EFFORTS,
|
|
98
|
+
_PREVIOUS_SOL_MODEL: _GPT6_LEAD_EFFORTS,
|
|
97
99
|
_LUNA_MODEL: _GPT6_LUNA_EFFORTS,
|
|
98
100
|
_LEGACY_SOL_MODEL: _LEGACY_SOL_EFFORTS,
|
|
99
101
|
_TERRA_MODEL: _TERRA_EFFORTS,
|
|
@@ -357,7 +359,7 @@ def _parse_capabilities(host_version: str) -> CapabilityResult:
|
|
|
357
359
|
astra = (astra_parent or astra_child) and cataloged_parent and cataloged_child
|
|
358
360
|
sol_lead = (
|
|
359
361
|
provider == _OPENAI_PROVIDER
|
|
360
|
-
and model in (_SOL_MODEL, _LEGACY_SOL_MODEL)
|
|
362
|
+
and model in (_SOL_MODEL, _PREVIOUS_SOL_MODEL, _LEGACY_SOL_MODEL)
|
|
361
363
|
and _cataloged_route(model, effort)
|
|
362
364
|
and child_model in _LUNA_MODELS
|
|
363
365
|
and _cataloged_route(child_model, child_effort)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"syncedAt": "2026-09-
|
|
2
|
+
"syncedAt": "2026-09-30T13:06:01.009Z",
|
|
3
3
|
"source": "bundled-payload",
|
|
4
|
-
"sourceHash": "
|
|
4
|
+
"sourceHash": "92b298c9a38364d94b56fb497641d44835bb3bda3230338eb6a769647a5f61b5",
|
|
5
5
|
"files": [
|
|
6
6
|
{
|
|
7
7
|
"path": "NOTICE.md",
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "README.md",
|
|
12
|
-
"sha256": "
|
|
12
|
+
"sha256": "234ed5a80d74dec9953f5168b85f666de656b3511c23a74e26194748a4f3b766"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "__init__.py",
|
|
16
|
-
"sha256": "
|
|
16
|
+
"sha256": "76cf72655600b82544e9047fab1f5f4030927803c0cfbc08fca311204f37d32c"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"path": "auto_handoff.py",
|
|
20
|
-
"sha256": "
|
|
20
|
+
"sha256": "7c0e5385373cc83b202669a9ab500d46e04d79c5a188ed2ffdea93f863ec7dab"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"path": "auto_update.py",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"path": "diagnostics.py",
|
|
92
|
-
"sha256": "
|
|
92
|
+
"sha256": "bd797eadf291ec9cd6c02926595305532e235e21794e4467e157c03b0311fe54"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"path": "handoff.py",
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
"path": "plugin.yaml",
|
|
184
|
-
"sha256": "
|
|
184
|
+
"sha256": "b086300c1f74bf85aca8be93bf6fdf9112e35536f050ff109456584952c1ec78"
|
|
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": "
|
|
1288
|
+
"sha256": "a42439ee181e68b729f969e5b8243205566a64e6f212894f2284735f2737809c"
|
|
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": "
|
|
4156
|
+
"sha256": "65b9754533bf3a07fc32d2e6a4b479d885e4bc7bcd25030c1dd36418db748eeb"
|
|
4157
4157
|
},
|
|
4158
4158
|
{
|
|
4159
4159
|
"path": "skills/visual-qa/schemas/evidence-manifest-v1alpha1.schema.json",
|
|
@@ -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.
|
|
448
|
+
Installed LitHermes 1.0.15
|
|
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.
|
|
465
|
+
[OK] plugin.yaml readable (version 1.0.15)
|
|
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.
|
|
488
|
+
Installed LitHermes 1.0.15
|
|
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.
|
|
505
|
+
[OK] plugin.yaml readable (version 1.0.15)
|
|
506
506
|
[OK] skills bundled: 36
|
|
507
507
|
[OK] litgoal durable runtime importable
|
|
508
508
|
```
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.
|
|
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>
|
|
@@ -3,7 +3,8 @@ const GPT6_LEAD_EFFORTS = new Set(["low", "medium", "high", "xhigh", "max", "ult
|
|
|
3
3
|
const ASTRA_EFFORTS = GPT6_LEAD_EFFORTS;
|
|
4
4
|
const PARENT_MODEL = ASTRA_MODEL;
|
|
5
5
|
const PARENT_EFFORT = "xhigh";
|
|
6
|
-
const SOL_MODEL = "gpt-6-sol";
|
|
6
|
+
const SOL_MODEL = "gpt-6.1-sol";
|
|
7
|
+
const PREVIOUS_SOL_MODEL = "gpt-6-sol";
|
|
7
8
|
const CHILD_MODEL = "gpt-6-luna";
|
|
8
9
|
const LEGACY_SOL_MODEL = "gpt-5.6-sol";
|
|
9
10
|
const LEGACY_CHILD_MODEL = "gpt-5.6-luna";
|
|
@@ -18,6 +19,7 @@ const LEGACY_SOL_EFFORTS = new Set(["high", "xhigh"]);
|
|
|
18
19
|
const MODEL_EFFORTS = new Map([
|
|
19
20
|
[ASTRA_MODEL, GPT6_LEAD_EFFORTS],
|
|
20
21
|
[SOL_MODEL, GPT6_LEAD_EFFORTS],
|
|
22
|
+
[PREVIOUS_SOL_MODEL, GPT6_LEAD_EFFORTS],
|
|
21
23
|
[CHILD_MODEL, GPT6_LUNA_EFFORTS],
|
|
22
24
|
[LEGACY_SOL_MODEL, LEGACY_SOL_EFFORTS],
|
|
23
25
|
[LEGACY_CHILD_MODEL, LEGACY_LUNA_EFFORTS],
|
|
@@ -51,6 +53,11 @@ const ROUTE_CATALOG = {
|
|
|
51
53
|
model: SOL_MODEL,
|
|
52
54
|
note: effort === PARENT_EFFORT ? "coding lead alternative" : "Sol Responses effort",
|
|
53
55
|
})),
|
|
56
|
+
...["low", "medium", "high", "xhigh", "max", "ultra"].map((effort) => ({
|
|
57
|
+
effort,
|
|
58
|
+
model: PREVIOUS_SOL_MODEL,
|
|
59
|
+
note: "previous-generation Sol lead route",
|
|
60
|
+
})),
|
|
54
61
|
...["low", "medium", "high", "xhigh", "max"].map((effort) => ({
|
|
55
62
|
effort,
|
|
56
63
|
model: CHILD_MODEL,
|
|
@@ -403,6 +410,7 @@ module.exports = {
|
|
|
403
410
|
MANAGED_PROVIDER_MODELS,
|
|
404
411
|
MODEL_IDS,
|
|
405
412
|
OPENAI_PROVIDER_ID,
|
|
413
|
+
PREVIOUS_SOL_MODEL,
|
|
406
414
|
SOL_MODEL,
|
|
407
415
|
PROVIDER_IDS,
|
|
408
416
|
ROUTE_CATALOG,
|