@litfamily/litgrok 1.0.4 โ†’ 1.0.5

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.
@@ -81,7 +81,8 @@ function paintLabel(text) {
81
81
  function formatRow(discipline, model, context, color) {
82
82
  if (discipline) {
83
83
  const prefix = '๐Ÿ”ฅ LIT IGNITED ยท ';
84
- const disciplineText = clipCells(discipline, 24);
84
+ const maxDisciplineCells = discipline === 'lit-scientific-visualization' ? 32 : 24;
85
+ const disciplineText = clipCells(discipline, maxDisciplineCells);
85
86
  const label = `LIT IGNITED ยท ${disciplineText}`;
86
87
  const middle = ` ${disciplineText} ๐Ÿ”ฅ โ”‚ `;
87
88
  const suffix = ` โ”‚ ctx ${context}%`;
@@ -19,6 +19,69 @@ const MAX_EVENT_BYTES = 1024 * 1024;
19
19
  const MAX_LEDGER_BYTES = 8 * 1024 * 1024;
20
20
  const TOOL_EVENTS = new Set(['PostToolUse', 'PostToolUseFailure']);
21
21
  const RECORD_SCHEMA = 'litgrok.hook-event/v1';
22
+ const HUD_DISCIPLINE_PATTERN = /(?:^|[\s/])(lit-scientific-visualization|lit-handoff|autoconference|autoresearch|lit-plan|litwork|lit)(?=$|[^\w-])/iu;
23
+
24
+ function maskCode(text) {
25
+ return text.replace(/[^\r\n]/gu, '\u0000');
26
+ }
27
+
28
+ function maskInlineCode(text) {
29
+ const runs = [...text.matchAll(/`+/gu)].map((match) => ({ index: match.index, text: match[0] }));
30
+ const nextRunByLength = new Array(runs.length).fill(-1);
31
+ const nextByLength = new Map();
32
+ for (let index = runs.length - 1; index >= 0; index -= 1) {
33
+ const run = runs[index];
34
+ nextRunByLength[index] = nextByLength.get(run.text.length) ?? -1;
35
+ nextByLength.set(run.text.length, index);
36
+ }
37
+
38
+ let output = '';
39
+ let cursor = 0;
40
+ for (let index = 0; index < runs.length; index += 1) {
41
+ const run = runs[index];
42
+ if (run.index < cursor) continue;
43
+ const closeIndex = nextRunByLength[index];
44
+ const openEnd = run.index + run.text.length;
45
+ if (closeIndex < 0) {
46
+ output += text.slice(cursor, openEnd);
47
+ cursor = openEnd;
48
+ continue;
49
+ }
50
+ const close = runs[closeIndex];
51
+ const closeEnd = close.index + close.text.length;
52
+ output += text.slice(cursor, run.index) + maskCode(text.slice(run.index, closeEnd));
53
+ cursor = closeEnd;
54
+ index = closeIndex;
55
+ }
56
+ return output + text.slice(cursor);
57
+ }
58
+
59
+ function visiblePromptText(prompt) {
60
+ let fence = null;
61
+ const lines = prompt.match(/[^\n]*\n|[^\n]+$/gu) ?? [];
62
+ const withoutFences = lines.map((line) => {
63
+ if (fence !== null) {
64
+ const close = line.match(/^[\t ]{0,3}(`+|~+)[\t ]*(?:\r?\n)?$/u)?.[1];
65
+ if (close && close[0] === fence.marker && close.length >= fence.length) fence = null;
66
+ return maskCode(line);
67
+ }
68
+ const open = line.match(/^[\t ]{0,3}(`{3,}|~{3,})/u)?.[1];
69
+ if (open !== undefined) {
70
+ fence = { marker: open[0], length: open.length };
71
+ return maskCode(line);
72
+ }
73
+ return line;
74
+ }).join('');
75
+ return maskInlineCode(withoutFences);
76
+ }
77
+
78
+ function hudDisciplineFromPrompt(prompt) {
79
+ if (typeof prompt !== 'string') return null;
80
+ const match = HUD_DISCIPLINE_PATTERN.exec(visiblePromptText(prompt));
81
+ if (!match) return null;
82
+ const token = match[1].toLowerCase();
83
+ return token === 'lit' ? 'litwork' : token;
84
+ }
22
85
 
23
86
  class RecorderError extends Error {
24
87
  constructor(code) {
@@ -199,6 +262,7 @@ export async function recordPassiveEvent(expectedEvent) {
199
262
  if (typeof event.promptId === 'string') record.promptId = event.promptId;
200
263
  const discipline = expectedEvent === 'UserPromptSubmit' && typeof event.prompt === 'string'
201
264
  && /(?:^|[\s/])lit-plan(?:$|[^\w-])/iu.test(event.prompt) ? 'lit-plan' : null;
265
+ const hudDiscipline = expectedEvent === 'UserPromptSubmit' ? hudDisciplineFromPrompt(event.prompt) : null;
202
266
  if (discipline !== null) record.discipline = discipline;
203
267
  if (expectedEvent === 'Stop') record.signal = 'turn-ended';
204
268
  const ledgerFile = environment.sessionId === null ? null : ledgerPath(environment.realWorkspaceRoot, environment.sessionId);
@@ -209,7 +273,7 @@ export async function recordPassiveEvent(expectedEvent) {
209
273
  sessionId: environment.sessionId,
210
274
  cwd: environment.eventCwd,
211
275
  workspaceRoot: environment.realWorkspaceRoot,
212
- discipline,
276
+ discipline: hudDiscipline,
213
277
  });
214
278
  }
215
279
  return { environment, event, ledgerFile, record };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litgrok",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Grok Build skills, project rules, and bounded lifecycle hooks for evidence-first lit work.",
5
5
  "author": {
6
6
  "name": "LitGrok contributors"
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.0.5
6
+
7
+ - Route bare `lit` to `litwork` and show the first recognized visible discipline in the opt-in status row, while keeping session-ledger discipline limited to `lit-plan`.
8
+
5
9
  ## 1.0.4
6
10
 
7
11
  - Add an opt-in Grok Build status line (`litgrok install --user --status-line`) that shows `๐Ÿ”ฅ LIT IGNITED ยท <discipline> ๐Ÿ”ฅ` while a discipline is active.
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.4/docs/assets/cover.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/cover-motion.webp" width="100%" alt="LitGrok cover art. An orange signal moves through orbital paths above the GROK BUILD wordmark. The static family cover appears for reduced-motion preference." /></picture></p>
2
- <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/cover.webp">View the static cover</a></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/cover.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/cover-motion.webp" width="100%" alt="LitGrok cover art. An orange signal moves through orbital paths above the GROK BUILD wordmark. The static family cover appears for reduced-motion preference." /></picture></p>
2
+ <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/cover.webp">View the static cover</a></p>
3
3
 
4
4
  <h1 align="center">LitGrok</h1>
5
5
  <p align="center"><strong>Keep the work lit.</strong></p>
6
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-wordmark.svg" width="480" alt="LITGROK display type" /></p>
7
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-clay-icon.png" width="160" alt="LitGrok clay mark" /></p>
6
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-wordmark.svg" width="480" alt="LITGROK display type" /></p>
7
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-clay-icon.png" width="160" alt="LitGrok clay mark" /></p>
8
8
 
9
9
  Make something useful in Grok Build. Leave the checked result and the next step with your project.
10
10
 
11
11
  [ํ•œ๊ตญ์–ด](./README_ko-KR.md) ยท [Install](#install-in-30-seconds) ยท [First use](#first-lit-use) ยท [Reference](./docs/reference.md)
12
12
 
13
13
  <p align="center">
14
- <a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/readme/badge-version.svg" alt="1.0.4" /></a>
15
- <a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
14
+ <a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/readme/badge-version.svg" alt="1.0.5" /></a>
15
+ <a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
16
16
  </p>
17
17
 
18
18
  <p align="center">
@@ -29,7 +29,7 @@ Make something useful in Grok Build. Leave the checked result and the next step
29
29
 
30
30
  It ships 33 skills, 11 agents, one project rule, and eleven hook registrations. The installer copies the complete payload into your project; Grok Build runs the session and owns model selection.
31
31
 
32
- Package: **@litfamily/litgrok** ยท Version: **1.0.4** ยท [MIT](./LICENSE)
32
+ Package: **@litfamily/litgrok** ยท Version: **1.0.5** ยท [MIT](./LICENSE)
33
33
 
34
34
  The scientific visualization corpus is packaged at `.grok/vendor/scientific-visualization/`; the numeric `045_scientific-visualization` label remains only in license and provenance filenames.
35
35
 
@@ -59,7 +59,7 @@ The five activation contracts ask the model to start each activated response wit
59
59
 
60
60
  This is advisory prompt guidance; it does not verify native host display.
61
61
 
62
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-ignition-1600.webp" width="48%" alt="LitGrok ignition apparatus" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-continuity-1600.webp" width="48%" alt="LitGrok continuity apparatus" /></p>
62
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-ignition-1600.webp" width="48%" alt="LitGrok ignition apparatus" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-continuity-1600.webp" width="48%" alt="LitGrok continuity apparatus" /></p>
63
63
 
64
64
  <p align="center"><a href="./docs/assets/readme/ignition-film.mp4"><img src="./docs/assets/readme/ignition-poster.png" width="720" alt="Ignition motion poster" /></a></p>
65
65
 
@@ -82,7 +82,7 @@ LITGROK_PACK='/absolute/path/to/the-provided-package.tgz'
82
82
  npm exec --yes --package "$LITGROK_PACK" -- litgrok install
83
83
  ```
84
84
 
85
- The default destination is `<project>/.grok/`. Use `--package @litfamily/litgrok@1.0.4` for a pinned install, or add `--user` to install under `~/.grok/`. [Install and upgrade details](./docs/reference.md#install).
85
+ The default destination is `<project>/.grok/`. Use `--package @litfamily/litgrok@1.0.5` for a pinned install, or add `--user` to install under `~/.grok/`. [Install and upgrade details](./docs/reference.md#install).
86
86
 
87
87
  The persistent Grok status row is optional and user-level only. Opt in with:
88
88
 
@@ -90,7 +90,7 @@ The persistent Grok status row is optional and user-level only. Opt in with:
90
90
  npm exec --yes --package @litfamily/litgrok@latest -- litgrok install --user --status-line
91
91
  ```
92
92
 
93
- This adds `[ui.status_line]` to `~/.grok/config.toml` with a two-second refresh. If a config already exists, LitGrok backs it up before changing it; an existing `ui.status_line` is preserved. `uninstall --user` removes only the unchanged LitGrok-managed value. Grok reads this setting from user or administrator configuration, not from project or plugin configuration ([status-line docs](https://docs.x.ai/build/features/status-line), [settings reference](https://docs.x.ai/build/settings/reference)). Example rows are `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%` and `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%`. With color enabled, the active `LIT IGNITED ยท <discipline>` label is bold with a per-character truecolor gradient `#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`; the flames and model/context segment remain unstyled. `NO_COLOR` (including an empty value) or `LITGROK_HUD_COLOR=0` keeps the row plain. Truecolor, bold and emoji rendering in the status row were confirmed on Grok Build 1.0.13. This adds a status command, not another hook registration; LitGrok still ships eleven hook registrations.
93
+ This adds `[ui.status_line]` to `~/.grok/config.toml` with a two-second refresh. If a config already exists, LitGrok backs it up before changing it; an existing `ui.status_line` is preserved. `uninstall --user` removes only the unchanged LitGrok-managed value. Grok reads this setting from user or administrator configuration, not from project or plugin configuration ([status-line docs](https://docs.x.ai/build/features/status-line), [settings reference](https://docs.x.ai/build/settings/reference)). Example rows are `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%` and `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%`. The first visible prompt match among `lit-scientific-visualization`, `lit-handoff`, `autoconference`, `autoresearch`, `lit-plan`, and `litwork` sets the discipline; bare `lit` maps to `litwork`, and inline or fenced Markdown code is ignored. With color enabled, the active `LIT IGNITED ยท <discipline>` label is bold with a per-character truecolor gradient `#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`; the flames and model/context segment remain unstyled. `NO_COLOR` (including an empty value) or `LITGROK_HUD_COLOR=0` keeps the row plain. Truecolor, bold and emoji rendering in the status row were confirmed on Grok Build 1.0.13. This adds a status command, not another hook registration; LitGrok still ships eleven hook registrations.
94
94
 
95
95
  Project hooks need a trusted Git project root in Grok Build. A plain folder can still load the installed skills and rules while hooks remain unavailable. For a new disposable project, run `git init` yourself before trusting it; for an existing repository, open Grok Build from its actual root. The installer never runs `git init` or changes trust. In the observed Grok Build 1.0.23 host, `grok --trust inspect --json` accepted the trust-and-inspect route even though `--trust` was omitted from `grok --help`; this is version-specific behavior.
96
96
 
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.4/docs/assets/cover.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/cover-motion.webp" width="100%" alt="LitGrok cover art. An orange signal moves through orbital paths above the GROK BUILD wordmark. The static family cover appears for reduced-motion preference." /></picture></p>
2
- <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/cover.webp">์ •์ง€ ํ‘œ์ง€ ๋ณด๊ธฐ</a></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/cover.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/cover-motion.webp" width="100%" alt="LitGrok cover art. An orange signal moves through orbital paths above the GROK BUILD wordmark. The static family cover appears for reduced-motion preference." /></picture></p>
2
+ <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/cover.webp">์ •์ง€ ํ‘œ์ง€ ๋ณด๊ธฐ</a></p>
3
3
 
4
4
  <h1 align="center">LitGrok</h1>
5
5
  <p align="center"><strong>Keep the work lit.</strong></p>
6
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-wordmark.svg" width="480" alt="LITGROK ๋””์Šคํ”Œ๋ ˆ์ด ํƒ€์ž…" /></p>
7
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-clay-icon.png" width="160" alt="LitGrok ํด๋ ˆ์ด ๋งˆํฌ" /></p>
6
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-wordmark.svg" width="480" alt="LITGROK ๋””์Šคํ”Œ๋ ˆ์ด ํƒ€์ž…" /></p>
7
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-clay-icon.png" width="160" alt="LitGrok ํด๋ ˆ์ด ๋งˆํฌ" /></p>
8
8
 
9
9
  Grok Build์—์„œ ์ž‘์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค๊ณ , ํ™•์ธํ•œ ๋‚ด์šฉ๊ณผ ๋‹ค์Œ ํ•  ์ผ์„ ํ”„๋กœ์ ํŠธ์— ๋‚จ๊ธฐ์„ธ์š”.
10
10
 
11
11
  [English](./README.md) ยท [์„ค์น˜](#30์ดˆ-์„ค์น˜) ยท [์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ธฐ](#์ฒซ-lit-์ž‘์—…) ยท [์ƒ์„ธ ์•ˆ๋‚ด](./docs/reference_ko-KR.md)
12
12
 
13
13
  <p align="center">
14
- <a href="#30์ดˆ-์„ค์น˜"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/readme/badge-version.svg" alt="1.0.4" /></a>
15
- <a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/readme/badge-license.svg" alt="MIT ๋ผ์ด์„ ์Šค" /></a>
14
+ <a href="#30์ดˆ-์„ค์น˜"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/readme/badge-version.svg" alt="1.0.5" /></a>
15
+ <a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/readme/badge-license.svg" alt="MIT ๋ผ์ด์„ ์Šค" /></a>
16
16
  </p>
17
17
 
18
18
  <p align="center">
@@ -29,7 +29,7 @@ Grok Build์—์„œ ์ž‘์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค๊ณ , ํ™•์ธํ•œ ๋‚ด์šฉ๊ณผ ๋‹ค์Œ ํ• 
29
29
 
30
30
  skill 33๊ฐœ, agent 11๊ฐœ, project rule ํ•˜๋‚˜, hook ๋“ฑ๋ก ์—ดํ•œ ๊ฐœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Installer๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์ „์ฒด ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ , ์„ธ์…˜ ์‹คํ–‰๊ณผ ๋ชจ๋ธ ์„ ํƒ์€ Grok Build๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
31
31
 
32
- ํŒจํ‚ค์ง€: **@litfamily/litgrok** ยท ๋ฒ„์ „: **1.0.4** ยท [MIT](./LICENSE)
32
+ ํŒจํ‚ค์ง€: **@litfamily/litgrok** ยท ๋ฒ„์ „: **1.0.5** ยท [MIT](./LICENSE)
33
33
 
34
34
  ๊ณผํ•™ ์‹œ๊ฐํ™” corpus๋Š” `.grok/vendor/scientific-visualization/`์— ํฌํ•จ๋˜๋ฉฐ, ์ˆซ์ž `045_scientific-visualization` ํ‘œ๊ธฐ๋Š” ๋ผ์ด์„ ์Šค์™€ provenance ํŒŒ์ผ๋ช…์—๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค.
35
35
 
@@ -59,7 +59,7 @@ Grok Build์—์„œ `/litwork`๋Š” ๋ฒ”์œ„๋ฅผ ์ •ํ•œ ์ž‘์—… ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์‹œ์ž‘
59
59
 
60
60
  ์ด๋Š” advisory prompt ์ง€์นจ์ด๋ฉฐ native host ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
61
61
 
62
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-ignition-1600.webp" width="48%" alt="LitGrok ์ ํ™” ์žฅ์น˜" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.4/docs/assets/litgrok-continuity-1600.webp" width="48%" alt="LitGrok ์—ฐ์† ์žฅ์น˜" /></p>
62
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-ignition-1600.webp" width="48%" alt="LitGrok ์ ํ™” ์žฅ์น˜" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.5/docs/assets/litgrok-continuity-1600.webp" width="48%" alt="LitGrok ์—ฐ์† ์žฅ์น˜" /></p>
63
63
 
64
64
  <p align="center"><a href="./docs/assets/readme/ignition-film.mp4"><img src="./docs/assets/readme/ignition-poster.png" width="720" alt="Ignition ๋ชจ์…˜ ํฌ์Šคํ„ฐ" /></a></p>
65
65
 
@@ -82,7 +82,7 @@ LITGROK_PACK='/absolute/path/to/the-provided-package.tgz'
82
82
  npm exec --yes --package "$LITGROK_PACK" -- litgrok install
83
83
  ```
84
84
 
85
- ๊ธฐ๋ณธ ์„ค์น˜ ์œ„์น˜๋Š” `<project>/.grok/`์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๋ ค๋ฉด `--package @litfamily/litgrok@1.0.4`๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. `--user`๋ฅผ ๋ถ™์ด๋ฉด `~/.grok/`์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. [์„ค์น˜ยท์—…๋ฐ์ดํŠธ ์ƒ์„ธ ์•ˆ๋‚ด](./docs/reference_ko-KR.md#์„ค์น˜).
85
+ ๊ธฐ๋ณธ ์„ค์น˜ ์œ„์น˜๋Š” `<project>/.grok/`์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๋ ค๋ฉด `--package @litfamily/litgrok@1.0.5`๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. `--user`๋ฅผ ๋ถ™์ด๋ฉด `~/.grok/`์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. [์„ค์น˜ยท์—…๋ฐ์ดํŠธ ์ƒ์„ธ ์•ˆ๋‚ด](./docs/reference_ko-KR.md#์„ค์น˜).
86
86
 
87
87
  Grok ์ƒํƒœ ํ–‰์˜ ์ง€์† ํ‘œ์‹œ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ์‚ฌ์šฉ์ž ๋ฒ”์œ„์—์„œ๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
88
88
 
@@ -90,7 +90,7 @@ Grok ์ƒํƒœ ํ–‰์˜ ์ง€์† ํ‘œ์‹œ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ์‚ฌ์šฉ์ž ๋ฒ”์œ„์—์„œ
90
90
  npm exec --yes --package @litfamily/litgrok@latest -- litgrok install --user --status-line
91
91
  ```
92
92
 
93
- ์ด ๋ช…๋ น์€ 2์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” `[ui.status_line]`์„ `~/.grok/config.toml`์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด config๋ฅผ ๋ฐ”๊พธ๊ธฐ ์ „์— ๋ฐฑ์—…ํ•˜๋ฉฐ, ์ด๋ฏธ `ui.status_line` ์„ค์ •์ด ์žˆ์œผ๋ฉด ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. `uninstall --user`๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ LitGrok ๊ด€๋ฆฌ ๊ฐ’๋งŒ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. Grok์€ ์ด ์„ค์ •์„ ์‚ฌ์šฉ์ž ๋˜๋Š” ๊ด€๋ฆฌ์ž config์—์„œ ์ฝ์œผ๋ฉฐ project/plugin config์—์„œ๋Š” ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค ([์ƒํƒœ ํ–‰ ๋ฌธ์„œ](https://docs.x.ai/build/features/status-line), [์„ค์ • ์ฐธ์กฐ](https://docs.x.ai/build/settings/reference)). ์˜ˆ์‹œ๋Š” `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%`์™€ `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%`์ž…๋‹ˆ๋‹ค. ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™œ์„ฑ `LIT IGNITED ยท <discipline>` label์„ ๊ตต์€ ๊ธ€์”จ๋กœ ๋ฌธ์ž๋งˆ๋‹ค truecolor gradient(`#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`)๋ฅผ ์ ์šฉํ•˜๊ณ , ๋ถˆ๊ฝƒ emoji์™€ model/context ๊ตฌ๊ฐ„์€ ์ƒ‰์น ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋นˆ ๊ฐ’์„ ํฌํ•จํ•œ `NO_COLOR` ๋˜๋Š” `LITGROK_HUD_COLOR=0`์€ escape ์—†๋Š” plain ํ–‰์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Grok Build 1.0.13 ์ƒํƒœ ํ–‰์—์„œ truecolor, ๊ตต์€ ๊ธ€์”จ, emoji๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ status command๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ hook ๋“ฑ๋ก ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. LitGrok์—๋Š” ๊ณ„์† 11๊ฐœ hook ๋“ฑ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.
93
+ ์ด ๋ช…๋ น์€ 2์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” `[ui.status_line]`์„ `~/.grok/config.toml`์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด config๋ฅผ ๋ฐ”๊พธ๊ธฐ ์ „์— ๋ฐฑ์—…ํ•˜๋ฉฐ, ์ด๋ฏธ `ui.status_line` ์„ค์ •์ด ์žˆ์œผ๋ฉด ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. `uninstall --user`๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ LitGrok ๊ด€๋ฆฌ ๊ฐ’๋งŒ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. Grok์€ ์ด ์„ค์ •์„ ์‚ฌ์šฉ์ž ๋˜๋Š” ๊ด€๋ฆฌ์ž config์—์„œ ์ฝ์œผ๋ฉฐ project/plugin config์—์„œ๋Š” ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค ([์ƒํƒœ ํ–‰ ๋ฌธ์„œ](https://docs.x.ai/build/features/status-line), [์„ค์ • ์ฐธ์กฐ](https://docs.x.ai/build/settings/reference)). ์˜ˆ์‹œ๋Š” `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%`์™€ `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%`์ž…๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์—์„œ inline ๋˜๋Š” fenced Markdown code๋ฅผ ์ œ์™ธํ•œ ๋’ค `lit-scientific-visualization`, `lit-handoff`, `autoconference`, `autoresearch`, `lit-plan`, `litwork` ์ค‘ ์ฒ˜์Œ ์ผ์น˜ํ•œ ํ•ญ๋ชฉ์ด ๊ทœ์œจ์„ ์ •ํ•˜๊ณ , ๋‹จ๋… `lit`์€ `litwork`๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™œ์„ฑ `LIT IGNITED ยท <discipline>` label์„ ๊ตต์€ ๊ธ€์”จ๋กœ ๋ฌธ์ž๋งˆ๋‹ค truecolor gradient(`#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`)๋ฅผ ์ ์šฉํ•˜๊ณ , ๋ถˆ๊ฝƒ emoji์™€ model/context ๊ตฌ๊ฐ„์€ ์ƒ‰์น ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋นˆ ๊ฐ’์„ ํฌํ•จํ•œ `NO_COLOR` ๋˜๋Š” `LITGROK_HUD_COLOR=0`์€ escape ์—†๋Š” plain ํ–‰์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Grok Build 1.0.13 ์ƒํƒœ ํ–‰์—์„œ truecolor, ๊ตต์€ ๊ธ€์”จ, emoji๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ status command๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ hook ๋“ฑ๋ก ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. LitGrok์—๋Š” ๊ณ„์† 11๊ฐœ hook ๋“ฑ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.
94
94
 
95
95
  Project hook์€ Grok Build์—์„œ ์‹ ๋ขฐํ•œ Git ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๊ฐ€ ์žˆ์–ด์•ผ ๋ฐœ๊ฒฌ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํด๋”์—์„œ๋„ ์„ค์น˜๋œ skill๊ณผ rule์€ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์ง€๋งŒ hook์€ 0๊ฐœ๋กœ ๋‚จ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ disposable project๋ผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ `git init`์„ ์‹คํ–‰ํ•œ ๋’ค trust๋ฅผ ํ—ˆ์šฉํ•˜์„ธ์š”. ๊ธฐ์กด ์ €์žฅ์†Œ๋ผ๋ฉด ์‹ค์ œ root์—์„œ Grok Build๋ฅผ ์—ฌ์„ธ์š”. Installer๋Š” `git init`์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ trust๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€์ฐฐ๋œ Grok Build 1.0.23์—์„œ๋Š” `grok --trust inspect --json`์ด ๋™์ž‘ํ–ˆ์ง€๋งŒ `grok --help`์—๋Š” global `--trust`๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด ๋ฒ„์ „์—์„œ ํ™•์ธํ•œ ๋™์ž‘์ž…๋‹ˆ๋‹ค.
96
96
 
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.4"><title>local: 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="290" transform="scale(.1)">local</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.4</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.5"><title>local: 1.0.5</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.5</text></g></svg>
package/docs/reference.md CHANGED
@@ -76,7 +76,7 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
76
76
  Pin a version when you need a reproducible install:
77
77
 
78
78
  ```bash
79
- npm exec --yes --package @litfamily/litgrok@1.0.4 -- litgrok install
79
+ npm exec --yes --package @litfamily/litgrok@1.0.5 -- litgrok install
80
80
  ```
81
81
 
82
82
  Preview without writing files:
@@ -112,7 +112,7 @@ refresh_interval = 2
112
112
 
113
113
  An existing config is backed up as `config.toml.litgrok-backup-<id>` before a change. If any `ui.status_line` value is already set, LitGrok leaves the file unchanged. User-level uninstall backs up the current config and removes only the unchanged values written by LitGrok; user edits and other settings remain. The option is rejected for project installs, is off by default, and does not add a twelfth hook registration.
114
114
 
115
- The command reads Grok's status input from stdin and emits one row such as `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%` or `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%`. With color enabled, the active `LIT IGNITED ยท <discipline>` label is bold with a per-character truecolor gradient `#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`; the flames and model/context segment remain unstyled. Set `LITGROK_HUD_COLOR=0` or `NO_COLOR` (including an empty value) in Grok's environment for a plain row with no escape bytes. The passive `UserPromptSubmit` hook writes the current record as a side effect because Grok ignores passive-hook stdout. Its JSON record is stored under `${TMPDIR:-os.tmpdir()}/litgrok-hud/` by hashed session and cwd keys, outside the repository and home; `LITGROK_HUD_STATE_ROOT` can override that root if it remains outside those paths. The hook writes this small temporary record whether or not the status-line option is installed. A later unmatched prompt writes a null discipline to clear the mark. The status command receives no documented session ID, so its lookup uses cwd; if the hook has no session ID, its primary record is keyed by workspace. Refresh is timer-based at two seconds, so the row can lag a prompt by up to two seconds. Grok documents no ANSI support for the status row; truecolor, bold and emoji rendering were confirmed on Grok Build 1.0.13.
115
+ The command reads Grok's status input from stdin and emits one row such as `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%` or `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%`. The first visible prompt match among `lit-scientific-visualization`, `lit-handoff`, `autoconference`, `autoresearch`, `lit-plan`, and `litwork` sets the discipline; bare `lit` maps to `litwork`, and inline or fenced Markdown code is ignored. With color enabled, the active `LIT IGNITED ยท <discipline>` label is bold with a per-character truecolor gradient `#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`; the flames and model/context segment remain unstyled. Set `LITGROK_HUD_COLOR=0` or `NO_COLOR` (including an empty value) in Grok's environment for a plain row with no escape bytes. The passive `UserPromptSubmit` hook writes the current record as a side effect because Grok ignores passive-hook stdout. Its JSON record is stored under `${TMPDIR:-os.tmpdir()}/litgrok-hud/` by hashed session and cwd keys, outside the repository and home; `LITGROK_HUD_STATE_ROOT` can override that root if it remains outside those paths. The hook writes this small temporary record whether or not the status-line option is installed. A later unmatched prompt writes a null discipline to clear the mark. The status command receives no documented session ID, so its lookup uses cwd; if the hook has no session ID, its primary record is keyed by workspace. Refresh is timer-based at two seconds, so the row can lag a prompt by up to two seconds. Grok documents no ANSI support for the status row; truecolor, bold and emoji rendering were confirmed on Grok Build 1.0.13.
116
116
 
117
117
  ### Install output
118
118
 
@@ -76,7 +76,7 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
76
76
  ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์„ค์น˜๋Š” ๋ฒ„์ „์„ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค.
77
77
 
78
78
  ```bash
79
- npm exec --yes --package @litfamily/litgrok@1.0.4 -- litgrok install
79
+ npm exec --yes --package @litfamily/litgrok@1.0.5 -- litgrok install
80
80
  ```
81
81
 
82
82
  ํŒŒ์ผ์„ ์“ฐ์ง€ ์•Š๊ณ  ๋ฏธ๋ฆฌ๋ณด๊ธฐ:
@@ -112,7 +112,7 @@ refresh_interval = 2
112
112
 
113
113
  ๊ธฐ์กด config๋ฅผ ๋ฐ”๊พธ๊ธฐ ์ „ `config.toml.litgrok-backup-<id>`๋กœ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ `ui.status_line` ๊ฐ’์ด ์žˆ์œผ๋ฉด ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋ฒ”์œ„ ์ œ๊ฑฐ๋Š” ํ˜„์žฌ config๋ฅผ ๋ฐฑ์—…ํ•˜๊ณ  LitGrok์ด ์“ด ๊ทธ๋Œ€๋กœ์ธ ๊ฐ’๋งŒ ์‚ญ์ œํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ์ˆ˜์ •๊ณผ ๋‹ค๋ฅธ ์„ค์ •์„ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ project ์„ค์น˜์—์„œ ๊ฑฐ๋ถ€๋˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์€ ๊บผ์ ธ ์žˆ์œผ๋ฉฐ, ์—ด๋‘ ๋ฒˆ์งธ hook ๋“ฑ๋ก์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
114
114
 
115
- ์ƒํƒœ command๋Š” Grok์˜ stdin ์ƒํƒœ JSON์„ ์ฝ๊ณ  `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%` ๋˜๋Š” `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%` ํ•œ ์ค„์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™œ์„ฑ `LIT IGNITED ยท <discipline>` label์— ๊ตต์€ ๋ฌธ์ž๋ณ„ truecolor gradient(`#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`)๋ฅผ ์ ์šฉํ•˜๊ณ  ๋ถˆ๊ฝƒ emoji์™€ model/context ๊ตฌ๊ฐ„์€ ์ƒ‰์น ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Grok ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ `LITGROK_HUD_COLOR=0` ๋˜๋Š” ๋นˆ ๊ฐ’์„ ํฌํ•จํ•œ `NO_COLOR`๋ฅผ ์„ค์ •ํ•˜๋ฉด escape byte๊ฐ€ ์—†๋Š” plain ํ–‰์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Grok์€ passive hook stdout์„ ๋ฌด์‹œํ•˜๋ฏ€๋กœ `UserPromptSubmit` hook์ด ๋ถ€์ˆ˜ ํšจ๊ณผ๋กœ ํ˜„์žฌ ๊ธฐ๋ก์„ ์”๋‹ˆ๋‹ค. JSON์€ hashed session/cwd key๋ฅผ ์‚ฌ์šฉํ•ด `${TMPDIR:-os.tmpdir()}/litgrok-hud/` ์•„๋ž˜, repository์™€ home ๋ฐ–์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. `LITGROK_HUD_STATE_ROOT`๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์ง€๋งŒ repository์™€ home ๋‚ด๋ถ€๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ prompt๊ฐ€ ํ™œ์„ฑ ๊ทœ์œจ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด null ๊ทœ์œจ์„ ์จ์„œ mark๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ์ƒํƒœ command์—๋Š” ๋ฌธ์„œํ™”๋œ session ID๊ฐ€ ์—†์œผ๋ฏ€๋กœ cwd๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. hook์— session ID๊ฐ€ ์—†์„ ๋•Œ ๊ธฐ๋ณธ ๊ธฐ๋ก key๋Š” workspace๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ฐฑ์‹ ์€ 2์ดˆ timer ๊ธฐ๋ฐ˜์ด๋ผ prompt ๋’ค ์ตœ๋Œ€ 2์ดˆ ๋Šฆ๊ฒŒ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Grok ๋ฌธ์„œ์—๋Š” ์ƒํƒœ ํ–‰์˜ ANSI ์ง€์›์ด ์ ํ˜€ ์žˆ์ง€ ์•Š์ง€๋งŒ, Grok Build 1.0.13์—์„œ truecolor, ๊ตต์€ ๊ธ€์”จ, emoji๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
115
+ ์ƒํƒœ command๋Š” Grok์˜ stdin ์ƒํƒœ JSON์„ ์ฝ๊ณ  `๐Ÿ”ฅ LIT IGNITED ยท lit-plan ๐Ÿ”ฅ โ”‚ grok-4 โ”‚ ctx 42%` ๋˜๋Š” `LIT ยท grok โ”‚ grok-4 โ”‚ ctx 42%` ํ•œ ์ค„์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์—์„œ inline ๋˜๋Š” fenced Markdown code๋ฅผ ์ œ์™ธํ•œ ๋’ค `lit-scientific-visualization`, `lit-handoff`, `autoconference`, `autoresearch`, `lit-plan`, `litwork` ์ค‘ ์ฒ˜์Œ ์ผ์น˜ํ•œ ํ•ญ๋ชฉ์ด ๊ทœ์œจ์„ ์ •ํ•˜๊ณ , ๋‹จ๋… `lit`์€ `litwork`๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™œ์„ฑ `LIT IGNITED ยท <discipline>` label์— ๊ตต์€ ๋ฌธ์ž๋ณ„ truecolor gradient(`#FF6337 โ†’ #FF2D95 โ†’ #00E5FF`)๋ฅผ ์ ์šฉํ•˜๊ณ  ๋ถˆ๊ฝƒ emoji์™€ model/context ๊ตฌ๊ฐ„์€ ์ƒ‰์น ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Grok ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ `LITGROK_HUD_COLOR=0` ๋˜๋Š” ๋นˆ ๊ฐ’์„ ํฌํ•จํ•œ `NO_COLOR`๋ฅผ ์„ค์ •ํ•˜๋ฉด escape byte๊ฐ€ ์—†๋Š” plain ํ–‰์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Grok์€ passive hook stdout์„ ๋ฌด์‹œํ•˜๋ฏ€๋กœ `UserPromptSubmit` hook์ด ๋ถ€์ˆ˜ ํšจ๊ณผ๋กœ ํ˜„์žฌ ๊ธฐ๋ก์„ ์”๋‹ˆ๋‹ค. JSON์€ hashed session/cwd key๋ฅผ ์‚ฌ์šฉํ•ด `${TMPDIR:-os.tmpdir()}/litgrok-hud/` ์•„๋ž˜, repository์™€ home ๋ฐ–์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. `LITGROK_HUD_STATE_ROOT`๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์ง€๋งŒ repository์™€ home ๋‚ด๋ถ€๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ prompt๊ฐ€ ํ™œ์„ฑ ๊ทœ์œจ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด null ๊ทœ์œจ์„ ์จ์„œ mark๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ์ƒํƒœ command์—๋Š” ๋ฌธ์„œํ™”๋œ session ID๊ฐ€ ์—†์œผ๋ฏ€๋กœ cwd๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. hook์— session ID๊ฐ€ ์—†์„ ๋•Œ ๊ธฐ๋ณธ ๊ธฐ๋ก key๋Š” workspace๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ฐฑ์‹ ์€ 2์ดˆ timer ๊ธฐ๋ฐ˜์ด๋ผ prompt ๋’ค ์ตœ๋Œ€ 2์ดˆ ๋Šฆ๊ฒŒ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Grok ๋ฌธ์„œ์—๋Š” ์ƒํƒœ ํ–‰์˜ ANSI ์ง€์›์ด ์ ํ˜€ ์žˆ์ง€ ์•Š์ง€๋งŒ, Grok Build 1.0.13์—์„œ truecolor, ๊ตต์€ ๊ธ€์”จ, emoji๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
116
116
 
117
117
  ### ์„ค์น˜ ์ถœ๋ ฅ
118
118
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litfamily/litgrok",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Grok Build skills, project rules, and hooks installer.",
5
5
  "type": "module",
6
6
  "bin": {
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litgrok",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Grok Build skills, project rules, and bounded lifecycle hooks for evidence-first lit work.",
5
5
  "author": {
6
6
  "name": "LitGrok contributors"