@litfamily/lithermes 1.0.2 → 1.0.4
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 +4 -3
- package/README_Ko-KR.md +4 -3
- package/assets/lithermes-plugin/README.md +20 -14
- package/assets/lithermes-plugin/__init__.py +9 -52
- package/assets/lithermes-plugin/core_contexts.py +2 -9
- package/assets/lithermes-plugin/core_contract.py +2 -2
- package/assets/lithermes-plugin/core_routing.py +0 -2
- package/assets/lithermes-plugin/handoff.py +3 -3
- package/assets/lithermes-plugin/lit_mark.py +57 -8
- package/assets/lithermes-plugin/payload-version.json +16 -32
- package/assets/lithermes-plugin/plugin.yaml +1 -1
- package/assets/lithermes-plugin/scientific_visualization.py +3 -3
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/complete-contract.md +3 -3
- package/assets/lithermes-plugin/skills/lit-handoff/SKILL.md +4 -3
- package/assets/lithermes-plugin/skills/lit-scientific-visualization/SKILL.md +4 -3
- package/assets/lithermes-plugin/skills/litwork/SKILL.md +4 -3
- package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +3 -3
- package/package.json +1 -1
- package/readme-assets/badge-version.svg +1 -1
- package/readme-assets/cover-motion.webp +0 -0
- package/src/cli.js +1 -11
- package/src/lib/skillPayload.js +1 -1
- package/assets/lithermes-plugin/skill_loop.py +0 -2044
- package/assets/lithermes-plugin/skill_observer.py +0 -1778
- package/assets/lithermes-plugin/skills/skill-observer/SKILL.md +0 -190
- package/assets/lithermes-plugin/skills/skill-observer/references/review-contract.md +0 -77
- package/src/lib/skillLoop.js +0 -62
|
@@ -26,9 +26,10 @@ surfaces:
|
|
|
26
26
|
after_payload_edit: npm --prefix packages/lithermes-installer run sync-plugin -- --in-place
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
The first model-emitted line for this skill MUST be exactly
|
|
29
|
+
The first model-emitted line for this skill MUST be exactly this line, once,
|
|
30
|
+
on its own, before any other reply content:
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
`🔥 **LIT IGNITED · lit-handoff** 🔥`
|
|
32
33
|
|
|
33
34
|
## #contract.inputs
|
|
34
35
|
|
|
@@ -87,7 +88,7 @@ The first model-emitted line for this skill MUST be exactly:
|
|
|
87
88
|
"schema_version": "lithermes_llm_contract/v1",
|
|
88
89
|
"skill_id": "lit-handoff",
|
|
89
90
|
"response": {
|
|
90
|
-
"first_line": "
|
|
91
|
+
"first_line": "🔥 **LIT IGNITED · lit-handoff** 🔥",
|
|
91
92
|
"destination": "resolved HANDOFF.md path",
|
|
92
93
|
"verified_state": ["live facts used"],
|
|
93
94
|
"remaining_work": ["bounded next actions"],
|
|
@@ -31,9 +31,10 @@ dependency_policy: lazy preflight; DEGRADED is non-fatal
|
|
|
31
31
|
after_payload_edit: npm --prefix packages/lithermes-installer run sync-plugin -- --in-place
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
The first model-emitted line for this skill MUST be exactly
|
|
34
|
+
The first model-emitted line for this skill MUST be exactly this line, once,
|
|
35
|
+
on its own, before any other reply content:
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
`🔥 **LIT IGNITED · lit-scientific-visualization** 🔥`
|
|
37
38
|
|
|
38
39
|
## #contract.inputs
|
|
39
40
|
|
|
@@ -103,7 +104,7 @@ The first model-emitted line for this skill MUST be exactly:
|
|
|
103
104
|
"schema_version": "lithermes_llm_contract/v1",
|
|
104
105
|
"skill_id": "lit-scientific-visualization",
|
|
105
106
|
"response": {
|
|
106
|
-
"first_line": "
|
|
107
|
+
"first_line": "🔥 **LIT IGNITED · lit-scientific-visualization** 🔥",
|
|
107
108
|
"capability": "READY or DEGRADED",
|
|
108
109
|
"source_root": "resolved installed path",
|
|
109
110
|
"artifacts": ["figure paths and formats"],
|
|
@@ -175,8 +175,9 @@ work cannot complete; terminal cancel/complete reuse returns the existing state.
|
|
|
175
175
|
|
|
176
176
|
<litwork-mode>
|
|
177
177
|
|
|
178
|
-
**MANDATORY**:
|
|
179
|
-
|
|
178
|
+
**MANDATORY**: The first model-emitted line this turn MUST be exactly this
|
|
179
|
+
line, once, on its own, before any other reply content:
|
|
180
|
+
`🔥 **LIT IGNITED · litwork** 🔥`
|
|
180
181
|
|
|
181
182
|
[CODE RED] Maximum precision. Outcome-first. Evidence-driven.
|
|
182
183
|
|
|
@@ -395,7 +396,7 @@ message + present for approval.
|
|
|
395
396
|
those candidates and record the cleanup receipt.
|
|
396
397
|
|
|
397
398
|
# Output discipline
|
|
398
|
-
- First line
|
|
399
|
+
- First line exactly once, on its own before any other reply content: `🔥 **LIT IGNITED · litwork** 🔥`
|
|
399
400
|
- After bootstrap: 1-2 paragraph plan summary + notepad path.
|
|
400
401
|
- During execution: surface only state changes (RED captured, GREEN
|
|
401
402
|
captured, scenario PASS/FAIL with evidence paths, reviewer verdict).
|
|
@@ -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.4
|
|
489
489
|
plugin: $ISOLATED/plugins/lithermes
|
|
490
490
|
model config: updated
|
|
491
491
|
|
|
@@ -502,8 +502,8 @@ installed payload: PASS
|
|
|
502
502
|
enabled config: PASS
|
|
503
503
|
|
|
504
504
|
$ hermes lithermes doctor
|
|
505
|
-
[OK] plugin.yaml readable (version 1.0.
|
|
506
|
-
[OK] skills bundled:
|
|
505
|
+
[OK] plugin.yaml readable (version 1.0.4)
|
|
506
|
+
[OK] skills bundled: 31
|
|
507
507
|
[OK] litgoal durable runtime importable
|
|
508
508
|
```
|
|
509
509
|
|
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.4"><title>release: 1.0.4</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.4</text></g></svg>
|
|
Binary file
|
package/src/cli.js
CHANGED
|
@@ -6,7 +6,6 @@ const { checkLitHermes, doctorLitHermes } = require("./lib/check");
|
|
|
6
6
|
const { createSpinner, renderInstallReceipt, shouldUseSpinner } = require("./lib/spinner");
|
|
7
7
|
const { listHud, applyHud, clearHud, promptAccent, resolveHome } = require("./lib/hud");
|
|
8
8
|
const { supportsColor, findAccent, skinName } = require("./lib/skins");
|
|
9
|
-
const { runSkillLoop } = require("./lib/skillLoop");
|
|
10
9
|
const {
|
|
11
10
|
readConfig,
|
|
12
11
|
clearDisplaySkinConfig,
|
|
@@ -58,7 +57,7 @@ function packageVersion() {
|
|
|
58
57
|
function printCommandBanner(command, flags, runtime = {}) {
|
|
59
58
|
// Keep machine-oriented routes byte-stable: their stdout is consumed as a
|
|
60
59
|
// version line or JSON receipt rather than a human-facing command report.
|
|
61
|
-
if (flags.json || command === "version" || command === "
|
|
60
|
+
if (flags.json || command === "version" || command === "__auto-update") return;
|
|
62
61
|
const env = runtime.env || process.env;
|
|
63
62
|
const streams = runtime.streams || { stdout: process.stdout };
|
|
64
63
|
const output = streams.stdout || process.stdout;
|
|
@@ -281,14 +280,6 @@ async function main(argv, runtime = {}) {
|
|
|
281
280
|
}
|
|
282
281
|
return;
|
|
283
282
|
}
|
|
284
|
-
if (command === "skill-loop") {
|
|
285
|
-
const skillLoopArgs = positionals.slice(1);
|
|
286
|
-
if (skillLoopArgs[0] === "reject" && typeof flags.reason === "string") {
|
|
287
|
-
skillLoopArgs.push("--reason", flags.reason);
|
|
288
|
-
}
|
|
289
|
-
process.exitCode = runSkillLoop(skillLoopArgs, flags, runtime);
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
283
|
const lifecycle = await runLifecycleUpdateSafely(command, flags, runtime);
|
|
293
284
|
if (lifecycle.status === "failed" && (lifecycle.state === "unknown" || lifecycle.rollback?.status === "failed")) {
|
|
294
285
|
console.error("LitHermes automatic update left the Hermes home in an unknown state; run `lithermes doctor --offline --hermes-home PATH` before continuing.");
|
|
@@ -388,7 +379,6 @@ async function main(argv, runtime = {}) {
|
|
|
388
379
|
" doctor [--offline] [--hermes-home PATH] [--hermes-repo PATH]",
|
|
389
380
|
" uninstall [--yes] [--hermes-home PATH]",
|
|
390
381
|
" hud [<accent>|off|--list] [--hermes-home PATH] (Hermes HUD skin accents)",
|
|
391
|
-
" skill-loop review|propose <file>|list|apply <id>|reject <id> [--reason TEXT]|rollback <ledger-id>|curator",
|
|
392
382
|
" version",
|
|
393
383
|
].join("\n"));
|
|
394
384
|
}
|
package/src/lib/skillPayload.js
CHANGED
|
@@ -20,7 +20,7 @@ const requiredSkills = [
|
|
|
20
20
|
"lit-korean", "lit-comprehend", "lit-handoff", "lit-plan", "lit-recap",
|
|
21
21
|
"lit-scientific-visualization", "litgoal", "litresearch", "litwork", "lsp",
|
|
22
22
|
"lsp-setup", "lit-code", "refactor", "lit-burnoff", "review-work",
|
|
23
|
-
"rules", "
|
|
23
|
+
"rules", "start-work", "structural-search", "visual-qa", "wikify",
|
|
24
24
|
];
|
|
25
25
|
|
|
26
26
|
function inspectManifest(manifest, verifySourceHash) {
|