@litfamily/lithermes 1.0.17 → 1.0.19
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 +21 -67
- package/README_Ko-KR.md +20 -65
- package/assets/lithermes-plugin/auto_update.py +4 -1
- package/assets/lithermes-plugin/core_routing.py +7 -2
- package/assets/lithermes-plugin/payload-version.json +42 -38
- 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/lit-docx/references/page-composition.md +1 -3
- package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_docx.py +9 -9
- package/assets/lithermes-plugin/skills/lit-docx/scripts/docx_design.py +9 -9
- package/assets/lithermes-plugin/skills/lit-docx/scripts/docx_layout.py +6 -6
- package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/brief.yaml +0 -1
- package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/journal.yaml +0 -1
- package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/manual.yaml +0 -1
- package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/memo.yaml +0 -1
- package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/proposal.yaml +0 -1
- package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/report.yaml +0 -1
- package/assets/lithermes-plugin/skills/lit-pptx/FORBIDDEN_TERMS.json +55 -0
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/atlas.md +2 -2
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/chalk.md +2 -3
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/gazette.md +2 -2
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/ledger.md +5 -5
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/night.md +3 -3
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/paper.md +2 -2
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/signal.md +3 -3
- package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/studio.md +2 -3
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/deck_output.py +8 -8
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/render-pack.js +96 -96
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/template-registry.js +1 -1
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/qa_deck.py +7 -7
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/validate_pptx.py +8 -3
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +2 -15
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/night/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/paper/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/signal/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/studio/pack.yaml +0 -13
- package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +2 -2
- package/package.json +19 -3
- package/readme-assets/badge-version.svg +1 -1
- package/src/cli.js +164 -34
- package/src/lib/check.js +13 -1
- package/src/lib/config.js +94 -36
- package/src/lib/hud.js +33 -2
- package/src/lib/install.js +39 -1
- package/src/lib/skins.js +29 -9
- package/readme-assets/ascii-readme.svg +0 -5
|
@@ -468,7 +468,7 @@ function validatePack(pack, file) {
|
|
|
468
468
|
need(typeof pack.intent === "string" && pack.intent.length > 0, "intent is missing");
|
|
469
469
|
need(isList(pack.canvas) && pack.canvas.length > 0 && pack.canvas.every((c) => grid.CANVAS[c]), "canvas must list 16:9 and/or 4:3");
|
|
470
470
|
// `faces` is the deck's default and is Pretendard only; `faces-a2z` applies when the source asks.
|
|
471
|
-
for (const key of ["faces", "faces-
|
|
471
|
+
for (const key of ["faces", "faces-a2z"]) {
|
|
472
472
|
if (key === "faces-a2z" && pack[key] == null) continue;
|
|
473
473
|
const faces = pack[key] || {};
|
|
474
474
|
for (const role of FACE_KEYS) {
|
|
@@ -175,7 +175,7 @@ def check_contrast(path: Path) -> dict[str, Any]:
|
|
|
175
175
|
return {"pass": not violations, "checked_runs": checked, "violations": violations[:30]}
|
|
176
176
|
|
|
177
177
|
|
|
178
|
-
# ── picture / table overlap ───────────────────────────────────────────────── inventory.py only considers text
|
|
178
|
+
# ── picture / table overlap ───────────────────────────────────────────────── inventory.py only considers text shapes.
|
|
179
179
|
OVERLAP_TOL_IN = 0.06 # inches; ignore hairline touches / rounding
|
|
180
180
|
MIN_TEXT_PT = 6.0
|
|
181
181
|
|
|
@@ -286,7 +286,7 @@ def check_overlaps(path: Path) -> dict[str, Any]:
|
|
|
286
286
|
for z2, sh2, kind2, box2 in shapes:
|
|
287
287
|
if z2 >= z or kind2 is None:
|
|
288
288
|
continue # only shapes drawn *behind* this picture/table
|
|
289
|
-
# A full-bleed background image (mesh/gradient wash) is never an occlusion victim
|
|
289
|
+
# A full-bleed background image (mesh/gradient wash) is never an occlusion victim; anything may sit on it.
|
|
290
290
|
if kind2 == "picture" and is_full_bleed(box2):
|
|
291
291
|
continue
|
|
292
292
|
# Picture-over-picture is intentional decorative layering.
|
|
@@ -617,7 +617,7 @@ def check_slide_craft(path: Path) -> dict[str, Any]:
|
|
|
617
617
|
text_only = 0
|
|
618
618
|
content_slides = 0
|
|
619
619
|
for slide_number, slide in enumerate(prs.slides, 1):
|
|
620
|
-
# A pack-built slide names its family
|
|
620
|
+
# A pack-built slide names its family; display slides are never judged sparse.
|
|
621
621
|
family = next((shape.name.split("@", 1)[1] for shape in slide.shapes if shape.name.startswith("family@")), "")
|
|
622
622
|
if family and re.match(r"(cover|section)(-|$)|(statement|quote|closing-statement|image-full)$", family):
|
|
623
623
|
continue
|
|
@@ -629,7 +629,7 @@ def check_slide_craft(path: Path) -> dict[str, Any]:
|
|
|
629
629
|
if shape.shape_type == MSO_SHAPE_TYPE.PICTURE
|
|
630
630
|
and (family or shape.top >= prs.slide_height * 0.20)
|
|
631
631
|
]
|
|
632
|
-
# Body text is judged on what the frames say together
|
|
632
|
+
# Body text is judged on what the frames say together.
|
|
633
633
|
frames = [
|
|
634
634
|
shape for shape in slide.shapes
|
|
635
635
|
if getattr(shape, "has_text_frame", False)
|
|
@@ -647,7 +647,7 @@ def check_slide_craft(path: Path) -> dict[str, Any]:
|
|
|
647
647
|
]
|
|
648
648
|
if tables or charts or body_text or len(panels) >= 2:
|
|
649
649
|
content_slides += 1
|
|
650
|
-
# On a pack slide the family says whether the page is a plain text page
|
|
650
|
+
# On a pack slide the family says whether the page is a plain text page.
|
|
651
651
|
plain_text = family in TEXT_FAMILIES if family else len(panels) < 2
|
|
652
652
|
if body_text and not tables and not charts and not pictures and plain_text:
|
|
653
653
|
text_only += 1
|
|
@@ -668,7 +668,7 @@ def check_slide_craft(path: Path) -> dict[str, Any]:
|
|
|
668
668
|
continue
|
|
669
669
|
if shape.width * shape.height > prs.slide_width * prs.slide_height * 0.8:
|
|
670
670
|
continue
|
|
671
|
-
# An outline drawn around other frames
|
|
671
|
+
# An outline drawn around other frames frames that content; only an empty outline is an empty frame.
|
|
672
672
|
if any(_centre_inside(other, shape) for other in slide.shapes if other is not shape
|
|
673
673
|
and (getattr(other, "has_table", False) or getattr(other, "has_chart", False)
|
|
674
674
|
or other.shape_type == MSO_SHAPE_TYPE.PICTURE
|
|
@@ -726,7 +726,7 @@ def summarize_inventory(issues: dict[str, Any]) -> dict[str, Any]:
|
|
|
726
726
|
slide_overflow += 1
|
|
727
727
|
if "frame" in ov:
|
|
728
728
|
frame_overflow += 1
|
|
729
|
-
# inventory.py nests this under "overlap"
|
|
729
|
+
# inventory.py nests this under "overlap"; it reports only (see qa()).
|
|
730
730
|
if (shape.get("overlap") or {}).get("overlapping_shapes"):
|
|
731
731
|
overlap += 1
|
|
732
732
|
return {
|
|
@@ -52,16 +52,21 @@ def _load_terms() -> tuple[list[str], list[str], bool, bool]:
|
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool) -> re.Pattern[str] | None:
|
|
55
|
+
def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool, latin_words_whole: bool = False) -> re.Pattern[str] | None:
|
|
56
56
|
if not terms:
|
|
57
57
|
return None
|
|
58
58
|
# An acronym (RAM, FTO) is a word in capitals: matched as that word, so "diagram" or "program"
|
|
59
59
|
# does not contain it. Every other term keeps the file's case and word settings.
|
|
60
60
|
acronyms = [term for term in terms if re.fullmatch(r"[A-Z]{2,5}", term)]
|
|
61
|
-
|
|
61
|
+
# With latin_words_whole (the hard list), a single Latin word (todo, tbd) is matched as that word or its
|
|
62
|
+
# plural in s, in the file's case setting: "TODOs" fails, "Mastodon" or "photodocument" does not.
|
|
63
|
+
words = [term for term in terms if latin_words_whole and term not in acronyms and re.fullmatch(r"[A-Za-z]+", term)]
|
|
64
|
+
escaped = [re.escape(term) for term in terms if term not in acronyms and term not in words]
|
|
62
65
|
pattern = "|".join(escaped)
|
|
63
66
|
if whole_word and pattern:
|
|
64
67
|
pattern = rf"(?:(?<=\W)|^)(?:{pattern})(?:(?=\W)|$)"
|
|
68
|
+
if words:
|
|
69
|
+
pattern = "|".join(filter(None, [pattern, rf"(?<![A-Za-z])(?:{'|'.join(map(re.escape, words))})s?(?![A-Za-z])"]))
|
|
65
70
|
if case_insensitive and pattern:
|
|
66
71
|
pattern = f"(?i:{pattern})"
|
|
67
72
|
if acronyms:
|
|
@@ -138,7 +143,7 @@ def _slide_has_title(slide, slide_height: int | None) -> bool:
|
|
|
138
143
|
def lint(path: str | Path) -> dict[str, Any]:
|
|
139
144
|
prs = Presentation(str(path))
|
|
140
145
|
hard_terms, soft_terms, case_insensitive, whole_word = _load_terms()
|
|
141
|
-
hard_re = _build_regex(hard_terms, case_insensitive, whole_word)
|
|
146
|
+
hard_re = _build_regex(hard_terms, case_insensitive, whole_word, latin_words_whole=True)
|
|
142
147
|
soft_re = _build_regex(soft_terms, case_insensitive, whole_word)
|
|
143
148
|
|
|
144
149
|
missing_titles: list[int] = []
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Regular
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Regular
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Regular
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Light
|
|
25
19
|
title: Pretendard Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: 0
|
|
49
43
|
display-tracking: -1
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: proportional
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 7
|
|
@@ -80,21 +72,16 @@ sections: [section-image, section-field]
|
|
|
80
72
|
closings: [closing-contact-split, closing-ask]
|
|
81
73
|
|
|
82
74
|
table:
|
|
83
|
-
style: light-grid
|
|
84
75
|
header: none
|
|
85
76
|
header-ink: ink
|
|
86
77
|
rules: rows
|
|
87
78
|
banding: none
|
|
88
|
-
numbers: right-tabular
|
|
89
79
|
totals: bold
|
|
90
80
|
chart:
|
|
91
81
|
gridlines: hairline
|
|
92
82
|
labels: direct
|
|
93
83
|
highlight: accent-on-muted
|
|
94
|
-
annotation: off
|
|
95
84
|
image:
|
|
96
|
-
bleed: allowed
|
|
97
|
-
crop: allowed
|
|
98
85
|
frame: none
|
|
99
86
|
|
|
100
87
|
fill-order: [anchor-visual, change-family, distribute, step-up]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Bold
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Bold
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Bold
|
|
25
19
|
title: A2Z Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: -1
|
|
49
43
|
display-tracking: -1
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: proportional
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 6
|
|
@@ -86,21 +78,16 @@ sections: [section-numeral, section-rail]
|
|
|
86
78
|
closings: [closing-summary-list, closing-ask]
|
|
87
79
|
|
|
88
80
|
table:
|
|
89
|
-
style: header-fill
|
|
90
81
|
header: accent-tint
|
|
91
82
|
header-ink: accent-deep
|
|
92
83
|
rules: rows
|
|
93
84
|
banding: none
|
|
94
|
-
numbers: right-tabular
|
|
95
85
|
totals: bold
|
|
96
86
|
chart:
|
|
97
87
|
gridlines: hairline
|
|
98
88
|
labels: direct
|
|
99
89
|
highlight: accent-on-muted
|
|
100
|
-
annotation: on
|
|
101
90
|
image:
|
|
102
|
-
bleed: side-only
|
|
103
|
-
crop: none
|
|
104
91
|
frame: none
|
|
105
92
|
|
|
106
93
|
fill-order: [distribute, step-up, change-family, anchor-visual]
|
|
@@ -15,12 +15,6 @@ faces:
|
|
|
15
15
|
body: Pretendard Regular
|
|
16
16
|
label: Pretendard Regular
|
|
17
17
|
numeral: Pretendard Bold
|
|
18
|
-
faces-pretendard-only:
|
|
19
|
-
display: Pretendard Bold
|
|
20
|
-
title: Pretendard Bold
|
|
21
|
-
body: Pretendard Regular
|
|
22
|
-
label: Pretendard Regular
|
|
23
|
-
numeral: Pretendard Bold
|
|
24
18
|
faces-a2z:
|
|
25
19
|
display: A2Z Bold
|
|
26
20
|
title: Pretendard Bold
|
|
@@ -48,8 +42,6 @@ hero: false
|
|
|
48
42
|
type-voice:
|
|
49
43
|
title-tracking: -1
|
|
50
44
|
display-tracking: -1
|
|
51
|
-
latin-case: sentence
|
|
52
|
-
figures: tabular
|
|
53
45
|
|
|
54
46
|
density: 10
|
|
55
47
|
variance: 4
|
|
@@ -81,21 +73,16 @@ sections: [section-band, section-rule]
|
|
|
81
73
|
closings: [closing-decision-box, closing-ask]
|
|
82
74
|
|
|
83
75
|
table:
|
|
84
|
-
style: header-fill
|
|
85
76
|
header: field
|
|
86
77
|
header-ink: on-field
|
|
87
78
|
rules: grid
|
|
88
79
|
banding: surface
|
|
89
|
-
numbers: right-tabular
|
|
90
80
|
totals: bold
|
|
91
81
|
chart:
|
|
92
82
|
gridlines: hairline
|
|
93
83
|
labels: direct
|
|
94
84
|
highlight: accent-on-muted
|
|
95
|
-
annotation: off
|
|
96
85
|
image:
|
|
97
|
-
bleed: none
|
|
98
|
-
crop: none
|
|
99
86
|
frame: hairline
|
|
100
87
|
|
|
101
88
|
fill-order: [step-up, distribute, change-family, anchor-visual]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# Ledger: a set of accounts made readable. Small, exact type, numbers
|
|
2
|
-
#
|
|
1
|
+
# Ledger: a set of accounts made readable. Small, exact type, numbers right-aligned,
|
|
2
|
+
# tables and KPI rows doing most of the talking; colour marks only "this
|
|
3
3
|
# period" and the one figure that matters. Wrong for a live pitch with little data
|
|
4
4
|
# or for a briefing that is read as prose.
|
|
5
5
|
id: ledger
|
|
@@ -15,12 +15,6 @@ faces:
|
|
|
15
15
|
body: Pretendard Regular
|
|
16
16
|
label: Pretendard Regular
|
|
17
17
|
numeral: Pretendard Bold
|
|
18
|
-
faces-pretendard-only:
|
|
19
|
-
display: Pretendard Bold
|
|
20
|
-
title: Pretendard Bold
|
|
21
|
-
body: Pretendard Regular
|
|
22
|
-
label: Pretendard Regular
|
|
23
|
-
numeral: Pretendard Bold
|
|
24
18
|
faces-a2z:
|
|
25
19
|
display: A2Z Bold
|
|
26
20
|
title: Pretendard Bold
|
|
@@ -48,8 +42,6 @@ hero: false
|
|
|
48
42
|
type-voice:
|
|
49
43
|
title-tracking: -1
|
|
50
44
|
display-tracking: -1
|
|
51
|
-
latin-case: sentence
|
|
52
|
-
figures: tabular
|
|
53
45
|
|
|
54
46
|
density: 10
|
|
55
47
|
variance: 5
|
|
@@ -81,22 +73,17 @@ sections: [section-rule, section-numeral]
|
|
|
81
73
|
closings: [closing-decision-box, closing-ask]
|
|
82
74
|
|
|
83
75
|
table:
|
|
84
|
-
style: ledger
|
|
85
76
|
# The header row is the ledger's one dark mass: deep field, white labels.
|
|
86
77
|
header: field
|
|
87
78
|
header-ink: on-field
|
|
88
79
|
rules: header-and-totals
|
|
89
80
|
banding: none
|
|
90
|
-
numbers: right-tabular
|
|
91
81
|
totals: bold
|
|
92
82
|
chart:
|
|
93
83
|
gridlines: hairline
|
|
94
84
|
labels: direct
|
|
95
85
|
highlight: accent-on-muted
|
|
96
|
-
annotation: on
|
|
97
86
|
image:
|
|
98
|
-
bleed: side-only
|
|
99
|
-
crop: none
|
|
100
87
|
frame: hairline
|
|
101
88
|
|
|
102
89
|
fill-order: [step-up, distribute, anchor-visual, change-family]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Regular
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Regular
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: Pretendard Bold
|
|
25
19
|
title: Pretendard Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: -1
|
|
49
43
|
display-tracking: -2
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: tabular
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 6
|
|
@@ -80,22 +72,17 @@ sections: [section-numeral, section-field]
|
|
|
80
72
|
closings: [closing-statement, closing-decision-box]
|
|
81
73
|
|
|
82
74
|
table:
|
|
83
|
-
style: header-fill
|
|
84
75
|
header: surface
|
|
85
76
|
header-ink: ink
|
|
86
77
|
rules: rows
|
|
87
78
|
banding: none
|
|
88
|
-
numbers: right-tabular
|
|
89
79
|
totals: bold
|
|
90
80
|
protagonist: accent-tint
|
|
91
81
|
chart:
|
|
92
82
|
gridlines: hairline
|
|
93
83
|
labels: direct
|
|
94
84
|
highlight: accent-on-muted
|
|
95
|
-
annotation: on
|
|
96
85
|
image:
|
|
97
|
-
bleed: side-only
|
|
98
|
-
crop: allowed
|
|
99
86
|
frame: none
|
|
100
87
|
|
|
101
88
|
fill-order: [anchor-visual, step-up, distribute, change-family]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Regular
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Regular
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: Pretendard Bold
|
|
25
19
|
title: Pretendard Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: 0
|
|
49
43
|
display-tracking: -1
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: tabular
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 5
|
|
@@ -86,21 +78,16 @@ sections: [section-rule, section-field]
|
|
|
86
78
|
closings: [closing-summary-list, closing-ask]
|
|
87
79
|
|
|
88
80
|
table:
|
|
89
|
-
style: booktabs
|
|
90
81
|
header: none
|
|
91
82
|
header-ink: ink
|
|
92
83
|
rules: booktabs
|
|
93
84
|
banding: none
|
|
94
|
-
numbers: right-tabular
|
|
95
85
|
totals: bold
|
|
96
86
|
chart:
|
|
97
87
|
gridlines: hairline
|
|
98
88
|
labels: direct
|
|
99
89
|
highlight: series-order
|
|
100
|
-
annotation: off
|
|
101
90
|
image:
|
|
102
|
-
bleed: none
|
|
103
|
-
crop: none
|
|
104
91
|
frame: none
|
|
105
92
|
|
|
106
93
|
fill-order: [anchor-visual, distribute, step-up, change-family]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Bold
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Bold
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Black
|
|
25
19
|
title: A2Z Bold
|
|
@@ -48,8 +42,6 @@ hero: false
|
|
|
48
42
|
type-voice:
|
|
49
43
|
title-tracking: -1
|
|
50
44
|
display-tracking: -2
|
|
51
|
-
latin-case: sentence
|
|
52
|
-
figures: proportional
|
|
53
45
|
|
|
54
46
|
density: 10
|
|
55
47
|
variance: 6
|
|
@@ -81,22 +73,17 @@ sections: [section-field, section-numeral]
|
|
|
81
73
|
closings: [closing-statement, closing-ask]
|
|
82
74
|
|
|
83
75
|
table:
|
|
84
|
-
style: open
|
|
85
76
|
header: none
|
|
86
77
|
header-ink: ink
|
|
87
78
|
rules: top-bottom
|
|
88
79
|
banding: none
|
|
89
|
-
numbers: right-tabular
|
|
90
80
|
totals: bold
|
|
91
81
|
protagonist: accent-tint
|
|
92
82
|
chart:
|
|
93
83
|
gridlines: none
|
|
94
84
|
labels: direct
|
|
95
85
|
highlight: accent-on-muted
|
|
96
|
-
annotation: on
|
|
97
86
|
image:
|
|
98
|
-
bleed: allowed
|
|
99
|
-
crop: allowed
|
|
100
87
|
frame: none
|
|
101
88
|
|
|
102
89
|
fill-order: [step-up, change-family, anchor-visual, distribute]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Bold
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Bold
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Black
|
|
25
19
|
title: A2Z Medium
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: -1
|
|
49
43
|
display-tracking: -2
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: proportional
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 8
|
|
@@ -80,21 +72,16 @@ sections: [section-numeral, section-rail]
|
|
|
80
72
|
closings: [closing-contact-split, closing-summary-list]
|
|
81
73
|
|
|
82
74
|
table:
|
|
83
|
-
style: open
|
|
84
75
|
header: none
|
|
85
76
|
header-ink: ink
|
|
86
77
|
rules: header-rule
|
|
87
78
|
banding: none
|
|
88
|
-
numbers: right-tabular
|
|
89
79
|
totals: bold
|
|
90
80
|
chart:
|
|
91
81
|
gridlines: none
|
|
92
82
|
labels: direct
|
|
93
83
|
highlight: accent-on-muted
|
|
94
|
-
annotation: on
|
|
95
84
|
image:
|
|
96
|
-
bleed: allowed
|
|
97
|
-
crop: allowed
|
|
98
85
|
frame: none
|
|
99
86
|
|
|
100
87
|
fill-order: [change-family, step-up, anchor-visual, distribute]
|
|
@@ -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.19
|
|
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.19)
|
|
506
506
|
[OK] skills bundled: 36
|
|
507
507
|
[OK] litgoal durable runtime importable
|
|
508
508
|
```
|
package/package.json
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@litfamily/lithermes",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.19",
|
|
4
|
+
"description": "Hermes Agent plugin that plans, builds, checks and hands off your work when you add one word, lit, to a request.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"hermes-agent",
|
|
7
|
+
"hermes",
|
|
8
|
+
"nous-research",
|
|
9
|
+
"plugin",
|
|
10
|
+
"ai-agent",
|
|
11
|
+
"coding-agent",
|
|
12
|
+
"agent-workflow",
|
|
13
|
+
"planning",
|
|
14
|
+
"code-review",
|
|
15
|
+
"research",
|
|
16
|
+
"handoff",
|
|
17
|
+
"korean",
|
|
18
|
+
"docx",
|
|
19
|
+
"pptx"
|
|
20
|
+
],
|
|
5
21
|
"license": "MIT",
|
|
6
22
|
"repository": {
|
|
7
23
|
"type": "git",
|
|
8
24
|
"url": "git+https://github.com/wjgoarxiv/lithermes.git",
|
|
9
25
|
"directory": "packages/lithermes-installer"
|
|
10
26
|
},
|
|
11
|
-
"homepage": "https://
|
|
27
|
+
"homepage": "https://github.com/wjgoarxiv/lithermes",
|
|
12
28
|
"bugs": {
|
|
13
29
|
"url": "https://github.com/wjgoarxiv/lithermes/issues"
|
|
14
30
|
},
|
|
@@ -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.19"><title>release: 1.0.19</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.19</text></g></svg>
|