@litfamily/litgrok 1.0.13 → 1.0.14
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/.grok/hooks/auto-handoff-gate.mjs +15 -2
- package/.grok-plugin/plugin.json +1 -1
- package/CHANGELOG.md +4 -0
- package/README.md +8 -8
- package/README_ko-KR.md +8 -8
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/reference.md +1 -1
- package/docs/reference_ko-KR.md +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
|
@@ -27,6 +27,19 @@ export function handoffMarker(sessionId) {
|
|
|
27
27
|
return `litgrok-auto-handoff: ${createHash('sha256').update(sessionId).digest('hex').slice(0, 32)}`;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
// The model often dresses the marker line up as a list item, quote, bold or backticked text, or an HTML
|
|
31
|
+
// comment. A line carries the marker when, with that decoration stripped, it holds the label and this
|
|
32
|
+
// session's exact digest, and no further hex digit follows the digest (a longer digest is another session).
|
|
33
|
+
function lineCarriesMarker(line, marker) {
|
|
34
|
+
const [label, digest] = marker.split(': ');
|
|
35
|
+
const plain = line.replace(/<!--|-->/gu, ' ').replace(/[`*_]/gu, '');
|
|
36
|
+
return new RegExp(`${label}\\s*:\\s*${digest}(?![0-9a-f])`, 'u').test(plain);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function carriesMarker(text, marker) {
|
|
40
|
+
return text.split(/\r?\n/).some((line) => lineCarriesMarker(line, marker));
|
|
41
|
+
}
|
|
42
|
+
|
|
30
43
|
function ledgerRecords(ledgerFile, sessionId) {
|
|
31
44
|
if (!existsSync(ledgerFile)) return [];
|
|
32
45
|
const records = [];
|
|
@@ -59,7 +72,7 @@ function directiveReason(percent, usedPercentage, sessionId) {
|
|
|
59
72
|
}
|
|
60
73
|
|
|
61
74
|
function safeDigest(text, marker) {
|
|
62
|
-
const body = text.split(/\r?\n/).filter((line) => !line
|
|
75
|
+
const body = text.split(/\r?\n/).filter((line) => !lineCarriesMarker(line, marker)).join('\n').replaceAll('```', "'''").trim();
|
|
63
76
|
if (body.length <= DIGEST_CHARACTERS) return body;
|
|
64
77
|
const cut = body.slice(0, DIGEST_CHARACTERS);
|
|
65
78
|
return `${cut.slice(0, Math.max(cut.lastIndexOf('\n'), 1))}\n[... shortened]`;
|
|
@@ -85,7 +98,7 @@ function findOwnHandoff(workspaceRoot, sessionId, directiveTime, now) {
|
|
|
85
98
|
continue;
|
|
86
99
|
}
|
|
87
100
|
const text = readFileSync(path, 'utf8');
|
|
88
|
-
if (!text
|
|
101
|
+
if (!carriesMarker(text, marker)) {
|
|
89
102
|
sawForeign = true;
|
|
90
103
|
continue;
|
|
91
104
|
}
|
package/.grok-plugin/plugin.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.0.14 — 2026-10-01
|
|
6
|
+
|
|
7
|
+
- Automatic handoff now finds the handoff it asked for even when the model formats the marker line, for example as a bullet, in backticks or in bold. Before, some of these formats made the handoff look missing after the compaction. A handoff written by another session is still ignored.
|
|
8
|
+
|
|
5
9
|
## 1.0.13 — 2026-09-30
|
|
6
10
|
|
|
7
11
|
- Automatic handoff, off until you turn it on. Run `litgrok auto-handoff on <percent>` with a percent you choose; LitGrok has no built-in number. When a turn ends at or above that percent, the model is asked once to write a handoff while it still remembers the session. `auto-handoff off` and `auto-handoff status` turn it off and show its state, and `LITGROK_AUTO_HANDOFF` and `LITGROK_AUTO_HANDOFF_PERCENT` set it from the environment.
|
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
1
|
+
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion-still.webp" /><source media="(prefers-reduced-motion: no-preference)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitGrok robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
|
|
2
2
|
|
|
3
3
|
<h1 align="center">LitGrok</h1>
|
|
4
4
|
<p align="center"><strong>Keep the work lit.</strong></p>
|
|
5
5
|
|
|
6
6
|
Make something useful in Grok Build. Leave the checked result and the next step with your project.
|
|
7
7
|
|
|
8
|
-
**[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/litgrok#readme)** · [한국어](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md) · [Install](#install-in-30-seconds) · [Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
8
|
+
**[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/litgrok#readme)** · [한국어](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md) · [Install](#install-in-30-seconds) · [Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/reference.md)
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
12
|
-
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
11
|
+
<a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/badge-version.svg" alt="1.0.14" /></a>
|
|
12
|
+
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
<p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
15
|
+
<p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/reference.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/lucide-book-open.svg" width="16" alt="" /> Docs</a> <a href="#install-in-30-seconds">Install</a> <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion.webp"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/lucide-play.svg" width="16" alt="" /> Cover motion</a> <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/lucide-shield-check.svg" width="16" alt="" /> MIT</a></p>
|
|
16
16
|
|
|
17
17
|
LitGrok gives Grok Build a way of working: plan the change, build it, check it, and leave a handoff the next session can read. It ships 38 skills, 11 agents, one project rule, and eleven hook registrations. Grok Build still runs the session and chooses the model.
|
|
18
18
|
|
|
@@ -24,7 +24,7 @@ You need Node.js and Grok Build. In an interactive terminal, from the project yo
|
|
|
24
24
|
npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
The files land in `<project>/.grok/`. Add `--user` to install under `~/.grok/` instead, or use `--package @litfamily/litgrok@1.0.
|
|
27
|
+
The files land in `<project>/.grok/`. Add `--user` to install under `~/.grok/` instead, or use `--package @litfamily/litgrok@1.0.14` to pin this release. Add `--dry-run` to see every destination before anything is written.
|
|
28
28
|
|
|
29
29
|
Trying a local package instead? Put its real absolute path in a variable, then run these two lines separately:
|
|
30
30
|
|
|
@@ -72,7 +72,7 @@ Beyond code, `lit-pptx` makes slide decks, `lit-docx` makes reports and Word doc
|
|
|
72
72
|
|
|
73
73
|
## What changes after install
|
|
74
74
|
|
|
75
|
-
The installer copies the skills, agents, project rule, and hooks into `.grok/`. The eleven hook registrations in [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
75
|
+
The installer copies the skills, agents, project rule, and hooks into `.grok/`. The eleven hook registrations in [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/hooks/hooks.json) run only in a trusted Git root, and they log the order of events in `.grok/litgrok/session-ledger/`. Everything runs inside your Grok session, and nothing runs in the background; when the session ends, the work waits for the next one.
|
|
76
76
|
|
|
77
77
|
If you'd like a status row showing the active LitGrok skill, the model and how much context is used, add it with `install --user --status-line`. It writes `[ui.status_line]` into `~/.grok/config.toml` and backs up an existing file first.
|
|
78
78
|
|
|
@@ -107,6 +107,6 @@ The installer never runs `git init`, trusts hooks, signs in or picks a model for
|
|
|
107
107
|
|
|
108
108
|
**[Full guide, skills gallery and troubleshooting on GitHub →](https://github.com/wjgoarxiv/litgrok#readme)**
|
|
109
109
|
|
|
110
|
-
[Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
110
|
+
[Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/reference.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/CHANGELOG.md) · [Privacy](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/privacy.md) · [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/LICENSE)
|
|
111
111
|
|
|
112
112
|
The cover is brand motion made with the LitFamily motion skill: animated artwork, with no Grok session recorded in it.
|
package/README_ko-KR.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
1
|
+
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion-still.webp" /><source media="(prefers-reduced-motion: no-preference)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitGrok 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
|
|
2
2
|
|
|
3
3
|
<h1 align="center">LitGrok</h1>
|
|
4
4
|
<p align="center"><strong>Keep the work lit.</strong></p>
|
|
5
5
|
|
|
6
6
|
Grok Build에서 작은 결과물을 만들고, 확인한 내용과 다음 할 일을 프로젝트에 남기세요.
|
|
7
7
|
|
|
8
|
-
**[GitHub에서 전체 안내와 스킬 갤러리 보기](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md)** · [English](https://github.com/wjgoarxiv/litgrok#readme) · [설치](#30초-설치) · [상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
8
|
+
**[GitHub에서 전체 안내와 스킬 갤러리 보기](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md)** · [English](https://github.com/wjgoarxiv/litgrok#readme) · [설치](#30초-설치) · [상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/reference_ko-KR.md)
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
12
|
-
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
11
|
+
<a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/badge-version.svg" alt="1.0.14" /></a>
|
|
12
|
+
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
<p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
15
|
+
<p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/reference_ko-KR.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/lucide-book-open.svg" width="16" alt="" /> 상세 안내</a> <a href="#30초-설치">설치</a> <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/cover-motion.webp"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/lucide-play.svg" width="16" alt="" /> 커버 모션</a> <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/assets/readme/lucide-shield-check.svg" width="16" alt="" /> MIT</a></p>
|
|
16
16
|
|
|
17
17
|
LitGrok은 Grok Build 위에서 계획하고, 만들고, 확인하고, 다음 세션이 읽을 인수인계 문서를 남기는 흐름을 더합니다. 스킬 38개, 에이전트 11개, 프로젝트 규칙 하나, 훅 등록 열한 개가 들어 있고, 세션 실행과 모델 선택은 계속 Grok Build가 맡습니다.
|
|
18
18
|
|
|
@@ -24,7 +24,7 @@ Node.js와 Grok Build가 있으면 됩니다. 써 보고 싶은 프로젝트에
|
|
|
24
24
|
npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
파일은 `<project>/.grok/`에 들어갑니다. `~/.grok/`에 설치하려면 `--user`를, 이 릴리스로 고정하려면 `--package @litfamily/litgrok@1.0.
|
|
27
|
+
파일은 `<project>/.grok/`에 들어갑니다. `~/.grok/`에 설치하려면 `--user`를, 이 릴리스로 고정하려면 `--package @litfamily/litgrok@1.0.14`을 쓰세요. `--dry-run`을 붙이면 파일을 쓰기 전에 들어갈 경로를 모두 보여 줍니다.
|
|
28
28
|
|
|
29
29
|
로컬 패키지로 써 보려면 실제 절대 경로를 변수에 넣고 두 줄을 따로 실행하세요.
|
|
30
30
|
|
|
@@ -72,7 +72,7 @@ npm exec --yes --package "$LITGROK_PACK" -- litgrok install
|
|
|
72
72
|
|
|
73
73
|
## 설치하면 달라지는 것
|
|
74
74
|
|
|
75
|
-
설치 프로그램이 스킬, 에이전트, 프로젝트 규칙, 훅을 `.grok/`에 복사합니다. [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
75
|
+
설치 프로그램이 스킬, 에이전트, 프로젝트 규칙, 훅을 `.grok/`에 복사합니다. [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/hooks/hooks.json)에 있는 훅 등록 열한 개는 신뢰한 Git 루트에서만 동작하고, `.grok/litgrok/session-ledger/`에 이벤트 순서를 남깁니다. 모든 작업은 Grok 세션 안에서 돌고 백그라운드 작업은 없습니다. 세션이 끝나면 다음 세션이 이어받을 때까지 그 자리에 멈춰 있습니다.
|
|
76
76
|
|
|
77
77
|
지금 어떤 LitGrok 스킬이 동작 중인지, 어떤 모델을 쓰는지, 컨텍스트를 얼마나 썼는지 보고 싶으면 `install --user --status-line`으로 상태 행을 켜세요. `~/.grok/config.toml`에 `[ui.status_line]`을 넣고, 파일이 이미 있으면 먼저 백업합니다.
|
|
78
78
|
|
|
@@ -107,6 +107,6 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok uninstall --user
|
|
|
107
107
|
|
|
108
108
|
**[GitHub에서 전체 안내, 스킬 갤러리, 문제 해결 보기 →](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md)**
|
|
109
109
|
|
|
110
|
-
[상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
110
|
+
[상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/reference_ko-KR.md) · [변경 이력](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/CHANGELOG.md) · [개인정보](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/docs/privacy.md) · [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.14/LICENSE)
|
|
111
111
|
|
|
112
112
|
커버의 모션은 LitFamily 모션 스킬로 만든 브랜드 연출입니다. 그려서 움직인 그림이라 실제 Grok 세션을 녹화한 장면은 들어 있지 않습니다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.14"><title>local: 1.0.14</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="290" transform="scale(.1)">local</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.14</text></g></svg>
|
package/docs/reference.md
CHANGED
|
@@ -77,7 +77,7 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
|
|
|
77
77
|
Pin a version when you need a reproducible install:
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
npm exec --yes --package @litfamily/litgrok@1.0.
|
|
80
|
+
npm exec --yes --package @litfamily/litgrok@1.0.14 -- litgrok install
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
Preview without writing files:
|
package/docs/reference_ko-KR.md
CHANGED
|
@@ -77,7 +77,7 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
|
|
|
77
77
|
재현 가능한 설치는 버전을 고정합니다.
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
npm exec --yes --package @litfamily/litgrok@1.0.
|
|
80
|
+
npm exec --yes --package @litfamily/litgrok@1.0.14 -- litgrok install
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
파일을 쓰지 않고 미리보기:
|
package/package.json
CHANGED