lazyclaw 5.0.6 → 5.0.7
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/cli.mjs +35 -1
- package/package.json +1 -1
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
|
-
|
|
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.
|
|
3
|
+
"version": "5.0.7",
|
|
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",
|