lazyclaw 5.0.6 → 5.0.8

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/cli.mjs +35 -1
  2. package/package.json +1 -1
  3. package/tui/wordmark.mjs +17 -11
package/cli.mjs CHANGED
@@ -2418,11 +2418,45 @@ async function cmdChat(flags = {}) {
2418
2418
  const { renderSplashToString } = await import('./tui/splash.mjs');
2419
2419
  // narrow-terminal fallback: <60 cols falls back to v4
2420
2420
  if ((process.stdout.columns || 80) < 60) throw new Error('narrow-terminal');
2421
+
2422
+ // Tool groups — read the v5 registry and collapse to one row per category.
2423
+ let toolGroups = [];
2424
+ try {
2425
+ const registry = await import('./mas/tools/registry.mjs');
2426
+ const byCat = registry.byCategory();
2427
+ toolGroups = Object.entries(byCat).map(([category, items]) => ({
2428
+ category,
2429
+ sensitive: items.some(t => t.sensitive),
2430
+ verbs: items.map(t => t.name.replace(/^[a-z]+_/, '')).slice(0, 6),
2431
+ })).sort((a, b) => a.category.localeCompare(b.category));
2432
+ } catch { /* registry unavailable → empty list */ }
2433
+
2434
+ // Skill groups — group installed skills by filename hyphen-prefix
2435
+ // (canonical C5 fallback: <group>-<name>.md → group; bare names → 'general').
2436
+ let skillGroups = [];
2437
+ try {
2438
+ const { listSkills } = await import('./skills.mjs');
2439
+ const flat = listSkills();
2440
+ const byGroup = new Map();
2441
+ for (const s of flat) {
2442
+ const i = s.name.indexOf('-');
2443
+ const group = i > 0 ? s.name.slice(0, i) : 'general';
2444
+ const sub = i > 0 ? s.name.slice(i + 1) : s.name;
2445
+ if (!byGroup.has(group)) byGroup.set(group, []);
2446
+ byGroup.get(group).push(sub);
2447
+ }
2448
+ skillGroups = [...byGroup.entries()]
2449
+ .map(([group, names]) => ({ group, names: names.slice(0, 6) }))
2450
+ .sort((a, b) => a.group.localeCompare(b.group));
2451
+ } catch { /* skills dir unavailable → empty list */ }
2452
+
2421
2453
  const splashProps = {
2422
2454
  provider: activeProvName, model: activeModel,
2423
2455
  trainer: {}, sessionId: flags.session || '',
2424
2456
  cwd: process.cwd(),
2425
- tools: [], skills: [],
2457
+ version: readVersionFromRepo(),
2458
+ tools: toolGroups,
2459
+ skills: skillGroups,
2426
2460
  };
2427
2461
  void renderSplashToString; // surfaced for tests; runtime uses <Splash/>
2428
2462
  const ink = render(/* @__PURE__ */ React.createElement(ReplApp, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazyclaw",
3
- "version": "5.0.6",
3
+ "version": "5.0.8",
4
4
  "description": "Lazy, elegant terminal CLI for chatting with Claude / OpenAI / Gemini / Ollama, orchestrating multi-step LLM workflows, and running multi-agent Slack teams with cross-task memory. Banner-on-launch, slash-command ghost autocomplete, persistent sessions, local HTTP gateway.",
5
5
  "keywords": [
6
6
  "claude",
package/tui/wordmark.mjs CHANGED
@@ -1,16 +1,22 @@
1
- // LAZYCLAW wordmark — ANSI Shadow style block-character rendering, shared
2
- // between the chat splash and the no-arg launcher so the two entry points
3
- // present identical visual identity. 67 cells × 6 rows.
1
+ // User-supplied "Larry 3D"-style LAZYCLAW wordmark — 13 rows × 120 cols.
2
+ // Replaces the v5.0.6 ANSI Shadow version on operator request.
4
3
  export const wordmark = {
5
4
  rows: [
6
- "██╗ █████╗ ███████╗██╗ ██╗ ██████╗██╗ █████╗ ██╗ ██╗",
7
- "██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██╔════╝██║ ██╔══██╗██║ ██║",
8
- "██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║ ███████║██║ █╗ ██║",
9
- "██║ ██╔══██║ ███╔╝ ╚██╔╝ ██║ ██║ ██╔══██║██║███╗██║",
10
- "███████╗██║ ██║███████╗ ██║ ╚██████╗███████╗██║ ██║╚███╔███╔╝",
11
- "╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ ",
5
+ " ____ ____ _____ _____ _____ _____ ____ ____ _____ ",
6
+ "| | ____|\\ \\ / /|___ |\\ \\ / /| ___|\\ \\ | | ____|\\ \\ |\\ \\ _____ ",
7
+ "| | / /\\ \\ / /| | | \\ \\ / / | / /\\ \\ | | / /\\ \\ | | | / /| ",
8
+ "| | | | | ||\\____\\| | | \\____\\/ / /| | | || | | | | | \\/ / | || ",
9
+ "| | ____ | |__| || | |/ |___\\ | / / / | | |____|| | ____ | |__| | / /_ \\ \\/ ",
10
+ "| | | || .--. | \\|___/ / |\\|___/ / / | | ____ | | | || .--. || // \\ \\ \\ ",
11
+ "| | | || | | | / /| | / / / | | | || | | || | | || |/ \\ | | ",
12
+ "|____|/____/||____| |____| |_____|/____/| /____/ / |\\ ___\\/ /||____|/____/||____| |____||\\ ___/\\ \\| /| ",
13
+ "| | ||| | | | | | | | |` | / | | /____/ || | ||| | | || | | \\______/ | ",
14
+ "|____|_____|/|____| |____| |_____|____|/ |_____|/ \\|___| | /|____|_____|/|____| |____| \\|___|/\\ | | | ",
15
+ " \\( )/ \\( )/ \\( )/ )/ \\( |____|/ \\( )/ \\( )/ \\( \\|____|/ ",
16
+ " ' ' ' ' ' ' ' ' )/ ' ' ' ' ' )/ ",
17
+ " ' ' ",
12
18
  ],
13
- width: 67,
14
- height: 6,
19
+ width: 120,
20
+ height: 13,
15
21
  fg: "#FFB347"
16
22
  };