paean 0.9.8 → 0.10.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.
Files changed (36) hide show
  1. package/dist/agent/cli-mode.d.ts.map +1 -1
  2. package/dist/agent/cli-mode.js +21 -13
  3. package/dist/agent/cli-mode.js.map +1 -1
  4. package/dist/agent/completer.d.ts.map +1 -1
  5. package/dist/agent/completer.js +12 -4
  6. package/dist/agent/completer.js.map +1 -1
  7. package/dist/agent/utils.d.ts.map +1 -1
  8. package/dist/agent/utils.js +0 -12
  9. package/dist/agent/utils.js.map +1 -1
  10. package/dist/mcp/coding-tools.d.ts +18 -0
  11. package/dist/mcp/coding-tools.d.ts.map +1 -0
  12. package/dist/mcp/coding-tools.js +920 -0
  13. package/dist/mcp/coding-tools.js.map +1 -0
  14. package/dist/mcp/tools.d.ts.map +1 -1
  15. package/dist/mcp/tools.js +16 -4
  16. package/dist/mcp/tools.js.map +1 -1
  17. package/dist/ui/App.d.ts.map +1 -1
  18. package/dist/ui/App.js +3 -3
  19. package/dist/ui/App.js.map +1 -1
  20. package/dist/ui/ToolCallDisplay.d.ts +1 -1
  21. package/dist/ui/ToolCallDisplay.d.ts.map +1 -1
  22. package/dist/ui/ToolCallDisplay.js +102 -27
  23. package/dist/ui/ToolCallDisplay.js.map +1 -1
  24. package/dist/ui/components/StatusBar.d.ts +14 -0
  25. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  26. package/dist/ui/components/StatusBar.js +51 -0
  27. package/dist/ui/components/StatusBar.js.map +1 -0
  28. package/dist/ui/components/index.d.ts +1 -0
  29. package/dist/ui/components/index.d.ts.map +1 -1
  30. package/dist/ui/components/index.js +1 -0
  31. package/dist/ui/components/index.js.map +1 -1
  32. package/dist/ui/hooks/useCommands.d.ts +12 -1
  33. package/dist/ui/hooks/useCommands.d.ts.map +1 -1
  34. package/dist/ui/hooks/useCommands.js +155 -37
  35. package/dist/ui/hooks/useCommands.js.map +1 -1
  36. package/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * StatusBar Component
4
+ * Slim status bar at the bottom showing session context:
5
+ * conversation ID, tool call count, files modified, working directory
6
+ */
7
+ import { useMemo } from 'react';
8
+ import { Box, Text } from 'ink';
9
+ import { SEPARATOR_CHAR } from '../theme/ink-theme.js';
10
+ import { useTerminalSize } from '../hooks/index.js';
11
+ export const StatusBar = ({ conversationId, stats, }) => {
12
+ const { columns } = useTerminalSize();
13
+ const segments = useMemo(() => {
14
+ const parts = [];
15
+ // Conversation ID
16
+ if (conversationId) {
17
+ parts.push(`⬡ ${conversationId.substring(0, 8)}`);
18
+ }
19
+ // Tool calls
20
+ if (stats.toolCallCount > 0) {
21
+ parts.push(`⚙ ${stats.toolCallCount} tools`);
22
+ }
23
+ // Files modified
24
+ if (stats.filesModified.size > 0) {
25
+ parts.push(`✎ ${stats.filesModified.size} files`);
26
+ }
27
+ // Duration
28
+ const elapsed = Date.now() - stats.startedAt;
29
+ const mins = Math.floor(elapsed / 60000);
30
+ if (mins > 0) {
31
+ parts.push(`⏱ ${mins}m`);
32
+ }
33
+ return parts;
34
+ }, [conversationId, stats.toolCallCount, stats.filesModified.size, stats.startedAt]);
35
+ // CWD (shortened)
36
+ const cwd = useMemo(() => {
37
+ const full = process.cwd();
38
+ const home = process.env['HOME'] ?? '';
39
+ return full.replace(home, '~');
40
+ }, []);
41
+ const separatorLine = useMemo(() => {
42
+ return SEPARATOR_CHAR.repeat(Math.max(0, columns - 2));
43
+ }, [columns]);
44
+ const leftContent = segments.join(' ');
45
+ const rightContent = cwd;
46
+ // Calculate gap
47
+ const gap = Math.max(1, columns - 2 - leftContent.length - rightContent.length - 2);
48
+ const padding = ' '.repeat(gap);
49
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsx(Text, { color: "gray", children: separatorLine }) }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: leftContent }), _jsx(Text, { children: padding }), _jsx(Text, { dimColor: true, children: rightContent })] })] }));
50
+ };
51
+ //# sourceMappingURL=StatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export { Header } from './Header.js';
5
5
  export { InputArea } from './InputArea.js';
