@orbitpanel/cli 0.6.0 → 0.8.0

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.
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Contextual UX hints for the Orbit CLI shell.
3
+ * Shows the right hint at the right time — not spam, not silence.
4
+ */
5
+ export interface ShellState {
6
+ hasToken: boolean;
7
+ hasSite: boolean;
8
+ hasSession: boolean;
9
+ }
10
+ /**
11
+ * Get a contextual welcome hint based on current shell state.
12
+ * Returns different messages depending on what's configured.
13
+ */
14
+ export declare function getWelcomeHint(state: ShellState): string;
15
+ /**
16
+ * Get a helpful hint when user types an unknown slash command.
17
+ * Uses prefix matching and basic edit-distance to suggest close matches.
18
+ */
19
+ export declare function getUnknownCommandHint(input: string): string;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Contextual UX hints for the Orbit CLI shell.
3
+ * Shows the right hint at the right time — not spam, not silence.
4
+ */
5
+ import { SLASH_COMMANDS } from './shell-render.js';
6
+ /**
7
+ * Get a contextual welcome hint based on current shell state.
8
+ * Returns different messages depending on what's configured.
9
+ */
10
+ export function getWelcomeHint(state) {
11
+ if (!state.hasToken) {
12
+ return 'Non sei autenticato. Esegui /auth per accedere con il browser, oppure /login <token>.';
13
+ }
14
+ if (!state.hasSite) {
15
+ return 'Nessun sito collegato. Esegui /sites per vedere i siti disponibili.';
16
+ }
17
+ if (state.hasSession) {
18
+ return 'Sessione attiva — usa /note per annotare, o scrivi in linguaggio naturale per parlare con Orbit AI.';
19
+ }
20
+ return 'Digita /help per i comandi, /session start per iniziare a lavorare, o premi Tab per completare.';
21
+ }
22
+ /**
23
+ * Get a helpful hint when user types an unknown slash command.
24
+ * Uses prefix matching and basic edit-distance to suggest close matches.
25
+ */
26
+ export function getUnknownCommandHint(input) {
27
+ const lower = input.toLowerCase();
28
+ if (lower === '/') {
29
+ return 'Digita /help per la lista comandi.';
30
+ }
31
+ // Try prefix match first (fastest, most common case)
32
+ const prefixMatches = SLASH_COMMANDS.filter(c => c.cmd.toLowerCase().startsWith(lower) ||
33
+ (c.alias && c.alias.toLowerCase().startsWith(lower)));
34
+ if (prefixMatches.length > 0) {
35
+ if (prefixMatches.length === 1) {
36
+ return `Forse intendevi ${prefixMatches[0].cmd}?`;
37
+ }
38
+ const cmds = prefixMatches.slice(0, 3).map(c => c.cmd).join(', ');
39
+ return `Forse intendevi: ${cmds}?`;
40
+ }
41
+ // Try fuzzy match: check if input is a substring of any command
42
+ const fuzzyMatches = SLASH_COMMANDS.filter(c => {
43
+ const cmd = c.cmd.toLowerCase();
44
+ const alias = (c.alias ?? '').toLowerCase();
45
+ return cmd.includes(lower.slice(1)) || alias.includes(lower.slice(1));
46
+ });
47
+ if (fuzzyMatches.length > 0) {
48
+ if (fuzzyMatches.length === 1) {
49
+ return `Forse intendevi ${fuzzyMatches[0].cmd}?`;
50
+ }
51
+ const cmds = fuzzyMatches.slice(0, 3).map(c => c.cmd).join(', ');
52
+ return `Forse intendevi: ${cmds}?`;
53
+ }
54
+ // Try Levenshtein-like: find closest command by character overlap
55
+ const scored = SLASH_COMMANDS
56
+ .map(c => ({
57
+ cmd: c,
58
+ score: charOverlap(lower, c.cmd.toLowerCase()) +
59
+ (c.alias ? charOverlap(lower, c.alias.toLowerCase()) * 0.5 : 0),
60
+ }))
61
+ .filter(s => s.score > 0.45)
62
+ .sort((a, b) => b.score - a.score);
63
+ if (scored.length > 0) {
64
+ return `Forse intendevi ${scored[0].cmd.cmd}?`;
65
+ }
66
+ return 'Comando sconosciuto. Digita /help per la lista comandi.';
67
+ }
68
+ /**
69
+ * Simple character overlap score between two strings.
70
+ * Returns 0-1 ratio of matching characters.
71
+ */
72
+ function charOverlap(a, b) {
73
+ if (a.length === 0 || b.length === 0)
74
+ return 0;
75
+ const aChars = new Set(a.split(''));
76
+ const bChars = new Set(b.split(''));
77
+ let matches = 0;
78
+ for (const c of aChars) {
79
+ if (bChars.has(c))
80
+ matches++;
81
+ }
82
+ return matches / Math.max(aChars.size, bChars.size);
83
+ }
84
+ //# sourceMappingURL=shell-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-hints.js","sourceRoot":"","sources":["../../src/lib/shell-hints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shell prompt rendering for @orbitpanel/cli.
3
+ *
4
+ * Provides:
5
+ * - renderContextLine(): compact status bar printed before each prompt
6
+ * - buildPromptString(): the input prompt string
7
+ *
8
+ * Design: the context line is printed BEFORE rl.prompt() on every cycle.
9
+ * This creates a stable visual pattern:
10
+ *
11
+ * [command output]
12
+ *
13
+ * acme.com · local-dev · feature/header · ● attiva 12min
14
+ * ❯ orbit · _
15
+ *
16
+ * In non-TTY mode, the context line is skipped entirely.
17
+ */
18
+ export interface ContextLineInput {
19
+ isTTY: boolean;
20
+ hasToken: boolean;
21
+ siteUrl?: string;
22
+ environment?: string;
23
+ gitBranch?: string;
24
+ sessionActive: boolean;
25
+ sessionMinutes?: number;
26
+ }
27
+ /**
28
+ * Render a compact context line for display above the prompt.
29
+ * Returns null in non-TTY mode (no context to show).
30
+ */
31
+ export declare function renderContextLine(input: ContextLineInput): string | null;
32
+ /**
33
+ * Build the prompt string for readline.
34
+ * Clean and minimal — like Claude Code's ❯ prompt.
35
+ * "orbit" is the identity, "❯" is the action point.
36
+ */
37
+ export declare function buildPromptString(): string;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shell prompt rendering for @orbitpanel/cli.
3
+ *
4
+ * Provides:
5
+ * - renderContextLine(): compact status bar printed before each prompt
6
+ * - buildPromptString(): the input prompt string
7
+ *
8
+ * Design: the context line is printed BEFORE rl.prompt() on every cycle.
9
+ * This creates a stable visual pattern:
10
+ *
11
+ * [command output]
12
+ *
13
+ * acme.com · local-dev · feature/header · ● attiva 12min
14
+ * ❯ orbit · _
15
+ *
16
+ * In non-TTY mode, the context line is skipped entirely.
17
+ */
18
+ import chalk from 'chalk';
19
+ const B = chalk.rgb(37, 99, 235);
20
+ const BB = chalk.bold.rgb(37, 99, 235);
21
+ const BL = chalk.hex('#60A5FA');
22
+ const GREEN = chalk.hex('#22C55E');
23
+ const YELLOW = chalk.hex('#EAB308');
24
+ const DIM = chalk.dim;
25
+ const SEP = DIM(' · ');
26
+ /**
27
+ * Render a compact context line for display above the prompt.
28
+ * Returns null in non-TTY mode (no context to show).
29
+ */
30
+ export function renderContextLine(input) {
31
+ if (!input.isTTY)
32
+ return null;
33
+ const parts = [];
34
+ // Authentication state
35
+ if (!input.hasToken) {
36
+ parts.push(`${chalk.red('○')} ${DIM('non connesso')}`);
37
+ return ` ${parts.join(SEP)}`;
38
+ }
39
+ // Site
40
+ if (input.siteUrl) {
41
+ const displayUrl = input.siteUrl.length > 40
42
+ ? input.siteUrl.slice(0, 37) + '...'
43
+ : input.siteUrl;
44
+ parts.push(BL(displayUrl));
45
+ }
46
+ else {
47
+ parts.push(DIM('nessun sito'));
48
+ }
49
+ // Environment
50
+ if (input.environment) {
51
+ if (input.environment === 'production') {
52
+ parts.push(YELLOW('production'));
53
+ }
54
+ else {
55
+ parts.push(DIM(input.environment));
56
+ }
57
+ }
58
+ // Git branch
59
+ if (input.gitBranch) {
60
+ parts.push(BL(input.gitBranch));
61
+ }
62
+ // Session
63
+ if (input.sessionActive) {
64
+ const mins = input.sessionMinutes ?? 0;
65
+ parts.push(`${GREEN('●')} ${DIM('attiva')} ${DIM(`${mins}min`)}`);
66
+ }
67
+ return ` ${parts.join(SEP)}`;
68
+ }
69
+ /**
70
+ * Build the prompt string for readline.
71
+ * Clean and minimal — like Claude Code's ❯ prompt.
72
+ * "orbit" is the identity, "❯" is the action point.
73
+ */
74
+ export function buildPromptString() {
75
+ return `${B('orbit')} ${BB('❯')} `;
76
+ }
77
+ //# sourceMappingURL=shell-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-prompt.js","sourceRoot":"","sources":["../../src/lib/shell-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACjC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACvC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAYtB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,uBAAuB;IACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;IACP,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;YAC1C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,cAAc;IACd,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,aAAa;IACb,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,UAAU;IACV,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,CAAC"}
@@ -33,6 +33,7 @@ export const SLASH_COMMANDS = [
33
33
  { cmd: '/report', alias: '/r', desc: 'invia report a Orbit' },
34
34
  { cmd: '/list', alias: '/ls', desc: 'lista interventi' },
35
35
  { cmd: '/get', alias: '/g', desc: 'dettaglio intervento (+ id)' },
36
+ { cmd: '/history', alias: '/hist', desc: 'sessioni passate' },
36
37
  { cmd: '/sites', alias: '', desc: 'lista siti e seleziona' },
37
38
  { cmd: '/auth', alias: '', desc: 'accedi con browser' },
38
39
  { cmd: '/login', alias: '', desc: 'configura token (+ token)' },
@@ -1 +1 @@
1
- {"version":3,"file":"shell-render.js","sourceRoot":"","sources":["../../src/lib/shell-render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-render.js","sourceRoot":"","sources":["../../src/lib/shell-render.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,11 @@
2
2
  * Interactive REPL shell for @orbitpanel/cli.
3
3
  * Thin orchestration layer — delegates to shell-commands.ts and shell-render.ts.
4
4
  * Pure readline + chalk — no Ink/React dependency.
5
+ *
6
+ * Features:
7
+ * - Fixed bottom status bar (ANSI scroll regions, like Claude Code)
8
+ * - Tab completion with slash command suggestions
9
+ * - Contextual hints for unknown commands
10
+ * - AI chat with streaming + state machine
5
11
  */
6
12
  export declare function startShell(version: string): Promise<void>;
package/dist/lib/shell.js CHANGED
@@ -2,6 +2,12 @@
2
2
  * Interactive REPL shell for @orbitpanel/cli.
3
3
  * Thin orchestration layer — delegates to shell-commands.ts and shell-render.ts.
4
4
  * Pure readline + chalk — no Ink/React dependency.
5
+ *
6
+ * Features:
7
+ * - Fixed bottom status bar (ANSI scroll regions, like Claude Code)
8
+ * - Tab completion with slash command suggestions
9
+ * - Contextual hints for unknown commands
10
+ * - AI chat with streaming + state machine
5
11
  */
6
12
  import chalk from 'chalk';
7
13
  import ora from 'ora';
@@ -15,9 +21,12 @@ import { OrbitStore } from '../state/store.js';
15
21
  import { sendChatStream } from './ai-stream.js';
16
22
  import { StreamStateMachine } from './stream-state.js';
17
23
  import { outputBlock } from './ui.js';
18
- import { B, BL, BB, YELLOW, DIM, WHITE, orbitGrad, sparkle, logoLines, SLASH_COMMANDS, sep, } from './shell-render.js';
19
- import { statusLine } from './ui.js';
20
- import { cmdStatus, cmdDoctor, cmdSessionStart, cmdSessionEnd, cmdSessionInfo, cmdNoteAdd, cmdReport, cmdList, cmdGet, cmdSites, cmdAuth, cmdLogin, cmdLink, } from './shell-commands.js';
24
+ import { BL, BB, DIM, WHITE, orbitGrad, sparkle, logoLines, SLASH_COMMANDS, sep, } from './shell-render.js';
25
+ import { cmdStatus, cmdDoctor, cmdSessionStart, cmdSessionEnd, cmdSessionInfo, cmdNoteAdd, cmdReport, cmdList, cmdGet, cmdHistory, cmdSites, cmdAuth, cmdLogin, cmdLink, } from './shell-commands.js';
26
+ import { completer as enhancedCompleter, formatSuggestionList } from './shell-completer.js';
27
+ import { getWelcomeHint, getUnknownCommandHint } from './shell-hints.js';
28
+ import { buildPromptString } from './shell-prompt.js';
29
+ import { StatusBar } from './status-bar.js';
21
30
  // Default IO adapter — bridges store to real filesystem modules
22
31
  const defaultStoreIO = {
23
32
  loadConfig,
@@ -28,16 +37,30 @@ const defaultStoreIO = {
28
37
  function sleep(ms) {
29
38
  return new Promise(r => setTimeout(r, ms));
30
39
  }
31
- // Tab-completion handler
40
+ // Tab-completion handler (delegates to shell-completer module)
32
41
  function completer(line) {
33
- if (!line.startsWith('/'))
34
- return [[], line];
35
- const hits = SLASH_COMMANDS
36
- .filter(c => c.cmd.startsWith(line.toLowerCase()) || (c.alias && c.alias.startsWith(line.toLowerCase())))
37
- .map(c => c.cmd);
38
- return [hits.length ? hits : SLASH_COMMANDS.map(c => c.cmd), line];
42
+ return enhancedCompleter(line, SLASH_COMMANDS);
43
+ }
44
+ /**
45
+ * Build BarState from the current OrbitStore state.
46
+ * Single source of truth — reads from store, no duplicate state.
47
+ */
48
+ function buildBarState(store) {
49
+ const { tokenEntry, siteLink, session, gitBranch } = store.getState();
50
+ const sessionMinutes = session
51
+ ? Math.round((Date.now() - new Date(session.started_at).getTime()) / 60_000)
52
+ : undefined;
53
+ return {
54
+ connected: !!tokenEntry,
55
+ siteUrl: siteLink?.final_url ?? siteLink?.name ?? (siteLink ? siteLink.orbit_site_id.slice(0, 16) : undefined),
56
+ environment: siteLink?.environment,
57
+ gitBranch: (session?.git_branch ?? gitBranch) ?? undefined,
58
+ sessionActive: session?.status === 'active',
59
+ sessionMinutes,
60
+ };
39
61
  }
40
62
  export async function startShell(version) {
63
+ const isTTY = process.stdin.isTTY === true;
41
64
  // Header with line-by-line animation
42
65
  console.clear();
43
66
  console.log('');
@@ -47,53 +70,46 @@ export async function startShell(version) {
47
70
  }
48
71
  console.log('');
49
72
  console.log(` ${chalk.bgRgb(37, 99, 235).white.bold(' CLI ')} ${chalk.bgHex('#1E293B').hex('#60A5FA')(` v${version} `)} ${DIM('·')} ${BL('Gestione Orbit Panel AI-powered')}`);
73
+ console.log('');
74
+ sep();
50
75
  // Initialize centralized state
51
76
  const cwd = process.cwd();
52
77
  const store = new OrbitStore(defaultStoreIO);
53
78
  await store.init(cwd);
54
- const { config, tokenEntry, siteLink, session, gitBranch, runtime } = store.getState();
55
- // Status bar (using centralized statusLine renderer)
56
- const sessionMinutes = session
57
- ? Math.round((Date.now() - new Date(session.started_at).getTime()) / 60_000)
58
- : undefined;
59
- console.log('');
60
- console.log(statusLine({
61
- connected: !!tokenEntry,
62
- siteUrl: siteLink?.final_url ?? (siteLink ? siteLink.orbit_site_id.slice(0, 16) : undefined),
63
- sessionMinutes,
64
- gitBranch: (session?.git_branch ?? gitBranch) ?? undefined,
65
- runtimeMode: runtime,
66
- }));
67
- console.log('');
68
- sep();
69
- // Auto-prompt auth
70
- if (!tokenEntry) {
71
- console.log('');
72
- console.log(` ${YELLOW('Non sei autenticato.')}`);
73
- console.log('');
74
- console.log(` ${BL('/auth')} accedi con il browser (consigliato)`);
75
- console.log(` ${DIM('/login <t>')} inserisci un token MCP manualmente`);
76
- console.log('');
77
- }
78
- else {
79
- console.log(` ${DIM('Digita /help per la lista comandi, o scrivi in linguaggio naturale.')}`);
80
- }
79
+ const { tokenEntry, siteLink, session } = store.getState();
80
+ // Contextual welcome hint based on shell state
81
+ const welcomeHint = getWelcomeHint({
82
+ hasToken: !!tokenEntry,
83
+ hasSite: !!siteLink,
84
+ hasSession: !!session,
85
+ });
86
+ console.log(` ${DIM(welcomeHint)}`);
81
87
  console.log('');
88
+ // --- Fixed bottom status bar (like Claude Code) ---
89
+ const bar = new StatusBar();
90
+ bar.init(buildBarState(store));
91
+ /** Update the status bar from store state. */
92
+ const updateBar = () => {
93
+ bar.update(buildBarState(store));
94
+ };
82
95
  // REPL
96
+ const promptStr = buildPromptString();
83
97
  const rl = createInterface({
84
98
  input: process.stdin,
85
99
  output: process.stdout,
86
- prompt: ` ${B('orbit')} ${DIM('›')} `,
100
+ prompt: promptStr,
87
101
  completer,
88
- terminal: true,
102
+ terminal: isTTY,
89
103
  });
90
- rl.on('SIGINT', () => {
91
- console.log(`\n\n ${DIM('Alla prossima!')}\n`);
104
+ /** Clean exit: destroy bar, close readline. */
105
+ const exitShell = () => {
106
+ bar.destroy();
107
+ console.log(`\n ${DIM('Alla prossima!')}\n`);
92
108
  rl.close();
93
- });
109
+ };
110
+ rl.on('SIGINT', exitShell);
94
111
  process.on('SIGTSTP', () => {
95
- console.log(`\n\n ${DIM('Alla prossima!')}\n`);
96
- rl.close();
112
+ exitShell();
97
113
  process.exit(0);
98
114
  });
99
115
  // Prompt function for risk confirmations (uses the active readline)
@@ -117,12 +133,12 @@ export async function startShell(version) {
117
133
  }
118
134
  // --- Command routing (thin dispatcher) ---
119
135
  if (cmd === '/exit' || cmd === '/quit' || cmd === '/q') {
120
- console.log(`\n ${DIM('Alla prossima!')}\n`);
121
- rl.close();
136
+ exitShell();
122
137
  return;
123
138
  }
124
139
  if (cmd === '/clear' || cmd === '/cls') {
125
140
  console.clear();
141
+ bar.reinit();
126
142
  rl.prompt();
127
143
  return;
128
144
  }
@@ -144,12 +160,14 @@ export async function startShell(version) {
144
160
  if (cmd === '/session start' || cmd === '/ss') {
145
161
  await cmdSessionStart();
146
162
  await store.refresh(cwd);
163
+ updateBar();
147
164
  rl.prompt();
148
165
  return;
149
166
  }
150
167
  if (cmd === '/session end' || cmd === '/se') {
151
168
  await cmdSessionEnd();
152
169
  await store.refresh(cwd);
170
+ updateBar();
153
171
  rl.prompt();
154
172
  return;
155
173
  }
@@ -166,6 +184,7 @@ export async function startShell(version) {
166
184
  if (cmd === '/report' || cmd === '/r') {
167
185
  await cmdReport(promptConfirm);
168
186
  await store.refresh(cwd);
187
+ updateBar();
169
188
  rl.prompt();
170
189
  return;
171
190
  }
@@ -174,6 +193,11 @@ export async function startShell(version) {
174
193
  rl.prompt();
175
194
  return;
176
195
  }
196
+ if (cmd === '/history' || cmd === '/hist') {
197
+ await cmdHistory();
198
+ rl.prompt();
199
+ return;
200
+ }
177
201
  if (cmd.startsWith('/get ') || cmd.startsWith('/g ')) {
178
202
  await cmdGet(raw.split(' ')[1]);
179
203
  rl.prompt();
@@ -182,29 +206,48 @@ export async function startShell(version) {
182
206
  if (cmd === '/sites' || cmd.startsWith('/sites ')) {
183
207
  await cmdSites(cmd.split(' ')[1]);
184
208
  await store.refresh(cwd);
209
+ updateBar();
185
210
  rl.prompt();
186
211
  return;
187
212
  }
188
213
  if (cmd === '/auth') {
189
214
  await cmdAuth();
190
215
  await store.refresh(cwd);
216
+ updateBar();
191
217
  rl.prompt();
192
218
  return;
193
219
  }
194
220
  if (cmd.startsWith('/login ')) {
195
221
  await cmdLogin(raw.split(' ')[1]);
196
222
  await store.refresh(cwd);
223
+ updateBar();
197
224
  rl.prompt();
198
225
  return;
199
226
  }
200
227
  if (cmd.startsWith('/link ')) {
201
228
  await cmdLink(raw.split(' ')[1]);
202
229
  await store.refresh(cwd);
230
+ updateBar();
231
+ rl.prompt();
232
+ return;
233
+ }
234
+ // "/" alone → show command list (discoverability)
235
+ if (cmd === '/') {
236
+ console.log('');
237
+ console.log(` ${sparkle} ${BB('Comandi disponibili')}`);
238
+ console.log('');
239
+ console.log(formatSuggestionList(SLASH_COMMANDS));
240
+ console.log('');
241
+ console.log(` ${DIM('Premi Tab per completare, o scrivi in linguaggio naturale.')}`);
242
+ console.log('');
203
243
  rl.prompt();
204
244
  return;
205
245
  }
246
+ // Unknown slash command → suggest close matches
206
247
  if (cmd.startsWith('/')) {
207
- console.log(`\n ${DIM('Comando sconosciuto:')} ${WHITE(cmd)} ${DIM('— digita /help')}\n`);
248
+ const hint = getUnknownCommandHint(cmd);
249
+ console.log(`\n ${DIM('Comando sconosciuto:')} ${WHITE(cmd)}`);
250
+ console.log(` ${DIM(hint)}\n`);
208
251
  rl.prompt();
209
252
  return;
210
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Fixed bottom status bar for @orbitpanel/cli.
3
+ *
4
+ * Uses ANSI scroll regions to pin a status line at the bottom of the terminal,
5
+ * exactly like Claude Code / tmux / vim. No dependencies — pure escape sequences.
6
+ *
7
+ * How it works:
8
+ * 1. Set scroll region to rows 1..(totalRows-1)
9
+ * 2. All normal output (readline, console.log, ora) scrolls within that region
10
+ * 3. The last row is outside the scroll region → stays fixed
11
+ * 4. We write status content to that last row
12
+ *
13
+ * Non-TTY: completely disabled, no-op.
14
+ */
15
+ export interface BarState {
16
+ siteUrl?: string;
17
+ environment?: string;
18
+ gitBranch?: string;
19
+ sessionActive: boolean;
20
+ sessionMinutes?: number;
21
+ connected: boolean;
22
+ }
23
+ /**
24
+ * Render the status bar content string, padded to exactly `width` characters.
25
+ * Pure function — no side effects, fully testable.
26
+ */
27
+ export declare function renderBarContent(state: BarState, width: number): string;
28
+ /**
29
+ * Fixed bottom status bar manager.
30
+ * Call init() to set up the scroll region, update() to refresh content,
31
+ * destroy() to clean up.
32
+ */
33
+ export declare class StatusBar {
34
+ private active;
35
+ private rows;
36
+ private cols;
37
+ private lastState;
38
+ private resizeHandler;
39
+ /** Whether the bar is currently active and rendering. */
40
+ get isActive(): boolean;
41
+ /**
42
+ * Initialize the status bar. Sets scroll region, draws initial bar.
43
+ * No-op if not TTY.
44
+ */
45
+ init(state: BarState): void;
46
+ /**
47
+ * Update the status bar content.
48
+ */
49
+ update(state: BarState): void;
50
+ /**
51
+ * Restore scroll region and clean up after /clear or similar.
52
+ * Re-inits the bar with current state.
53
+ */
54
+ reinit(): void;
55
+ /**
56
+ * Destroy the status bar. Reset scroll region, remove event listeners.
57
+ */
58
+ destroy(): void;
59
+ /** Write bar content to the last row. */
60
+ private drawBar;
61
+ }