@agenit/cli 1.1.1 → 1.3.4

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 (3) hide show
  1. package/CHANGELOG.md +369 -0
  2. package/cli.js +1766 -882
  3. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,375 @@
3
3
  All notable changes to `@agenit/cli` are documented here. The project
4
4
  follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
5
 
6
+ ## [1.3.4] - 2026-05-09
7
+
8
+ _Auto-generated entry. Edit CHANGELOG.md directly before
9
+ the next release to curate this section._
10
+
11
+ ### Changed
12
+
13
+ - Merge pull request #66 from muhammed-eldabea:fix/publish-repo-url (c9fce29)
14
+ - fix(release): point package.json at the AgenIT repo for npm provenance (29ae4f3)
15
+
16
+ ## [1.3.3] - 2026-05-09
17
+
18
+ _Auto-generated entry. Edit CHANGELOG.md directly before
19
+ the next release to curate this section._
20
+
21
+ ### Changed
22
+
23
+ - Merge pull request #65 from muhammed-eldabea/feat/right-rail-soul-codedigest (2d68ea4)
24
+ - fix(repl): cycle focused job with Tab/Enter (Ctrl-J → key.return on Unix) (2263b19)
25
+ - fix(rail): job-tray compact mode hid freshly-started jobs (d6d80ff)
26
+ - fix(init): seed .flow/tools and .specify/memory/constitution.md (d87537a)
27
+ - feat(repl): add Ctrl-U / Ctrl-D backlog scroll for Mac compact keyboards (b0aa9da)
28
+ - feat(repl): scroll chat backlog with PgUp / PgDn (e955dbc)
29
+ - fix(repl): bottom-anchor entries to a row budget to stop bleed-through (9aca93e)
30
+ - fix(repl): word-wrap chat bubbles to bubble inner width (557ca5d)
31
+ - fix(repl): chat bubbles size correctly to multi-line content (a273ab8)
32
+ - fix(repl): write \r\n after rmcup so the shell prompt redraws on exit (cfcb1c6)
33
+ - feat(repl): bordered chat bubbles for user / agent / system / error (86efadd)
34
+ - fix(repl): single-line compact widgets so all four fit short terminals (f840bf7)
35
+ - fix(repl): bound body row to terminal height, pin chat input at bottom (f03c7b1)
36
+ - fix(repl): clear alt screen on resize to evict stale cells (e26907c)
37
+ - fix(repl): run inside alternate screen buffer to fix resize-stacking (80b0c54)
38
+ - fix(repl): chat in middle column + non-collapsing widget titles (4602787)
39
+ - fix(repl): bordered widget frames + status-toned borders on the right rail (af75b12)
40
+ - chore(release): bump @agenit/cli to 1.2.0 (2465b56)
41
+ - feat(repl): add PINNED @-files section to the side rail (46a4dfa)
42
+ - feat(repl): restyle ActivityStrip with chip vocabulary (feea7bb)
43
+ - feat(repl): restyle StatusBar with branded logo + stat pills (0109db2)
44
+ - feat(repl): add soul + codedigest sections to right rail (6f25ac0)
45
+ - feat: enhance job detail panel with live reasoning display and adjust right rail width for better readability (680e820)
46
+ - fix: improve tag resolution logic in release workflow for better validation (38cf4b4)
47
+ - feat: enhance plan approval modal with scrolling and rendering improvements (d22cb9a)
48
+
49
+ ## [1.3.2] - 2026-05-09
50
+
51
+ ### Fixed
52
+
53
+ - **Ctrl-J never cycled to the next focused job.** On Unix terminals
54
+ Ctrl-J generates LF (`\n`) — the same byte as Enter — and Ink
55
+ reports it as `key.return`, not `key.ctrl && ch === "j"`. So the
56
+ cycle handler never fired; the keystroke fell through, the panel
57
+ closed (or the empty-input submit ran), and "d" leaked into the
58
+ input field on the next user keypress. Tab and Enter now also
59
+ cycle when a job is already focused (the panel replaces the input
60
+ field, so Enter has no other meaning there); Ctrl-J is preserved
61
+ for terminals that do report it correctly. Footer hint updated to
62
+ `Tab / Enter to cycle to next job`.
63
+
64
+ ## [1.3.1] - 2026-05-09
65
+
66
+ ### Fixed
67
+
68
+ - **Job Tray widget hides freshly-started jobs.** The compact-mode
69
+ summary line only listed `jobs[0].snapshot.label`, so when the
70
+ always-running `soul-keeper` daemon held the top slot, a `/goal start`
71
+ the user just kicked off was counted ("2 running") but invisible by
72
+ name. The summary now lists every job's `kind: label` joined by
73
+ middle-dots and adds a `Ctrl-] expand · Ctrl-G focus` hint at the
74
+ end (truncated to fit one row).
75
+
76
+ ## [1.3.0] - 2026-05-09
77
+
78
+ ### Fixed
79
+
80
+ - **`/goal start` no longer dies with ENOENT on plan.md.** `agenit init`
81
+ was seeding `.gemini/skills/` and `.gemini/settings.json` but not
82
+ `.flow/tools/` or `.specify/memory/constitution.md`. The skill files
83
+ reference both — speckit-specify shells out to
84
+ `.flow/tools/speckit_native.py`, speckit-plan reads
85
+ `.specify/memory/constitution.md` on step 2 — so the skills installed
86
+ into a project but their runtime dependencies didn't, and the
87
+ pipeline died downstream when `plan-via-speckit` ENOENT'd on the
88
+ `plan.md` the skill never wrote (because the model was busy
89
+ thrashing for the missing tool/constitution and never reached
90
+ `write_file`).
91
+ `seedGeminiAssets` now also recursively copies `.flow/tools/*` from
92
+ flowHome and seeds a default `constitution.md` if the target lacks
93
+ one. Tool copies overwrite (CLI ships truth); constitution preserves
94
+ user edits across re-init.
95
+
96
+ ### Changed
97
+
98
+ - **`agenit init` output adds two lines** reporting tool count and
99
+ constitution status, so users can confirm the bootstrap is complete
100
+ before running `/goal start`.
101
+
102
+ ## [1.2.13] - 2026-05-09
103
+
104
+ ### Changed
105
+
106
+ - **Ctrl-U / Ctrl-D scroll the chat backlog (Mac-friendly).** Mac
107
+ compact keyboards don't have dedicated PgUp / PgDn keys — they
108
+ require Fn+Up / Fn+Down, which is awkward in a terminal. Ctrl-U
109
+ (older) and Ctrl-D (newer) follow the vim / less / tmux convention
110
+ and work on every keyboard. PgUp / PgDn still work for users with
111
+ full keyboards. Help banner and scroll hints updated to lead with
112
+ Ctrl-U / Ctrl-D.
113
+
114
+ ## [1.2.12] - 2026-05-09
115
+
116
+ ### Added
117
+
118
+ - **PgUp / PgDn scroll the chat backlog.** The `↑ N earlier messages
119
+ above` hint was a dead end — there was no way to actually view those
120
+ older entries. PgUp now shifts the visible window backward through
121
+ history one entry at a time; PgDn shifts forward. The scroll offset
122
+ auto-resets to the bottom whenever a new entry arrives so users
123
+ always see the reply to the prompt they just sent. A `↓ N newer
124
+ message{s} below` hint surfaces at the bottom of the chat area when
125
+ scrollback is engaged. Help banner updated.
126
+
127
+ ## [1.2.11] - 2026-05-09
128
+
129
+ ### Fixed
130
+
131
+ - **Long chat backlogs no longer bleed past the viewport.** When the
132
+ cumulative height of all entries exceeded the chat column's available
133
+ rows, Ink rendered them past the bottom of the viewport — producing
134
+ bleed-through artifacts (old chars from a prior frame staying on
135
+ cells the new frame didn't repaint, e.g. `cycle jobsory` instead of
136
+ `cycle jobs`). The entries window now uses a row budget instead of a
137
+ fixed count of 12: each entry's wrapped row count is measured via
138
+ the same `wordWrap` helper used for rendering, then we walk newest →
139
+ oldest and keep entries until the budget is hit, anchoring the latest
140
+ reply to the bottom. The `↑ N earlier` hint covers the rest. The
141
+ budget accounts for the activity strip, job strip, busy spinner,
142
+ expanded reasoning card, and picker dynamically.
143
+
144
+ ## [1.2.10] - 2026-05-09
145
+
146
+ ### Fixed
147
+
148
+ - **Chat bubbles now contain wrapped text on narrow terminals.** When
149
+ an agent reply contained lines longer than the chat column, Ink
150
+ would word-wrap them visually but Yoga only counted the logical
151
+ lines toward the bubble's height — so the box clipped the bottom
152
+ rows of long answers. `MultilineText` now pre-wraps text at the
153
+ bubble's inner width (`cols − sideRail − rightRail − bubble chrome`)
154
+ using an ANSI-aware tokenizer, so each `<Text>` child equals exactly
155
+ one visual row and the box sizes correctly. Wide terminals were
156
+ unaffected because nothing wrapped; the bug was width-dependent.
157
+
158
+ ## [1.2.9] - 2026-05-09
159
+
160
+ ### Fixed
161
+
162
+ - **Chat bubbles now contain multi-line content correctly.** The
163
+ agent's `/goal status` response (and any other multi-line markdown
164
+ reply) was overflowing past the bubble's bottom border because Ink
165
+ doesn't always count `\n` characters within a single `<Text>`
166
+ toward the parent Box's auto-height — especially when the string
167
+ carries ANSI escapes from `renderMarkdown`. EntryView now splits
168
+ each entry's text into one `<Text>` per line via a new
169
+ `MultilineText` helper; Ink counts children rather than
170
+ newline-characters, so the box sizes to N rows reliably.
171
+
172
+ ## [1.2.8] - 2026-05-09
173
+
174
+ ### Fixed
175
+
176
+ - **Shell prompt now redraws after `/exit`.** The rmcup escape on
177
+ alt-screen exit restores the cursor to where it was when alt-screen
178
+ was entered — typically right after the `agenit\n` the user typed
179
+ to launch us, on a logically-blank line. zsh and bash only redraw
180
+ their prompt when the cursor is on a fresh line, so the user was
181
+ left staring at a blank line until they pressed Enter. The exit
182
+ hook now writes `\r\n` after rmcup to advance to a fresh line, so
183
+ the shell's prompt renders naturally on `/exit` / Ctrl-C / SIGTERM.
184
+
185
+ ## [1.2.7] - 2026-05-09
186
+
187
+ ### Changed
188
+
189
+ - **Chat messages now render as bordered bubbles** — each entry
190
+ (user, agent, system, error) is wrapped in a rounded `<Box>` with
191
+ a status-toned border and a uppercase role badge inside the frame:
192
+ `● YOU` (blue), `● AGENT` (mint), `● SYSTEM` (amber), `● ERROR`
193
+ (red). Matches the right-rail widget vocabulary so the whole UI
194
+ reads as one consistent surface.
195
+
196
+ ## [1.2.6] - 2026-05-09
197
+
198
+ UX patch — all four rail widgets fit even in short terminals.
199
+
200
+ ### Changed
201
+
202
+ - **Compact mode is now a single body line per widget.** Each rail
203
+ widget renders as a 4-row card (frame top + title + 1 line + frame
204
+ bottom) with a status-toned dot in the title. The marginTop above
205
+ the frame goes to 0 in compact mode so widgets sit flush. Total
206
+ rail height: 16 rows for four widgets — fits in ≥ 18-row terminals.
207
+ Press Ctrl-] to expand any widget back to full detail.
208
+ - JOB TRAY compact: `N {status} · top-job kind: label`
209
+ - SOUL compact: `block heads · N entries`
210
+ - CODEDIGEST compact: `N chunks · built T · M recent`
211
+ - THINKING compact: last reasoning line only
212
+ - `overflow="hidden"` added to the body row so any widget content
213
+ beyond the row's bounded height clips at the boundary instead of
214
+ bleeding into adjacent renders.
215
+
216
+ ## [1.2.5] - 2026-05-09
217
+
218
+ UX patch on top of 1.2.4 — anchors the chat input at the bottom of
219
+ the middle column and bounds rail widget height so chat is always
220
+ visible.
221
+
222
+ ### Changed
223
+
224
+ - **Body row is now bounded to the terminal height** (`rows`). The
225
+ middle column uses `justifyContent="space-between"` to pin chat
226
+ input + reasoning + activity at the bottom and let the entries
227
+ area flex-grow above. Resolves the bug where extending the
228
+ terminal vertically pushed the chat input below the visible area.
229
+ - **Soul widget compact mode shows 1 block × 1 bullet only** — was 2
230
+ blocks × 3 bullets, which could overflow the rail height. Other
231
+ blocks surface as `+N more blocks · Ctrl-] to expand`. Full mode
232
+ (Ctrl-]) shows all blocks with up to 8 bullets each.
233
+
234
+ ### Fixed
235
+
236
+ - **Soul bullet wrap-tails bleeding into the side rail are gone.**
237
+ Each `SoulRow` element now wraps its `<Text>` in an explicit
238
+ `<Box width={width}>` so Ink is forced to constrain the text to
239
+ the rail's column. Without the explicit width, Ink could fall
240
+ back to the text's natural length and wrap onto the next visual
241
+ line — visible as fragments like `ion code wi…`, `Clever embe…`,
242
+ `e. ASIL sco…` appearing in the side rail.
243
+
244
+ ## [1.2.4] - 2026-05-09
245
+
246
+ UX patch on top of 1.2.3.
247
+
248
+ ### Fixed
249
+
250
+ - **Resize artifacts cleared on every resize event.** Even inside the
251
+ alt screen, Ink only repaints cells the new frame visits — cells
252
+ the old frame wrote to that the new frame doesn't revisit kept
253
+ their old content. Visible as wrap-tail fragments from the right
254
+ rail (`ion code wi…`, `Clever embe…`, `ASIL sco…`) appearing in
255
+ the side rail's column after a narrow-to-wide or wide-to-narrow
256
+ resize. The resize handler in `App.tsx` now writes `\x1b[2J\x1b[H`
257
+ (clear screen + cursor home) before updating cols/rows state, so
258
+ Ink's next paint starts from a blank buffer.
259
+
260
+ ## [1.2.3] - 2026-05-09
261
+
262
+ UX patch on top of 1.2.2 — fixes terminal-resize re-rendering and
263
+ restores a clean exit experience.
264
+
265
+ ### Fixed
266
+
267
+ - **Terminal resize no longer stacks stale layouts in scrollback.**
268
+ The REPL now runs inside the terminal's alternate screen buffer
269
+ (smcup / rmcup), the same mode `vim` / `htop` / `less` use. Resize,
270
+ re-render, and modal transitions all happen on a fresh buffer; the
271
+ original terminal state is restored on every exit path (clean exit,
272
+ Ctrl-C, SIGTERM, SIGHUP). Trade-off: the conversation isn't visible
273
+ in scrollback after `/exit`, but it persists to the session file
274
+ on disk — `agenit resume` recovers the transcript.
275
+
276
+ ## [1.2.2] - 2026-05-09
277
+
278
+ UX patch on top of 1.2.1.
279
+
280
+ ### Changed
281
+
282
+ - **Chat lives in the middle column now.** Previous renders put the
283
+ goal banner, user prompts, and agent responses into Ink's
284
+ `<Static>` (which renders into terminal scrollback above the
285
+ layout), so the middle column between the rails was empty. Entries
286
+ now render inside `main` between the StatusBar and the input,
287
+ capped to the last 12 messages so the layout stays bounded. A
288
+ dim `↑ N earlier messages above` hint surfaces when older entries
289
+ are off-screen. Trade-off: terminal scrollback no longer holds a
290
+ pristine copy of the conversation — but the layout matches the
291
+ three-pane workbench design.
292
+
293
+ ### Fixed
294
+
295
+ - Widget titles (`JOB TRAY`, `SOUL`, `CODEDIGEST`, `THINKING`) no
296
+ longer collapse on short or narrow terminals. `WidgetFrame`
297
+ declares `flexShrink={0}` on itself, the title row, and the
298
+ subtitle row so Ink can't evict them when the rail's bounded
299
+ height is smaller than the natural content height. The fix
300
+ resolves the `1 runningY` row-collision artifact where
301
+ `JOB TRAY` was being squeezed into the subtitle row and only
302
+ the trailing `Y` survived.
303
+
304
+ ## [1.2.1] - 2026-05-09
305
+
306
+ UX patch on top of 1.2.0 — fixes the right-rail rendering issues
307
+ spotted on a 56-col rail where the title and subtitle of each
308
+ section collided onto the same row.
309
+
310
+ ### Fixed
311
+
312
+ - Each rail section is now wrapped in a single bordered `WidgetFrame`
313
+ with a status-toned border (idle=blue, running=green, stopped=red)
314
+ rather than relying on per-card borders alone. The section title
315
+ and subtitle live inside that frame on separate rows — the
316
+ letter-spacing trick that was producing `T R A Y` collisions has
317
+ been removed.
318
+ - Job tray, codedigest, and thinking widgets compute their own status
319
+ tone from their data: jobs running / jobs errored, codedigest
320
+ index missing / recently searched, reasoning fresh / stale.
321
+ - Goal-kind job rows now get a full progress bar with percentage and
322
+ an elapsed-time line so the goal widget reads as a primary surface.
323
+ Other job kinds keep the compact two-line layout.
324
+
325
+ ## [1.2.0] - 2026-05-09
326
+
327
+ A minor bump for a redesign pass on the rail chrome: the right rail
328
+ now carries soul, codedigest, and reasoning sections alongside the
329
+ job tray; the top status bar gets stat pills; the side rail carries
330
+ recent `@`-paths under the V-Model view.
331
+
332
+ ### Added
333
+
334
+ - **Right rail** — three new sections beyond the existing job tray:
335
+ `SOUL` (per-block cards from `.flow/soul.md`, refreshed every 2s),
336
+ `CODEDIGEST` (chunk count + last-build freshness + language pills +
337
+ recent searches with top-hit location), and `THINKING` (tail of the
338
+ live reasoning stream). Folding is mode-driven: compact by default,
339
+ full when widened.
340
+ - **Resizable right rail** — width now scales proportionally with the
341
+ terminal (`clamp(36, 30%·cols, 56)` default) instead of jumping
342
+ between fixed tiers. `Ctrl-]` toggles a wider mode
343
+ (`clamp(48, 42%·cols, 80)`) that keeps the chat visible — the
344
+ inline counterpart to the full-screen `Ctrl-J` / `Ctrl-G` modal.
345
+ - **Status bar restyle** — branded `agenIT flow` logo with the IT
346
+ highlighted in the design's signal red, a project context pill
347
+ (`[ ● project · ⎇ branch ]`), and right-aligned bracket pills for
348
+ YOLO / MODEL / STAGE.
349
+ - **ActivityStrip chips** — skill / agent / tool counts now render as
350
+ bracket pills with per-kind tool color coding (write=red,
351
+ read=muted, shell=amber).
352
+ - **PINNED side-rail section** — the side rail now keeps a 5-deep
353
+ list of `@`-paths the user referenced in their last few prompts.
354
+ Long paths ellipsize from the left so the basename is preserved.
355
+ - `/codedigest search` results are recorded into an in-memory ring
356
+ buffer (capacity 10) so the rail can show what was searched without
357
+ changing the `@flow/codedigest` API.
358
+
359
+ ### Changed
360
+
361
+ - `RightRail` no longer guards on `tuiState.backgroundJobs.length > 0`
362
+ — it renders whenever any of jobs / soul / codedigest / reasoning
363
+ has content. Empty terminals (no project, no jobs) still drop to
364
+ a clean chat view.
365
+ - `pickRightRailMode` simplified from four tiers (wide/narrow/strip/
366
+ hidden) to three (rail/strip/hidden); width is computed by the new
367
+ `rightRailColumns(cols, expanded)` helper.
368
+
369
+ ### Removed
370
+
371
+ - Old `JobCard` and `solveJobLayout` per-card vertical-flex allocator
372
+ — superseded by the section-host design where each section bounds
373
+ its own content. `JobStrip` (narrow-mode fallback) is unchanged.
374
+
6
375
  ## [1.1.1] - 2026-05-08
7
376
 
8
377
  A patch bump on top of 1.1.0 covering the rebuild after the