@litfamily/litopencode 1.0.21 → 1.0.22
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/CHANGELOG.md +8 -0
- package/README-Ko-KR.md +6 -6
- package/README.md +6 -6
- package/dist/tui/mission-band.d.ts +11 -0
- package/dist/tui/mission-band.js +44 -16
- package/dist/tui/mission-model.d.ts +69 -3
- package/dist/tui/mission-model.js +155 -29
- package/dist/tui/mission-motion.d.ts +10 -1
- package/dist/tui/mission-motion.js +17 -7
- package/dist/tui/mission-source.d.ts +30 -5
- package/dist/tui/mission-source.js +159 -11
- package/dist/tui/mission-text.d.ts +34 -9
- package/dist/tui/mission-text.js +169 -74
- package/dist/tui.js +37 -5
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/reference-Ko-KR.md +70 -19
- package/docs/reference.md +81 -22
- package/package.json +1 -1
package/docs/reference.md
CHANGED
|
@@ -359,27 +359,51 @@ package exports its TUI module as `@litfamily/litopencode/tui` (`dist/tui.js`, p
|
|
|
359
359
|
|
|
360
360
|
What it draws:
|
|
361
361
|
|
|
362
|
-
- A
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
362
|
+
- A workflow map, so the session shows where it is in the LIT workflow and not only which skill
|
|
363
|
+
fired. Each session follows one stage table:
|
|
364
|
+
- the main chain `interview › plan › work n/m › review › done`;
|
|
365
|
+
- lit-loop's criterion loop, the same stages with the work stage reading `criterion n/m`, when a
|
|
366
|
+
lit-loop or litgoal session counts goal criteria rather than tasks;
|
|
367
|
+
- a litresearch run, `decompose › wave n › expand › verify › synthesis`, while the session runs
|
|
368
|
+
litresearch or a run folder it wrote is still open.
|
|
369
|
+
|
|
370
|
+
A stage the session moved past without doing reads `–`: a bounded `lit-task` makes no plan, so its
|
|
371
|
+
plan stage is skipped, never claimed, and finishing every todo without `review-work` leaves review
|
|
372
|
+
at `–`. A review command, a review blocker or a goal completed through the ledger CLI (whose gate
|
|
373
|
+
includes review) marks it done; a goal the agent marks complete in a hand-written `goals.json`
|
|
374
|
+
passed no gate and leaves review at `–`. Stages behind the running one take their place on a colour
|
|
375
|
+
ramp from the theme's primary through secondary to accent; stages ahead are muted.
|
|
376
|
+
- A map chip on the right of the prompt's agent/model row: a `🔥 LIT` pill and the breadcrumb around
|
|
377
|
+
the running stage, `plan ✓ › WORK ▰▰▰▱▱▱▱ 3/7 › review`, with the running stage as a filled pill and a
|
|
378
|
+
seven-cell bar. When the row has room the live step follows (`⠹ bash · 0:48`). Narrower, it drops
|
|
379
|
+
the live step, then the brand and the stage behind (`🔥` with the running and next stage and a
|
|
380
|
+
five-cell bar), then everything but `🔥` and the count. The room comes from OpenCode's stored
|
|
381
|
+
sidebar setting and the session kind (a child session has no sidebar); when the setting cannot be
|
|
382
|
+
read yet, the chip assumes the sidebar is open and stays narrower.
|
|
367
383
|
- A mission panel at the top of the session sidebar, in a 36-cell rounded box titled
|
|
368
|
-
`🔥 LIT ▸ <
|
|
384
|
+
`🔥 LIT ▸ <STAGE>` with `n/m criteria` in the bottom border. The border carries the state: the
|
|
369
385
|
theme accent while working, the warning colour on a warning, the success colour when complete.
|
|
370
386
|
Inside: a two-row `LIT` with the discipline and a status beside it, the goal title in bold, the
|
|
371
|
-
|
|
372
|
-
|
|
387
|
+
vertical stage map (`◆` behind, `◉` running in bold, `⚑` flagged, `◇` ahead, joined by `┃`
|
|
388
|
+
connectors in the ramp colour up to the running stage and dotted `┆` after it, with the saved
|
|
389
|
+
plan's task count beside plan and `iter k` beside work), a gradient bar drawn in eighth-cell
|
|
390
|
+
blocks over a thin rule, the detail line `└ task 3 · next ▸ <item>` (a research run shows its claim
|
|
391
|
+
and verified counts instead), the live step, the criteria, warnings, and the last four evidence
|
|
392
|
+
events.
|
|
393
|
+
- The live step: the name of the tool the session is running and how long it has run, read from the
|
|
394
|
+
running tool part's name and start time. Its input (commands, paths, arguments) is never read or
|
|
395
|
+
shown. It appears only while the turn runs.
|
|
373
396
|
- A band: a status card along the bottom of the screen (OpenCode's `app_bottom` slot), under the
|
|
374
397
|
session and the sidebar alike. It is on screen for the whole session, lit or not, and keeps the
|
|
375
398
|
same four rows idle or working, so the prompt never moves:
|
|
376
399
|
- the top border carries `🔥 LIT · <discipline>` on the left and the phase on the right
|
|
377
400
|
(`● WORK`, `⚑ review blocked`, `✓ COMPLETE`, or `○ IDLE` before any lit turn and whenever the
|
|
378
401
|
session is not running a turn, read from OpenCode's own `session.status`; at rest no step is lit);
|
|
379
|
-
- row one is the
|
|
380
|
-
`n/m criteria` for the goal
|
|
381
|
-
|
|
382
|
-
|
|
402
|
+
- row one is the whole stage map as a breadcrumb, `interview – ━ plan ✓ ━ WORK 3/7 ─ review ─ done`,
|
|
403
|
+
an eighth-block bar, `n/m criteria` for the goal (left out in the criterion loop, whose stage
|
|
404
|
+
already counts them), the live step and the next task. While a
|
|
405
|
+
warning is open, `⚑ <text>` takes the place of the live step and `▸ next`. An idle session shows
|
|
406
|
+
the dim map with the project's last goal, or `add lit to a prompt to start`;
|
|
383
407
|
- row two holds the skill chips: every LitOpenCode skill that fired in the session, several at
|
|
384
408
|
once. Skills fired by the current request are bright accent pills while it runs, and a new one
|
|
385
409
|
gets a short light sweep as it arrives; when the turn ends they dim and stay as the recent list,
|
|
@@ -388,8 +412,8 @@ What it draws:
|
|
|
388
412
|
(`⟳ 7m`) and the git branch.
|
|
389
413
|
|
|
390
414
|
A subagent session shows its parent's card with `· in lane`; the home screen has no band. When the
|
|
391
|
-
card is narrow each row drops its own low-priority parts: the track drops the
|
|
392
|
-
width, the bar, the criteria count and then the
|
|
415
|
+
card is narrow each row drops its own low-priority parts: the track drops the live step and
|
|
416
|
+
next-task text, bar width, the bar, the criteria count and then every stage but the running one; the bottom border drops the branch,
|
|
393
417
|
then the time, then the context use. It never wraps. The completion moment plays here too.
|
|
394
418
|
- A line under the home prompt, after OpenCode's tips: `🔥 lit ready · last: <goal> ✓ n/m`. It
|
|
395
419
|
appears only when the project ledger holds a goal.
|
|
@@ -399,9 +423,14 @@ What it draws:
|
|
|
399
423
|
- One toast per refresh for a gate event: plan saved or not saved, goal set, criterion passed,
|
|
400
424
|
review blocker opened or resolved, and completion. Several events at once collapse into the most
|
|
401
425
|
urgent one.
|
|
402
|
-
- A completion moment of at most 1.2 seconds when the goal completes
|
|
403
|
-
border turns green, the bar fills,
|
|
404
|
-
|
|
426
|
+
- A completion moment of at most 1.2 seconds when the goal completes, every todo is done or a
|
|
427
|
+
research run writes its report: the border turns green, the bar fills, the stage that was running
|
|
428
|
+
and each stage after it turn done 60 ms apart, a light sweep crosses the brand, embers rise
|
|
429
|
+
through the panel and `COMPLETE` pops in with a small overshoot before it settles.
|
|
430
|
+
- An opt-in finish alert at that same moment, through OpenCode's `attention.notify`: a desktop
|
|
431
|
+
notification and the host's `done` sound. It is off by default; see the options below. OpenCode's
|
|
432
|
+
own `attention` setting still decides whether anything plays, and it is off until tui.json turns
|
|
433
|
+
it on (`"attention": { "enabled": true }`); without it OpenCode answers `attention_disabled`.
|
|
405
434
|
|
|
406
435
|
Where the data comes from, with nothing new written for the TUI:
|
|
407
436
|
|
|
@@ -412,17 +441,40 @@ Where the data comes from, with nothing new written for the TUI:
|
|
|
412
441
|
"Current" means fired since the latest user message while the session is busy.
|
|
413
442
|
- The `metadata.litopencode` marks this plugin already attaches to user-message parts when `lit`
|
|
414
443
|
activates a mode or a command runs (`save-plan` included). A session with no mark is idle and the
|
|
415
|
-
chip and panel stay hidden, even on the default `lit-loop` agent.
|
|
444
|
+
chip and panel stay hidden, even on the default `lit-loop` agent. Slash commands such as
|
|
445
|
+
`/litresearch` mark the map through OpenCode's command hook, so they need the command files
|
|
446
|
+
`litopencode install` writes; with only a `plugin` entry OpenCode sends them as plain text, which
|
|
447
|
+
marks nothing.
|
|
416
448
|
- OpenCode's todo list for the session (progress and next item), its status (retry), pending
|
|
417
449
|
permissions and questions, and context use from the last assistant message (amber at 75%).
|
|
418
450
|
- `.litopencode/litgoal/lit-loop/goals.json` under the project root. Symbolic links and files over
|
|
419
|
-
1 MiB are ignored.
|
|
420
|
-
|
|
451
|
+
1 MiB are ignored. Besides the ledger shape the CLI writes (`goals` with `activeGoalId`), it reads
|
|
452
|
+
what an agent writes by hand: one goal at the top, a goal under `goal`, or the last entry of a
|
|
453
|
+
`goals` list, with `completed` or `done` counted as a passed criterion or a complete goal. A goal
|
|
454
|
+
last updated before the session's first lit turn is treated as earlier work and left out. Its
|
|
455
|
+
checkpoints are the loop family's iterations.
|
|
456
|
+
- `.litopencode/litgoal/lit-loop/work-schema-3.json`, the bounded work record `/start-work` keeps,
|
|
457
|
+
when it belongs to this session and is not cancelled: its `work.progressed` turns are the work
|
|
458
|
+
stage's iterations, and the plan file it names gives the task count and next item from its
|
|
459
|
+
column-zero `- [ ]` / `- [x]` rows. The plan is read only when it is a regular file inside the
|
|
460
|
+
project root.
|
|
461
|
+
- The most recently written run folder under `.litopencode/litgoal/lit-loop/research/`: a
|
|
462
|
+
`report.md` means synthesis, a claim in `claim-graph.jsonl` with a gate result (`verified`,
|
|
463
|
+
`abstained`, `unresolved`, `refuted`) means verify, a `journal.md` whose last heading starts with
|
|
464
|
+
`EXPAND` means expand, claims mean a wave (numbered by the highest `wave` field or `## Wave`
|
|
465
|
+
heading), and nothing yet means decompose. A folder last written before the session's first lit
|
|
466
|
+
turn is earlier work.
|
|
467
|
+
- The running tool part of the session's latest assistant message, for the live step: its tool name
|
|
468
|
+
and `time.start` only.
|
|
421
469
|
|
|
422
470
|
Motion runs on a short frame timer only while a transition plays and stops afterwards: new rows
|
|
423
471
|
and pills slide in with ease-out-back, 160 ms each and 60 ms apart; the bar fills in 300 ms; a
|
|
424
|
-
warning row slides in over 220 ms and colours cross-fade in 140 ms; the light sweep takes 400 ms.
|
|
425
|
-
|
|
472
|
+
warning row slides in over 220 ms and colours cross-fade in 140 ms; the light sweep takes 400 ms.
|
|
473
|
+
When the map moves forward, the connectors between the old and new stage fill top to bottom 60 ms
|
|
474
|
+
apart and the running pill flashes once; nothing loops. The live step changes in place without a
|
|
475
|
+
slide-in, and while a tool runs its elapsed time ticks once a second; with no tool running there is
|
|
476
|
+
no timer at all. While a lit session is open the panel re-reads the goal ledger, the bounded work
|
|
477
|
+
record and the research folder every two seconds; an idle session does not.
|
|
426
478
|
Colours come from the active OpenCode theme. Set `["@litfamily/litopencode@<version>", { "motion": false }]`
|
|
427
479
|
in `tui.json` to keep it static, or turn the plugin off by id `litopencode` in OpenCode's plugin
|
|
428
480
|
manager or with `plugin_enabled`.
|
|
@@ -434,6 +486,13 @@ Band options go in the same options object:
|
|
|
434
486
|
the next task and the goal. While a goal exists the card keeps a fixed four rows, so a warning arriving or
|
|
435
487
|
clearing never moves the prompt. The card is off by default.
|
|
436
488
|
|
|
489
|
+
The finish alert goes in the same object and is off unless set:
|
|
490
|
+
|
|
491
|
+
- `{ "notify": true }` sends a desktop notification and plays the `done` sound when a mission
|
|
492
|
+
completes.
|
|
493
|
+
- `{ "notify": { "sound": false } }` keeps only the notification; `{ "notify": { "desktop": false } }`
|
|
494
|
+
keeps only the sound.
|
|
495
|
+
|
|
437
496
|
A ledger written from another terminal (for example `litopencode record-evidence`) raises no
|
|
438
497
|
OpenCode event, so the shared two-second ledger check picks it up; the chip, the panel and the band
|
|
439
498
|
then change on the same frame clock.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@litfamily/litopencode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"description": "Workflow plugin for OpenCode: add lit to a prompt and the work is planned, built, checked and written down so the next session can pick it up.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"opencode",
|