@litfamily/lithermes 1.0.27 → 1.0.28

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.
Files changed (92) hide show
  1. package/README.md +10 -9
  2. package/README_Ko-KR.md +10 -9
  3. package/assets/lithermes-plugin/README.md +28 -9
  4. package/assets/lithermes-plugin/__init__.py +7 -3
  5. package/assets/lithermes-plugin/auto_update.py +17 -3
  6. package/assets/lithermes-plugin/core.py +41 -2
  7. package/assets/lithermes-plugin/core_contexts.py +27 -9
  8. package/assets/lithermes-plugin/core_contract.py +7 -2
  9. package/assets/lithermes-plugin/core_review.py +144 -3
  10. package/assets/lithermes-plugin/core_routing.py +10 -0
  11. package/assets/lithermes-plugin/core_workflow_commands.py +3 -2
  12. package/assets/lithermes-plugin/diagnostics.py +5 -3
  13. package/assets/lithermes-plugin/lit_reentry.py +233 -0
  14. package/assets/lithermes-plugin/payload-version.json +180 -48
  15. package/assets/lithermes-plugin/plugin.yaml +1 -1
  16. package/assets/lithermes-plugin/rules/__init__.py +2 -0
  17. package/assets/lithermes-plugin/rules/engine.py +26 -11
  18. package/assets/lithermes-plugin/skills/deep-interview/SKILL.md +2 -1
  19. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/complete-contract.md +3 -3
  20. package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/hostexec.mjs +118 -0
  21. package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe.mjs +6 -5
  22. package/assets/lithermes-plugin/skills/lit-brainstorm/SKILL.md +408 -0
  23. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/doctor.mjs +3 -3
  24. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/export.mjs +5 -5
  25. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/hostexec.mjs +118 -0
  26. package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_pdf.py +38 -4
  27. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/acs/template.tex +3 -0
  28. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/elsevier/template.tex +3 -0
  29. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/ieee/template.tex +3 -0
  30. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/korean-generic/template.tex +3 -0
  31. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/nature/template.tex +3 -0
  32. package/assets/lithermes-plugin/skills/lit-pptx/bin/hostexec.mjs +118 -0
  33. package/assets/lithermes-plugin/skills/lit-pptx/bin/office.mjs +16 -9
  34. package/assets/lithermes-plugin/skills/lit-typographic-motion/SKILL.md +13 -12
  35. package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/motion.mjs +19 -6
  36. package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/runtime.mjs +25 -19
  37. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/THIRD_PARTY_NOTICES +2 -0
  38. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/browser.mjs +11 -4
  39. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/constants.mjs +29 -0
  40. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-assets.mjs +87 -0
  41. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-capture.mjs +189 -0
  42. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-gate.mjs +263 -0
  43. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-image.mjs +103 -0
  44. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-init.js +36 -0
  45. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-png.mjs +77 -0
  46. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-sheet.mjs +70 -0
  47. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-treatment.mjs +104 -0
  48. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-webp.mjs +112 -0
  49. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover-worker.mjs +19 -0
  50. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/cover.mjs +338 -0
  51. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/encode.mjs +1 -1
  52. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/hostexec.mjs +118 -0
  53. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/look.mjs +103 -7
  54. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/loop-kit.js +80 -0
  55. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/sound.mjs +1 -1
  56. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage.mjs +8 -2
  57. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/treatment.mjs +1 -0
  58. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/card-scenes/expected.json +49 -0
  59. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/card-scenes/index.html +37 -0
  60. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/reset-sweep/expected.json +49 -0
  61. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/reset-sweep/index.html +27 -0
  62. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/still-glow/expected.json +51 -0
  63. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/still-glow/index.html +29 -0
  64. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/title-slam/expected.json +51 -0
  65. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/negatives/title-slam/index.html +37 -0
  66. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/orbit-loop/expected.json +68 -0
  67. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/orbit-loop/index.html +112 -0
  68. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/painted-light/expected.json +96 -0
  69. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/painted-light/index.html +208 -0
  70. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/weight-tide/expected.json +68 -0
  71. package/assets/lithermes-plugin/skills/lit-typographic-motion/recipes/weight-tide/index.html +81 -0
  72. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/cover.md +458 -0
  73. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/craft-loop.md +4 -1
  74. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/runtime.md +13 -5
  75. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/stage.md +4 -2
  76. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/treatment.md +6 -0
  77. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/fonts.json +11 -0
  78. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/requirements.lock +72 -0
  79. package/assets/lithermes-plugin/skills/litgoal/SKILL.md +19 -1
  80. package/assets/lithermes-plugin/skills/lsp-setup/scripts/verify-lsp.ts +16 -3
  81. package/assets/lithermes-plugin/skills/review-work/SKILL.md +38 -16
  82. package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +3 -3
  83. package/package.json +2 -1
  84. package/readme-assets/badge-version.svg +1 -1
  85. package/readme-assets/cover-motion-still.webp +0 -0
  86. package/readme-assets/cover-motion.webp +0 -0
  87. package/src/cli.js +2 -2
  88. package/src/lib/check.js +9 -6
  89. package/src/lib/hermesDiscovery.js +2 -2
  90. package/src/lib/hostExec.js +81 -0
  91. package/src/lib/skillPayload.js +1 -1
  92. package/src/lib/updateNotifier.js +14 -4