6
6
  export { MarkdownText } from './MarkdownText.js';
7
7
  export { Spinner } from './Spinner.js';
8
+ export { StatusBar } from './StatusBar.js';
8
9
  export { StreamingText } from './StreamingText.js';
9
10
  export { ToolCallIndicator, ToolCallHistory } from './ToolCallIndicator.js';
10
11
  export type { ToolCallRecord } from './ToolCallIndicator.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -5,6 +5,7 @@ export { Header } from './Header.js';
5
5
  export { InputArea } from './InputArea.js';
6
6
  export { MarkdownText } from './MarkdownText.js';
7
7
  export { Spinner } from './Spinner.js';
8
+ export { StatusBar } from './StatusBar.js';
8
9
  export { StreamingText } from './StreamingText.js';
9
10
  export { ToolCallIndicator, ToolCallHistory } from './ToolCallIndicator.js';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * useCommands Hook
3
3
  * Handles slash commands for the CLI
4
- * Includes model switching, compact mode, session management, and usage info
4
+ * Includes model switching, compact mode, session management, stats, and memory
5
5
  */
6
6
  import { type MutableRefObject } from 'react';
7
7
  export interface CommandResult {
@@ -16,6 +16,14 @@ export interface BackgroundServiceStatus {
16
16
  heartbeatLastPoll?: string;
17
17
  heartbeatTriggered: number;
18
18
  }
19
+ /** Session-level statistics exposed to commands and UI */
20
+ export interface SessionStats {
21
+ startedAt: number;
22
+ messageCount: number;
23
+ toolCallCount: number;
24
+ filesModified: Set<string>;
25
+ tokensEstimate: number;
26
+ }
19
27
  export interface UseCommandsOptions {
20
28
  mcpServers?: Array<{
21
29
  name: string;
@@ -31,10 +39,13 @@ export interface UseCommandsReturn {
31
39
  debugMode: boolean;
32
40
  compactMode: boolean;
33
41
  heartbeatMode: boolean;
42
+ sessionStats: SessionStats;
34
43
  handleCommand: (input: string) => CommandResult;
35
44
  getHelp: () => string;
36
45
  getMcpStatus: () => string;
37
46
  getCompletions: (partial: string) => string[];
47
+ trackToolCall: (toolName: string, filePath?: string) => void;
48
+ trackTokens: (count: number) => void;
38
49
  }
39
50
  export declare function useCommands(options?: UseCommandsOptions): UseCommandsReturn;
40
51
  //# sourceMappingURL=useCommands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCommands.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useCommands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CACxH;AAED,MAAM,WAAW,uBAAuB;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,aAAa,CAAC;IAChD,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACjD;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAsO/E"}
1
+ {"version":3,"file":"useCommands.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useCommands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CACxH;AAED,MAAM,WAAW,uBAAuB;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AAED,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,aAAa,CAAC;IAChD,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC9C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAiW/E"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * useCommands Hook
3
3
  * Handles slash commands for the CLI
4
- * Includes model switching, compact mode, session management, and usage info
4
+ * Includes model switching, compact mode, session management, stats, and memory
5
5
  */
6
6
  import { useCallback, useState, useRef } from 'react';
7
7
  export function useCommands(options = {}) {
@@ -10,9 +10,23 @@ export function useCommands(options = {}) {
10
10
  const [debugMode, setDebugMode] = useState(false);
11
11
  const [compactMode, setCompactMode] = useState(false);
12
12
  const [heartbeatMode, setHeartbeatMode] = useState(true);
13
- // Track session stats
14
- const sessionStartRef = useRef(Date.now());
15
- const messageCountRef = useRef(0);
13
+ // Session stats tracking
14
+ const statsRef = useRef({
15
+ startedAt: Date.now(),
16
+ messageCount: 0,
17
+ toolCallCount: 0,
18
+ filesModified: new Set(),
19
+ tokensEstimate: 0,
20
+ });
21
+ const trackToolCall = useCallback((toolName, filePath) => {
22
+ statsRef.current.toolCallCount++;
23
+ if (filePath && (toolName === 'paean_edit_file' || toolName === 'paean_write_file')) {
24
+ statsRef.current.filesModified.add(filePath);
25
+ }
26
+ }, []);
27
+ const trackTokens = useCallback((count) => {
28
+ statsRef.current.tokensEstimate += count;
29
+ }, []);
16
30
  const COMMANDS = [
17
31
  '/exit', '/quit', '/q',
18
32
  '/clear', '/cls',
@@ -23,39 +37,45 @@ export function useCommands(options = {}) {
23
37
  '/compact',
24
38
  '/model',
25
39
  '/status',
40
+ '/stats',
26
41
  '/history',
27
42
  '/gateway',
28
43
  '/heartbeat',
44
+ '/memory',
45
+ '/shortcuts',
46
+ '/tools',
29
47
  ];
30
48
  const getHelp = useCallback(() => {
31
49
  return `
32
- Available Commands:
50
+ ─── Commands ───────────────────────────────────────
33
51
 
52
+ /help Show this help (/h, /?)
34
53
  /exit Exit the chat session (/quit, /q)
35
54
  /clear Clear the screen (/cls)
36
- /help Show available commands (/h, /?)
55
+ /compact Toggle compact mode (hide tool details)
56
+ /raw Toggle raw output (no markdown)
37
57
  /debug Toggle debug mode
58
+
59
+ ─── Info ───────────────────────────────────────────
60
+
61
+ /status Show session status & config
62
+ /stats Show detailed session statistics
38
63
  /mcp Show MCP connection status
39
- /raw Toggle raw output mode (no markdown)
40
- /compact Toggle compact mode (hide tool call details)
64
+ /tools List all available local tools
41
65
  /model Show current model info
42
- /status Show session statistics
43
- /history Show how to list conversation history
66
+ /memory Show saved memories for this project
67
+ /history Show conversation history commands
68
+
69
+ ─── Services ───────────────────────────────────────
70
+
44
71
  /gateway Toggle gateway relay on/off
45
- /heartbeat Toggle cloud scheduled task auto-polling (ON by default, polls every 5m)
72
+ /heartbeat Toggle cloud task auto-polling
46
73
 
47
- Keyboard Shortcuts:
48
- Up/Down Navigate input history
49
- Left/Right Move cursor within input
50
- Ctrl+A/E Jump to start/end of line
51
- Ctrl+U Clear line before cursor
52
- Ctrl+K Clear line after cursor
53
- Ctrl+W Delete word before cursor
54
- Tab Autocomplete commands
55
- Esc Clear input
56
- \\+Enter Multi-line continuation
74
+ ─── Shortcuts ──────────────────────────────────────
57
75
 
58
- Press Tab after / to autocomplete commands
76
+ /shortcuts Show all keyboard shortcuts
77
+
78
+ Tip: Type / and press Tab to autocomplete
59
79
  `;
60
80
  }, []);
61
81
  const getMcpStatus = useCallback(() => {
@@ -130,14 +150,14 @@ export function useCommands(options = {}) {
130
150
  case '/model':
131
151
  return {
132
152
  handled: true,
133
- output: '\n Current model: Paean AI (cloud)\n Model selection is handled server-side based on task complexity.\n'
153
+ output: '\n Model: Paean AI (cloud)\n Selection is handled server-side based on task complexity.\n'
134
154
  };
135
155
  case '/gateway': {
136
156
  const gwStatus = options.serviceStatusRef?.current;
137
157
  if (gwStatus?.gatewayOnline) {
138
158
  return { handled: true, output: ' Gateway: turning OFF', action: 'toggle-gateway' };
139
159
  }
140
- return { handled: true, output: ' Gateway: turning ON — remote clients will be able to connect', action: 'toggle-gateway' };
160
+ return { handled: true, output: ' Gateway: turning ON — remote clients can connect', action: 'toggle-gateway' };
141
161
  }
142
162
  case '/heartbeat': {
143
163
  let toggled = false;
@@ -145,27 +165,32 @@ export function useCommands(options = {}) {
145
165
  return {
146
166
  handled: true,
147
167
  output: toggled
148
- ? ' Cloud task polling: ON — checking for scheduled tasks every 5 minutes'
149
- : ' Cloud task polling: OFF — cloud scheduled tasks will not be auto-executed',
168
+ ? ' Cloud task polling: ON (every 5m)'
169
+ : ' Cloud task polling: OFF',
150
170
  action: 'toggle-heartbeat'
151
171
  };
152
172
  }
153
173
  case '/status': {
154
- const elapsed = Date.now() - sessionStartRef.current;
174
+ const s = statsRef.current;
175
+ const elapsed = Date.now() - s.startedAt;
155
176
  const mins = Math.floor(elapsed / 60000);
156
177
  const secs = Math.floor((elapsed % 60000) / 1000);
157
178
  const duration = mins > 0 ? `${mins}m ${secs}s` : `${secs}s`;
158
179
  const convId = options.conversationId;
159
180
  const svc = options.serviceStatusRef?.current;
160
- let status = '\n Session Status:\n\n';
181
+ let status = '\n ─── Session Status ─────────────────────\n\n';
161
182
  status += ` Duration: ${duration}\n`;
162
- status += ` Messages: ${messageCountRef.current}\n`;
163
- status += ` Raw mode: ${rawMode ? 'ON' : 'OFF'}\n`;
164
- status += ` Compact mode: ${compactMode ? 'ON' : 'OFF'}\n`;
165
- status += ` Debug mode: ${debugMode ? 'ON' : 'OFF'}\n`;
183
+ status += ` Messages: ${s.messageCount}\n`;
184
+ status += ` Tool calls: ${s.toolCallCount}\n`;
185
+ status += ` Files modified: ${s.filesModified.size}\n`;
166
186
  if (convId) {
167
187
  status += ` Conversation: ${convId.substring(0, 8)}...\n`;
168
188
  }
189
+ status += ` CWD: ${process.cwd()}\n`;
190
+ status += '\n ─── Config ─────────────────────────────\n\n';
191
+ status += ` Raw mode: ${rawMode ? 'ON' : 'OFF'}\n`;
192
+ status += ` Compact mode: ${compactMode ? 'ON' : 'OFF'}\n`;
193
+ status += ` Debug mode: ${debugMode ? 'ON' : 'OFF'}\n`;
169
194
  status += ` MCP servers: ${mcpServers.length}\n`;
170
195
  status += ` Gateway: ${svc?.gatewayOnline ? 'online' : 'offline'}`;
171
196
  if ((svc?.gatewayCompleted ?? 0) > 0) {
@@ -176,17 +201,108 @@ export function useCommands(options = {}) {
176
201
  if (svc?.heartbeatActive && svc?.heartbeatLastPoll) {
177
202
  status += ` (last: ${svc.heartbeatLastPoll})`;
178
203
  }
179
- if ((svc?.heartbeatTriggered ?? 0) > 0) {
180
- status += ` (${svc.heartbeatTriggered} triggered)`;
181
- }
182
204
  status += '\n';
183
205
  return { handled: true, output: status };
184
206
  }
207
+ case '/stats': {
208
+ const s = statsRef.current;
209
+ const elapsed = Date.now() - s.startedAt;
210
+ const mins = Math.floor(elapsed / 60000);
211
+ const secs = Math.floor((elapsed % 60000) / 1000);
212
+ const duration = mins > 0 ? `${mins}m ${secs}s` : `${secs}s`;
213
+ let out = '\n ─── Session Statistics ─────────────────\n\n';
214
+ out += ` Session duration: ${duration}\n`;
215
+ out += ` Messages sent: ${s.messageCount}\n`;
216
+ out += ` Tool calls made: ${s.toolCallCount}\n`;
217
+ out += ` Files modified: ${s.filesModified.size}\n`;
218
+ if (s.filesModified.size > 0) {
219
+ out += '\n Modified files:\n';
220
+ for (const f of s.filesModified) {
221
+ out += ` ${f}\n`;
222
+ }
223
+ }
224
+ if (s.tokensEstimate > 0) {
225
+ out += `\n Est. tokens: ~${s.tokensEstimate.toLocaleString()}\n`;
226
+ }
227
+ out += '\n';
228
+ return { handled: true, output: out };
229
+ }
185
230
  case '/history':
186
231
  return {
187
232
  handled: true,
188
233
  output: '\n Conversation History:\n\n List: paean ls\n Resume: paean resume <id>\n Show: paean show <id>\n Star: paean star <id>\n'
189
234
  };
235
+ case '/memory': {
236
+ let out = '\n Loading memories...\n';
237
+ // Synchronous check for memory file
238
+ const memoryPath = `${process.cwd()}/.paean/PAEAN.md`;
239
+ try {
240
+ const fs = require('fs');
241
+ if (fs.existsSync(memoryPath)) {
242
+ const content = fs.readFileSync(memoryPath, 'utf-8');
243
+ const count = (content.match(/^- /gm) || []).length;
244
+ out = `\n ─── Paean Memories (${count}) ─────────────\n Path: ${memoryPath}\n\n`;
245
+ const lines = content.split('\n');
246
+ for (const line of lines) {
247
+ if (line.startsWith('- ')) {
248
+ out += ` ${line}\n`;
249
+ }
250
+ }
251
+ if (count === 0)
252
+ out += ' (no memories saved yet)\n';
253
+ out += '\n Tip: Ask the agent to "remember that..." to save memories\n';
254
+ }
255
+ else {
256
+ out = '\n No memories saved yet.\n Ask the agent to "remember that..." to save facts for future sessions.\n';
257
+ }
258
+ }
259
+ catch {
260
+ out = '\n No memories saved yet.\n Ask the agent to "remember that..." to save facts for future sessions.\n';
261
+ }
262
+ return { handled: true, output: out };
263
+ }
264
+ case '/shortcuts':
265
+ return {
266
+ handled: true,
267
+ output: `
268
+ ─── Keyboard Shortcuts ────────────────────────
269
+
270
+ Navigation
271
+ Up/Down Navigate input history
272
+ Left/Right Move cursor in input
273
+ Ctrl+A Jump to start of line
274
+ Ctrl+E Jump to end of line
275
+
276
+ Editing
277
+ Ctrl+U Clear line before cursor
278
+ Ctrl+K Clear line after cursor
279
+ Ctrl+W Delete word before cursor
280
+ Esc Clear entire input
281
+ \\+Enter Multi-line continuation
282
+
283
+ Commands
284
+ Tab Autocomplete slash commands
285
+ Ctrl+C Abort current request / exit
286
+ Ctrl+C Ctrl+C Force exit (during processing)
287
+
288
+ `
289
+ };
290
+ case '/tools': {
291
+ const totalTools = mcpServers.reduce((sum, s) => sum + (s.tools?.length || 0), 0);
292
+ let out = `\n ─── Available Tools (${totalTools}) ─────────────\n\n`;
293
+ for (const server of mcpServers) {
294
+ const tools = server.tools || [];
295
+ out += ` ${server.name} (${tools.length} tools)\n`;
296
+ for (const tool of tools.slice(0, 30)) {
297
+ out += ` ${tool.name}\n`;
298
+ }
299
+ if (tools.length > 30) {
300
+ out += ` ... and ${tools.length - 30} more\n`;
301
+ }
302
+ out += '\n';
303
+ }
304
+ return { handled: true, output: out };
305
+ }
190
306
  default:
191
307
  if (baseCmd.startsWith('/')) {
192
308
  return {
@@ -194,8 +310,7 @@ export function useCommands(options = {}) {
194
310
  output: `\n Unknown command: ${baseCmd}\n Type /help for available commands\n`
195
311
  };
196
312
  }
197
- // Track message count for /status
198
- messageCountRef.current++;
313
+ statsRef.current.messageCount++;
199
314
  return { handled: false };
200
315
  }
201
316
  }, [getHelp, getMcpStatus, mcpServers.length, options.conversationId, rawMode, compactMode, debugMode]);
@@ -204,10 +319,13 @@ export function useCommands(options = {}) {
204
319
  debugMode,
205
320
  compactMode,
206
321
  heartbeatMode,
322
+ sessionStats: statsRef.current,
207
323
  handleCommand,
208
324
  getHelp,
209
325
  getMcpStatus,
210
326
  getCompletions,
327
+ trackToolCall,
328
+ trackTokens,
211
329
  };
212
330
  }
213
331
  //# sourceMappingURL=useCommands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCommands.js","sourceRoot":"","sources":["../../../src/ui/hooks/useCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useCommands.js","sourceRoot":"","sources":["../../../src/ui/hooks/useCommands.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paean",
3
- "version": "0.9.8",
3
+ "version": "0.10.0",
4
4
  "description": "Paean AI CLI - Claude Code-like AI agent with local MCP integration, task management, and autonomous worker mode",
5
5
  "author": "Paean AI <dev@paean.ai>",
6
6
  "license": "MIT",