@@ -1,7 +1,7 @@
1
1
  {
2
- "syncedAt": "2026-10-19T12:29:49.086Z",
2
+ "syncedAt": "2026-10-21T21:56:57.242Z",
3
3
  "source": "bundled-payload",
4
- "sourceHash": "2bb93dc4c7d46d48dcc893b33faebb7065d343a2f636fadb1d25f1695c1ef23d",
4
+ "sourceHash": "e8c2f60978f4399f52fa38404399841ef50c5d6982399a3bf51bb01eb5c3deba",
5
5
  "files": [
6
6
  {
7
7
  "path": "NOTICE.md",
@@ -9,11 +9,11 @@
9
9
  },
10
10
  {
11
11
  "path": "README.md",
12
- "sha256": "882eb72644fe3bab11a110196dd6692d74ee51525f75e64a7cfa04e3c658de60"
12
+ "sha256": "a131b4c9b6ba4f180675fa3e3c6c87c95a798b6c0710b68a876ca9128968142e"
13
13
  },
14
14
  {
15
15
  "path": "__init__.py",
16
- "sha256": "3ccd142c77ef0dc3039d0c61f8e6ee7a8e39ea02c3889ba7908b044467ac7286"
16
+ "sha256": "d7eb034b26a12fee3b1cf1fc016dd0fcf5af41c412122c7afeb45738d3b465b5"
17
17
  },
18
18
  {
19
19
  "path": "auto_handoff.py",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  {
23
23
  "path": "auto_update.py",
24
- "sha256": "ba2beba07210ccd934ddc5902a5054a8fbe0f5bb9dcd9e9019196551bf4ea92b"
24
+ "sha256": "062e9ace40cc802b4889e0f69cc67155ef20ecb73f2d20e5c46bae4662253c50"
25
25
  },
26
26
  {
27
27
  "path": "bounded_work.py",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  {
35
35
  "path": "core.py",
36
- "sha256": "44ea3860657ebe8dc335ccefb613ad21700b725ba0f4cb60a1cf81da18f61ff5"
36
+ "sha256": "fc66432d79c9308f1e8163bda819c07db62d6a397499049d3c3cc370fc714f11"
37
37
  },
38
38
  {
39
39
  "path": "core_commands.py",
@@ -41,11 +41,11 @@
41
41
  },
42
42
  {
43
43
  "path": "core_contexts.py",
44
- "sha256": "4923e1e9f72e52c6c83e19adaab835b6bccd1de6a3943f3275483c5b42eea7d8"
44
+ "sha256": "2627863707a82d9197c1f18f411571fbac00504bb5695c5a1d7390fc1128d84c"
45
45
  },
46
46
  {
47
47
  "path": "core_contract.py",
48
- "sha256": "532d73146aaff3e5e2553195b0d08a941bd1c90b4ec29539dd00f5904075cb02"
48
+ "sha256": "5f55b98ad1791566f4885c48583ec870ab301e9b04b783272285cefb4e58d7ac"
49
49
  },
50
50
  {
51
51
  "path": "core_plans.py",
@@ -65,11 +65,11 @@
65
65
  },
66
66
  {
67
67
  "path": "core_review.py",
68
- "sha256": "3d05efd7188596af86b9da3bdb044ff60497868f00389c25b1f1897a131bc2b6"
68
+ "sha256": "dc81766b3c446f4c05daac0a7bd42ad92c32ff439515a018782abcbe56bfc69a"
69
69
  },
70
70
  {
71
71
  "path": "core_routing.py",
72
- "sha256": "9ede6c4c4a003121fefff9c0e0fcdba755f7bf4916b1c30094a9adeff089eb9c"
72
+ "sha256": "08d887e3f2866b2c6b7fd59534595057b63b266ee28d21da9e7431ea49174871"
73
73
  },
74
74
  {
75
75
  "path": "core_runs.py",
@@ -81,7 +81,7 @@
81
81
  },
82
82
  {
83
83
  "path": "core_workflow_commands.py",
84
- "sha256": "6c8b4fc2a960c82be38248117150ed7211d0f572b8ca4da05840367a4dd49768"
84
+ "sha256": "e8ca7656e1a66149b11c6e9ce982becf8fca700a9cd9d614c89fb349c4811e0f"
85
85
  },
86
86
  {
87
87
  "path": "deliverable_hedge_guard.py",
@@ -89,7 +89,7 @@
89
89
  },
90
90
  {
91
91
  "path": "diagnostics.py",
92
- "sha256": "13fdef893d10cecdffdbb61daf64629e5ccbf4777964e75930ca34017472828e"
92
+ "sha256": "b855f13673a0b102273e03603c9695c7c0bfe0cbbb644f801264684ddcdaea68"
93
93
  },
94
94
  {
95
95
  "path": "handoff.py",
@@ -123,6 +123,10 @@
123
123
  "path": "lit_mark_rows.json",
124
124
  "sha256": "e7f3e2be168bedc5c15836d105ffed570f3bfd8745522502293de8718f503aec"
125
125
  },
126
+ {
127
+ "path": "lit_reentry.py",
128
+ "sha256": "d0a945ae8b6ee417b49e683939d81373f6b35a02d6cd7f6282761cc1102672c2"
129
+ },
126
130
  {
127
131
  "path": "litgoal/__init__.py",
128
132
  "sha256": "9f408fcab87260ab282bd077c1735a8c6d1ded5fb2ed8e0bd189744713c34dbc"
@@ -177,7 +181,7 @@
177
181
  },
178
182
  {
179
183
  "path": "plugin.yaml",
180
- "sha256": "7af0cc7db4c684a51fa874d1aff88dac3bba80c18346820b30b3afc78631b5a8"
184
+ "sha256": "86f4d655f0fde52899015eed48459d6b399c58d2c272a4f26e469b20b151de30"
181
185
  },
182
186
  {
183
187
  "path": "provider_metrics.py",
@@ -189,7 +193,7 @@
189
193
  },
190
194
  {
191
195
  "path": "rules/__init__.py",
192
- "sha256": "5083ce8a1f09c52f5ed113acf88b356f9ccaf65e6a1e5ebf398889c6e41d5b1c"
196
+ "sha256": "a436c667a14d3930b7ac6634c94b437475c2272dd50d37462661618527da1587"
193
197
  },
194
198
  {
195
199
  "path": "rules/bundled-rules/baseline-discipline.md",
@@ -217,7 +221,7 @@
217
221
  },
218
222
  {
219
223
  "path": "rules/engine.py",
220
- "sha256": "fb811fe3aaf838b8ac3b193018497e2b247d5da403fb2bb6aea01e2bd7419f73"
224
+ "sha256": "917c4e54a80aa4c810072bbdbd0263aaba2d29ebbb393bb1c5805f91537100f8"
221
225
  },
222
226
  {
223
227
  "path": "rules/frontmatter.py",
@@ -569,7 +573,7 @@
569
573
  },
570
574
  {
571
575
  "path": "skills/deep-interview/SKILL.md",
572
- "sha256": "52505231224e9388ba687f562d00c48d0448794b01b14c17d22c4648f868dee0"
576
+ "sha256": "686401d29a2507235ba92b466d9c67b2ec153f72c214cac752bb62d5d7c214eb"
573
577
  },
574
578
  {
575
579
  "path": "skills/frontend-ui-ux/SKILL.md",
@@ -1281,7 +1285,7 @@
1281
1285
  },
1282
1286
  {
1283
1287
  "path": "skills/frontend-ui-ux/references/complete-contract.md",
1284
- "sha256": "f3d9ba63058388aba9ecd7684b15ae7d544ac488d7be1f78ce06886f18fbc623"
1288
+ "sha256": "58cd3eba7f0213a4f1fdfaa11bf9f236b73f2ea25cb3fb1b3704a77e17d49e42"
1285
1289
  },
1286
1290
  {
1287
1291
  "path": "skills/frontend-ui-ux/references/composition.md",
@@ -1403,6 +1407,10 @@
1403
1407
  "path": "skills/frontend-ui-ux/scripts/design_runtime.py",
1404
1408
  "sha256": "7920a1fddf462bba68854d90b89f26c77e6f7ffd58282fcde2233e567473fda3"
1405
1409
  },
1410
+ {
1411
+ "path": "skills/frontend-ui-ux/scripts/hostexec.mjs",
1412
+ "sha256": "95451a260bf47cfb7e26df81c16a33898c56480b31d7aad86de6b9a5d8f87224"
1413
+ },
1406
1414
  {
1407
1415
  "path": "skills/frontend-ui-ux/scripts/import_design_intelligence.py",
1408
1416
  "sha256": "2542d7c35aff9be499696bdfffe93d09f203737877ece3d2b087ca537bdf64ab"
@@ -1417,7 +1425,7 @@
1417
1425
  },
1418
1426
  {
1419
1427
  "path": "skills/frontend-ui-ux/scripts/probe.mjs",
1420
- "sha256": "a852974746cd2528c8c91c99461b4469cd2d03fdca2de6d966df4fdd2e3289cc"
1428
+ "sha256": "fa736dcde2f00fd0bf21022193125c93970a265a4a8d81c0febf3b6ff92f7596"
1421
1429
  },
1422
1430
  {
1423
1431
  "path": "skills/frontend-ui-ux/scripts/source_import.py",
@@ -1427,6 +1435,10 @@
1427
1435
  "path": "skills/frontend-ui-ux/scripts/source_manifest.py",
1428
1436
  "sha256": "b1b8a5a194156ff18207c359b1527bc27e0a1f3d2a58af32c9bac3c550c63906"
1429
1437
  },
1438
+ {
1439
+ "path": "skills/lit-brainstorm/SKILL.md",
1440
+ "sha256": "528b2f27c0cf7feb2ae34f3ce56427063b291e59ca0995a7f00da22176030e3f"
1441
+ },
1430
1442
  {
1431
1443
  "path": "skills/lit-burnoff/SKILL.md",
1432
1444
  "sha256": "5fea4ed034262071b957df01276566274cc33e295934b8a610085e7fb981b74a"
@@ -2969,7 +2981,7 @@
2969
2981
  },
2970
2982
  {
2971
2983
  "path": "skills/lit-diagram-drawer/scripts/doctor.mjs",
2972
- "sha256": "0d7ed941a007edd8bd3add08e22024a45bd98dd0d6972c1cd3c40543d940a60b"
2984
+ "sha256": "74649e94a08d70d554b394fba2b5b7571327106cdef6194d841bc205f2243cb4"
2973
2985
  },
2974
2986
  {
2975
2987
  "path": "skills/lit-diagram-drawer/scripts/drawio_extract.py",
@@ -2989,7 +3001,11 @@
2989
3001
  },
2990
3002
  {
2991
3003
  "path": "skills/lit-diagram-drawer/scripts/export.mjs",
2992
- "sha256": "13cf5fe8bca9e70062443fbc0b133903b8f485ac44ec7c9be8f7d81e51a58e14"
3004
+ "sha256": "38f9ba5b9e2979c4f183a4d93879bf815d270d9956624ec86cde0b920765a672"
3005
+ },
3006
+ {
3007
+ "path": "skills/lit-diagram-drawer/scripts/hostexec.mjs",
3008
+ "sha256": "95451a260bf47cfb7e26df81c16a33898c56480b31d7aad86de6b9a5d8f87224"
2993
3009
  },
2994
3010
  {
2995
3011
  "path": "skills/lit-diagram-drawer/scripts/mermaid_extract.py",
@@ -3133,7 +3149,7 @@
3133
3149
  },
3134
3150
  {
3135
3151
  "path": "skills/lit-docx/scripts/convert_md_to_pdf.py",
3136
- "sha256": "23cbc66128baa47ed9ad805c0211068d3580bcd1954bd507874545afc45e2cd0"
3152
+ "sha256": "aabc876d83dbc7bd02407e89c938a5a749870b1f053969522eac918a14994f5e"
3137
3153
  },
3138
3154
  {
3139
3155
  "path": "skills/lit-docx/scripts/convert_pdf.py",
@@ -3197,7 +3213,7 @@
3197
3213
  },
3198
3214
  {
3199
3215
  "path": "skills/lit-docx/templates/latex/acs/template.tex",
3200
- "sha256": "759e5d9c3bdcb06f062798159875f65da4a0d84dfefc0fb5b5aa47c3c5324f1c"
3216
+ "sha256": "1e92ee928d33007f4324e269c17054607f83dd3d5a25a94de2c71685ab35407d"
3201
3217
  },
3202
3218
  {
3203
3219
  "path": "skills/lit-docx/templates/latex/elsevier/README.md",
@@ -3205,7 +3221,7 @@
3205
3221
  },
3206
3222
  {
3207
3223
  "path": "skills/lit-docx/templates/latex/elsevier/template.tex",
3208
- "sha256": "bc200e370955617189a5244a87b72c2ee45a7d4d8dc38ff8f1967f94e9bbf41d"
3224
+ "sha256": "8c9f1d9d21434a5fe37936d23b6bf5be00aa9491fe9a646caf52f14365ebb4aa"
3209
3225
  },
3210
3226
  {
3211
3227
  "path": "skills/lit-docx/templates/latex/ieee/README.md",
@@ -3213,7 +3229,7 @@
3213
3229
  },
3214
3230
  {
3215
3231
  "path": "skills/lit-docx/templates/latex/ieee/template.tex",
3216
- "sha256": "bdadfdacac95c73144bdb6e166080e0ce7da83ee77ff8eea48f02a18cfc7a2be"
3232
+ "sha256": "d5aed7b9c043c437302d996352093a621d27ad5a118ea256d975cd4b38d96d81"
3217
3233
  },
3218
3234
  {
3219
3235
  "path": "skills/lit-docx/templates/latex/korean-generic/README.md",
@@ -3221,7 +3237,7 @@
3221
3237
  },
3222
3238
  {
3223
3239
  "path": "skills/lit-docx/templates/latex/korean-generic/template.tex",
3224
- "sha256": "9e18e94d768b41fe8a5bd65d642fc6327ebbe116eb97f8789de48e0d01094989"
3240
+ "sha256": "3d57f2639bea123b8ee8efafc54d723cb58d81e5f66bbf8bec33e491aca66fa5"
3225
3241
  },
3226
3242
  {
3227
3243
  "path": "skills/lit-docx/templates/latex/nature/README.md",
@@ -3229,7 +3245,7 @@
3229
3245
  },
3230
3246
  {
3231
3247
  "path": "skills/lit-docx/templates/latex/nature/template.tex",
3232
- "sha256": "74437009d7fe894b8e2c8c256f300181081195e1f9831e922e20af6606704265"
3248
+ "sha256": "40d2d44d9664e1c7fd7f2bea52dc778b5863a297843c2445861e9eb75367e505"
3233
3249
  },
3234
3250
  {
3235
3251
  "path": "skills/lit-docx/templates/registry.yaml",
@@ -3583,9 +3599,13 @@
3583
3599
  "path": "skills/lit-pptx/assets/azure/circle-sm.png",
3584
3600
  "sha256": "27e355441a8c2b8747a1ba065d0b0ca900e3b5e66bac4d5d72b05e7d383d8689"
3585
3601
  },
3602
+ {
3603
+ "path": "skills/lit-pptx/bin/hostexec.mjs",
3604
+ "sha256": "95451a260bf47cfb7e26df81c16a33898c56480b31d7aad86de6b9a5d8f87224"
3605
+ },
3586
3606
  {
3587
3607
  "path": "skills/lit-pptx/bin/office.mjs",
3588
- "sha256": "e3f4ebbf38bf58b2a4f0d8daa26ee663e842cecb7322c032501fcd93e1388e39"
3608
+ "sha256": "4871d5444c8f57807379b79ef2c19c0f754a6d2bb3448ef9119e4339431e3994"
3589
3609
  },
3590
3610
  {
3591
3611
  "path": "skills/lit-pptx/fonts/PRETENDARD-OFL.txt",
@@ -3981,7 +4001,7 @@
3981
4001
  },
3982
4002
  {
3983
4003
  "path": "skills/lit-typographic-motion/SKILL.md",
3984
- "sha256": "390466bf5bc5634b97c3c1163d212cdd15a4ef9a809916e7d07e9b7223923cda"
4004
+ "sha256": "af4f9824fafa2a795b3fd0d561b561b32cac11c7d12d5351060865c42b87c18a"
3985
4005
  },
3986
4006
  {
3987
4007
  "path": "skills/lit-typographic-motion/bin/audio.py",
@@ -3989,11 +4009,11 @@
3989
4009
  },
3990
4010
  {
3991
4011
  "path": "skills/lit-typographic-motion/bin/motion.mjs",
3992
- "sha256": "bbd6e482b8a01736aa0cedc8d31decc3e20e0b46c623d4a60e25a2c5b71bb2fb"
4012
+ "sha256": "c3442e2d6b69e7311ed83798db960d43be2c104761cf1b4111dda426a5b7be52"
3993
4013
  },
3994
4014
  {
3995
4015
  "path": "skills/lit-typographic-motion/bin/runtime.mjs",
3996
- "sha256": "81bd14b1f4cb767ae624767def2f915f2135ea751f5d148ec00f4b575a0f12b8"
4016
+ "sha256": "24b4794a66195ffd351a67d8ba22d3ba9b4b091f6f5224495be645aa33610e13"
3997
4017
  },
3998
4018
  {
3999
4019
  "path": "skills/lit-typographic-motion/engine/NOTICE",
@@ -4001,11 +4021,11 @@
4001
4021
  },
4002
4022
  {
4003
4023
  "path": "skills/lit-typographic-motion/engine/THIRD_PARTY_NOTICES",
4004
- "sha256": "b53d8a16333dd33454a5545840cd059c6ae7579530ea2814af88fb9ed09e28ef"
4024
+ "sha256": "6315280f65ceb5e1829ad60e5c4a302335f68729d56990c882596396de65887a"
4005
4025
  },
4006
4026
  {
4007
4027
  "path": "skills/lit-typographic-motion/engine/browser.mjs",
4008
- "sha256": "fe506c7a38a3d93241328930e515dc5ac8a74f138e68624242a2fbb633213d93"
4028
+ "sha256": "70ee97565c26f31721fc310bc656b67d60664adf8322ad035dcd00ae3a7daf97"
4009
4029
  },
4010
4030
  {
4011
4031
  "path": "skills/lit-typographic-motion/engine/completion.mjs",
@@ -4013,7 +4033,51 @@
4013
4033
  },
4014
4034
  {
4015
4035
  "path": "skills/lit-typographic-motion/engine/constants.mjs",
4016
- "sha256": "cf6dc912c7ad59d2284525741c510e40d2918aa7aa0517b33aa5144e75dc27c5"
4036
+ "sha256": "3cef523feac7e0fc4482afa4ddbff32a9fe4b35772b561ba088cc752a9f42fa1"
4037
+ },
4038
+ {
4039
+ "path": "skills/lit-typographic-motion/engine/cover-assets.mjs",
4040
+ "sha256": "4d34feddf0b4d7e7b40dde3521a3907b794f0c9a143261416341905ef4782c74"
4041
+ },
4042
+ {
4043
+ "path": "skills/lit-typographic-motion/engine/cover-capture.mjs",
4044
+ "sha256": "63c4a8af6d51c5d48d1518b47256d03c6f2877bbc908ee2852769259f01a34ee"
4045
+ },
4046
+ {
4047
+ "path": "skills/lit-typographic-motion/engine/cover-gate.mjs",
4048
+ "sha256": "a92c488da0ecf7bd2e54fab41d313796e6b2e98bcfd413cb057a0d40c13b05a9"
4049
+ },
4050
+ {
4051
+ "path": "skills/lit-typographic-motion/engine/cover-image.mjs",
4052
+ "sha256": "0d2bc7c3f66eeaad866e352c7877ff92dd879600f40d6d5a2808e5f49421d561"
4053
+ },
4054
+ {
4055
+ "path": "skills/lit-typographic-motion/engine/cover-init.js",
4056
+ "sha256": "ce03ec31cbb4bd3533bdcb3a7a249d7eda1f3a27bed7c5f1bab7da0f4399cd06"
4057
+ },
4058
+ {
4059
+ "path": "skills/lit-typographic-motion/engine/cover-png.mjs",
4060
+ "sha256": "d44720525c3137d8e46aef2baf8e4ea65d46de2af9c645009fcf3e572715f605"
4061
+ },
4062
+ {
4063
+ "path": "skills/lit-typographic-motion/engine/cover-sheet.mjs",
4064
+ "sha256": "9b29ec960855aae1c9d2cc626050a7dade3e4c4870eb0ece49b14719cc6eca1a"
4065
+ },
4066
+ {
4067
+ "path": "skills/lit-typographic-motion/engine/cover-treatment.mjs",
4068
+ "sha256": "8fb871f67905b338daf22210254ddeedfc7fcb9fce18620afc8c37d0dfaf23bc"
4069
+ },
4070
+ {
4071
+ "path": "skills/lit-typographic-motion/engine/cover-webp.mjs",
4072
+ "sha256": "931ed22c48f3c1ec0425fc6627a67a637478de58bb39648e0543066b2979dfdc"
4073
+ },
4074
+ {
4075
+ "path": "skills/lit-typographic-motion/engine/cover-worker.mjs",
4076
+ "sha256": "f2cedddcbe7e3881d4e608cbab9df2396b71ed14e8ba1a0822fc2c588c036414"
4077
+ },
4078
+ {
4079
+ "path": "skills/lit-typographic-motion/engine/cover.mjs",
4080
+ "sha256": "7bd6e2ff73ebb0525bf416f8685a36236316443631217245055c68668cfaa15f"
4017
4081
  },
4018
4082
  {
4019
4083
  "path": "skills/lit-typographic-motion/engine/director.mjs",
@@ -4021,7 +4085,7 @@
4021
4085
  },
4022
4086
  {
4023
4087
  "path": "skills/lit-typographic-motion/engine/encode.mjs",
4024
- "sha256": "adf07a2e8ba43b385d13bfccc0a27dc6ab68ba7aed17fce3ae85460678d8a0d0"
4088
+ "sha256": "4afe37fb976c6d8ebcb7096866223dc53566ce6c66118a1ca5e21eed519c2031"
4025
4089
  },
4026
4090
  {
4027
4091
  "path": "skills/lit-typographic-motion/engine/flash.mjs",
@@ -4035,9 +4099,17 @@
4035
4099
  "path": "skills/lit-typographic-motion/engine/gate.mjs",
4036
4100
  "sha256": "d9d00474b87d342679e7f5611c6d34745d50b1e45c0d0018246ebf0e7afb9f0b"
4037
4101
  },
4102
+ {
4103
+ "path": "skills/lit-typographic-motion/engine/hostexec.mjs",
4104
+ "sha256": "95451a260bf47cfb7e26df81c16a33898c56480b31d7aad86de6b9a5d8f87224"
4105
+ },
4038
4106
  {
4039
4107
  "path": "skills/lit-typographic-motion/engine/look.mjs",
4040
- "sha256": "b047e1b8134db536d12f12344a9134a29b766b8b64e4fd146ddc6639a07b5c00"
4108
+ "sha256": "216c766f9077cb55a76896b28c80a8c6ee84bc5fcf17d502393fb7af90ff24f1"
4109
+ },
4110
+ {
4111
+ "path": "skills/lit-typographic-motion/engine/loop-kit.js",
4112
+ "sha256": "451ef21b81bee3f3914622bfbcdd965e72ffb38e1ed12d009983444b0f1cd9ed"
4041
4113
  },
4042
4114
  {
4043
4115
  "path": "skills/lit-typographic-motion/engine/page.js",
@@ -4053,7 +4125,7 @@
4053
4125
  },
4054
4126
  {
4055
4127
  "path": "skills/lit-typographic-motion/engine/sound.mjs",
4056
- "sha256": "7300584e7cc730834776c7d77c0c56759c71450a9e7f4b39425ccb9980b533de"
4128
+ "sha256": "3427c0e4b76f7f202c3926b52e7ef222263e49d7de90ba3e2a40d81894c17c91"
4057
4129
  },
4058
4130
  {
4059
4131
  "path": "skills/lit-typographic-motion/engine/stage-gate.mjs",
@@ -4077,7 +4149,7 @@
4077
4149
  },
4078
4150
  {
4079
4151
  "path": "skills/lit-typographic-motion/engine/stage.mjs",
4080
- "sha256": "f93369324d0116c4e0fc2d6c5237878b6c47441303a5f59b8a66d994bd49d15a"
4152
+ "sha256": "c02b077c4a3176ccff055fb785705822eb9af0b4782a127128151620a8c558d7"
4081
4153
  },
4082
4154
  {
4083
4155
  "path": "skills/lit-typographic-motion/engine/stills.mjs",
@@ -4093,7 +4165,7 @@
4093
4165
  },
4094
4166
  {
4095
4167
  "path": "skills/lit-typographic-motion/engine/treatment.mjs",
4096
- "sha256": "b70e41511c290829bb57f7819f088a1d70c891d1bd373e979a6ac377507ff122"
4168
+ "sha256": "4e8418c6f1fe7e59115dced1ee0c33703a6d4be4fa5505f87de2cd08550412fd"
4097
4169
  },
4098
4170
  {
4099
4171
  "path": "skills/lit-typographic-motion/engine/type.mjs",
@@ -4103,9 +4175,69 @@
4103
4175
  "path": "skills/lit-typographic-motion/engine/util.mjs",
4104
4176
  "sha256": "00b7e3e68d2225bc6054132d3ae6c5805dd51e0a660775d0951f41df8af26826"
4105
4177
  },
4178
+ {
4179
+ "path": "skills/lit-typographic-motion/recipes/negatives/card-scenes/expected.json",
4180
+ "sha256": "9e52d0a29422f06e27d125bc982a65abfb47f4a795ae13513d0beeb2ea0edead"
4181
+ },
4182
+ {
4183
+ "path": "skills/lit-typographic-motion/recipes/negatives/card-scenes/index.html",
4184
+ "sha256": "5bcb5a60412b79912e1f23f962847837b410248a5d121d3cc33629ac531f3318"
4185
+ },
4186
+ {
4187
+ "path": "skills/lit-typographic-motion/recipes/negatives/reset-sweep/expected.json",
4188
+ "sha256": "b9f0b8a3ff25c5e32c70be6e7038cf7810389b35f6d51273e5faae0ed63fb8ce"
4189
+ },
4190
+ {
4191
+ "path": "skills/lit-typographic-motion/recipes/negatives/reset-sweep/index.html",
4192
+ "sha256": "8b68b95bc28397e058e1f64bc7d2c75f885bc599226ad7bbf3f4359a543f1f6a"
4193
+ },
4194
+ {
4195
+ "path": "skills/lit-typographic-motion/recipes/negatives/still-glow/expected.json",
4196
+ "sha256": "17aa359188c6a1c5be6699aeeeed35efdf7bd59b9aefa18008cecd3c51f6b0fa"
4197
+ },
4198
+ {
4199
+ "path": "skills/lit-typographic-motion/recipes/negatives/still-glow/index.html",
4200
+ "sha256": "e2a6d1179f4e85c171ce81770a038aa975b0ad37454229a5a72aa868dfbe409c"
4201
+ },
4202
+ {
4203
+ "path": "skills/lit-typographic-motion/recipes/negatives/title-slam/expected.json",
4204
+ "sha256": "5f68cd67a2dcf741d53d3e77c3028770f276d50d41121378188cff1fd092bea2"
4205
+ },
4206
+ {
4207
+ "path": "skills/lit-typographic-motion/recipes/negatives/title-slam/index.html",
4208
+ "sha256": "15ed73e9dd9fd699b053e525b29cdf2a6d3c3cdd8edcba675ce3e6e80a842619"
4209
+ },
4210
+ {
4211
+ "path": "skills/lit-typographic-motion/recipes/orbit-loop/expected.json",
4212
+ "sha256": "2b06d924753520284360e4df7622785199e5dd7b6712f374a16196f00c169737"
4213
+ },
4214
+ {
4215
+ "path": "skills/lit-typographic-motion/recipes/orbit-loop/index.html",
4216
+ "sha256": "bbf012ef313a126660d13045cc4ab27d563a2d4a44caeb5c39ecf9ea88c7a23a"
4217
+ },
4218
+ {
4219
+ "path": "skills/lit-typographic-motion/recipes/painted-light/expected.json",
4220
+ "sha256": "b08276e07baadf7ffa82a79bd2bd0084fd4f7e735522b8768b6e9c9c7c9e7800"
4221
+ },
4222
+ {
4223
+ "path": "skills/lit-typographic-motion/recipes/painted-light/index.html",
4224
+ "sha256": "309cf826b1a25d5af3d377585f053ff57581abba2fe642e85e8f86b7147913a5"
4225
+ },
4226
+ {
4227
+ "path": "skills/lit-typographic-motion/recipes/weight-tide/expected.json",
4228
+ "sha256": "b38570cfe4d30ea9f3c2a3a698743955bfa4fc186b122d816aa47b45b25b2b0a"
4229
+ },
4230
+ {
4231
+ "path": "skills/lit-typographic-motion/recipes/weight-tide/index.html",
4232
+ "sha256": "848b8d766abb0c6640c79e5fb079a8b4ffe22f1b0a617adbc00844fa4d1ec956"
4233
+ },
4234
+ {
4235
+ "path": "skills/lit-typographic-motion/references/cover.md",
4236
+ "sha256": "7fb371705fa74cf1f8e862f8a8488699aa4a3adaa9096f69a35ed5f1e02097b4"
4237
+ },
4106
4238
  {
4107
4239
  "path": "skills/lit-typographic-motion/references/craft-loop.md",
4108
- "sha256": "d159666e4c03e59976a702c515b4a0c407f55c068e75794e6caa4d66b743f41e"
4240
+ "sha256": "39c51921c0bf576d45b3cad45af2854e4398e8faccd5b96417b2a94a7747b17c"
4109
4241
  },
4110
4242
  {
4111
4243
  "path": "skills/lit-typographic-motion/references/engine-contract.md",
@@ -4113,11 +4245,11 @@
4113
4245
  },
4114
4246
  {
4115
4247
  "path": "skills/lit-typographic-motion/references/runtime.md",
4116
- "sha256": "11245a022bdcf4adbaaf542c99fd846ba2137b488cbdfa4ca9eef071cb542d61"
4248
+ "sha256": "f8254e2d97be57ec95ff013b114b10b1ff01ebc0fdbd1ce6ec6235ba4cc80718"
4117
4249
  },
4118
4250
  {
4119
4251
  "path": "skills/lit-typographic-motion/references/stage.md",
4120
- "sha256": "eed9583840f61562e82c37fc4ef98ce226c0778846ff829f6af01d1cef8717b7"
4252
+ "sha256": "555e788a408d41e74ce217a63507d096a4d945419e79f33cdf05cc4af236dca8"
4121
4253
  },
4122
4254
  {
4123
4255
  "path": "skills/lit-typographic-motion/references/style-bibles.md",
@@ -4125,7 +4257,7 @@
4125
4257
  },
4126
4258
  {
4127
4259
  "path": "skills/lit-typographic-motion/references/treatment.md",
4128
- "sha256": "79c58cbd10e94cee10373f51f186f45cb0fee01f5816145972274eeb030d7fda"
4260
+ "sha256": "ba4c9cbba6917f7d91cd22323050f58e6a0e90cc462613ef0e357796edb5b5ce"
4129
4261
  },
4130
4262
  {
4131
4263
  "path": "skills/lit-typographic-motion/references/type-craft.md",
@@ -4133,7 +4265,7 @@
4133
4265
  },
4134
4266
  {
4135
4267
  "path": "skills/lit-typographic-motion/runtime/fonts.json",
4136
- "sha256": "7d9f6cb296cc726dfb701ede0b1043fee342b8c554047a8a48d5fbccf42e596c"
4268
+ "sha256": "65686173aaa746a31c0ec35e64c7b7745e9b46bcb08dc85e33ebb40eb381dcdc"
4137
4269
  },
4138
4270
  {
4139
4271
  "path": "skills/lit-typographic-motion/runtime/licenses/CREDITS",
@@ -4157,7 +4289,7 @@
4157
4289
  },
4158
4290
  {
4159
4291
  "path": "skills/lit-typographic-motion/runtime/requirements.lock",
4160
- "sha256": "37f2bd3362fe34af37830d8df1ea87c0f41de0772e54b25ddb087c8ca694cb41"
4292
+ "sha256": "7495ed165e9d1f66ae99eb6b51b2eca65f0857175b04fb7da5ec4d276e3c50ea"
4161
4293
  },
4162
4294
  {
4163
4295
  "path": "skills/lit-typographic-motion/runtime/word-timing.json",
@@ -4169,7 +4301,7 @@
4169
4301
  },
4170
4302
  {
4171
4303
  "path": "skills/litgoal/SKILL.md",
4172
- "sha256": "65ca8763d31d855aa691af59c72a8024b6fbe1ccc55505792d83c10e19737e1a"
4304
+ "sha256": "ec38d44e41e91013f58867836cf0e156c702b0b22e5ea853f430420151d410f0"
4173
4305
  },
4174
4306
  {
4175
4307
  "path": "skills/litresearch/ATTRIBUTION.md",
@@ -4285,7 +4417,7 @@
4285
4417
  },
4286
4418
  {
4287
4419
  "path": "skills/lsp-setup/scripts/verify-lsp.ts",
4288
- "sha256": "33c6c22236234ed5f4db7b0deae560b9b5e0c8c018be4ded1a6c1179792655fe"
4420
+ "sha256": "f4974fad32446709d5617ac8b724c6959fed8c767fb491004ce779412c549061"
4289
4421
  },
4290
4422
  {
4291
4423
  "path": "skills/readme-studio/SKILL.md",
@@ -4377,7 +4509,7 @@
4377
4509
  },
4378
4510
  {
4379
4511
  "path": "skills/review-work/SKILL.md",
4380
- "sha256": "a1023bb8470066f6aca59398f7ccf35b7639b6fe50b3b8dc7872c16cbec1c98e"
4512
+ "sha256": "6c8bd88338f670dd7c30e1715eab018a1f825cdfb981b35fbf9cea2d7b0d5e3a"
4381
4513
  },
4382
4514
  {
4383
4515
  "path": "skills/rules/SKILL.md",
@@ -4401,7 +4533,7 @@
4401
4533
  },
4402
4534
  {
4403
4535
  "path": "skills/visual-qa/references/complete-contract.md",
4404
- "sha256": "0ed07370f299c81cfdd7fc6c26c8d3e4af784286df25234a425ee8ec3cd7a3b3"
4536
+ "sha256": "8870183e87096164edc14963cee1284ea9a81b4be01c69dbcdb0aa4a0af6fe84"
4405
4537
  },
4406
4538
  {
4407
4539
  "path": "skills/visual-qa/schemas/evidence-manifest-v1alpha1.schema.json",
@@ -1,5 +1,5 @@
1
1
  name: lithermes
2
- version: 1.0.27
2
+ version: 1.0.28
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
@@ -17,6 +17,7 @@ from .constants import (
17
17
  from .discovery import find_candidates, find_project_root, path_bases
18
18
  from .engine import (
19
19
  begin_session,
20
+ compaction_stamp,
20
21
  consume_compaction_budget,
21
22
  dynamic_rules_block,
22
23
  end_session,
@@ -39,6 +40,7 @@ __all__ = [
39
40
  "POST_COMPACT_MAX_RULE_CHARS",
40
41
  "SOURCE_PRIORITY",
41
42
  "begin_session",
43
+ "compaction_stamp",
42
44
  "consume_compaction_budget",
43
45
  "dynamic_rules_block",
44
46
  "end_session",
@@ -324,26 +324,41 @@ def end_session(session_id):
324
324
  _SESSION_STATE.pop(str(session_id or ""), None)
325
325
 
326
326
 
327
- def history_was_compacted(conversation_history) -> bool:
328
- """Detect a Hermes context compaction in this turn's history.
329
-
330
- Structural first: Hermes stamps its summary message with
331
- `_compressed_summary` (agent/context_compressor.py). The text markers are a
332
- fallback for transports that drop message metadata.
333
- """
327
+ def _compaction_messages(conversation_history):
334
328
  if not isinstance(conversation_history, (list, tuple)):
335
- return False
329
+ return
336
330
  for message in conversation_history:
337
331
  if not isinstance(message, dict):
338
332
  continue
339
333
  if message.get(C.COMPACTION_METADATA_KEY):
340
- return True
334
+ yield message
335
+ continue
341
336
  content = message.get("content")
342
337
  if isinstance(content, str) and content:
343
338
  lowered = content.lower()
344
339
  if any(marker in lowered for marker in C.COMPACTION_TEXT_MARKERS):
345
- return True
346
- return False
340
+ yield message
341
+
342
+
343
+ def history_was_compacted(conversation_history) -> bool:
344
+ """Detect a Hermes context compaction in this turn's history.
345
+
346
+ Structural first: Hermes stamps its summary message with
347
+ `_compressed_summary` (agent/context_compressor.py). The text markers are a
348
+ fallback for transports that drop message metadata.
349
+ """
350
+ return next(_compaction_messages(conversation_history), None) is not None
351
+
352
+
353
+ def compaction_stamp(conversation_history) -> str:
354
+ """Identify the compaction summary in this history: "" when none, else a short hash.
355
+
356
+ A later compaction replaces the summary, so the stamp changes with it.
357
+ """
358
+ summaries = [str(message.get("content")) for message in _compaction_messages(conversation_history)]
359
+ if not summaries:
360
+ return ""
361
+ return hashlib.sha256("\0".join(summaries).encode("utf-8", "replace")).hexdigest()[:16]
347
362
 
348
363
 
349
364
  def consume_compaction_budget(session_id) -> bool:
@@ -125,12 +125,13 @@ Deep Interview is an intent-first Socratic clarification loop that runs before p
125
125
  - The user says "deep interview", "interview me", "ask me everything", or "don't assume"
126
126
  - The user wants to avoid misaligned implementation from underspecified requirements
127
127
  - You need a clear requirements artifact before handing off to planning or implementation
128
+ - A pick handed over by `lit-brainstorm` is still vague and needs one decision-complete spec
128
129
  </Use_When>
129
130
 
130
131
  <Do_Not_Use_When>
131
132
  - The request already has concrete file/symbol targets and clear acceptance criteria
132
133
  - The user explicitly asks to skip planning/interview and execute immediately
133
- - The user asks for lightweight, open-ended brainstorming only
134
+ - The user asks for open-ended brainstorming (many options, no single spec): use `lithermes:lit-brainstorm`, which hands a still-vague pick back here
134
135
  - A complete spec/plan already exists and execution should start
135
136
  </Do_Not_Use_When>
136
137
 
@@ -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.27
448
+ Installed LitHermes 1.0.28
449
449
  plugin: $ISOLATED/plugins/lithermes
450
450
  model config: updated
451
451
 
@@ -462,8 +462,8 @@ installed payload: PASS
462
462
  enabled config: PASS
463
463
 
464
464
  $ hermes lithermes doctor
465
- [OK] plugin.yaml readable (version 1.0.27)
466
- [OK] skills bundled: 36
465
+ [OK] plugin.yaml readable (version 1.0.28)
466
+ [OK] skills bundled: 37
467
467
  [OK] litgoal durable runtime importable
468
468
  ```
469
469