@calliopelabs/cli 0.3.3 → 0.4.1

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/dist/bin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAUH,QAAA,MAAM,eAAe,SACsB,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAUH,QAAA,MAAM,eAAe,SACsB,CAAC;AAM5C,OAAO,EAAE,eAAe,EAAE,CAAC"}
package/dist/bin.js CHANGED
@@ -13,6 +13,8 @@ const args = process.argv.slice(2);
13
13
  // Check for god-mode flag (skip all permission prompts)
14
14
  const skipPermissions = args.includes('--god-mode') ||
15
15
  args.includes('-g');
16
+ // Check for legacy UI flag
17
+ const useLegacyUI = args.includes('--legacy');
16
18
  // Export for CLI to access
17
19
  export { skipPermissions };
18
20
  async function main() {
@@ -85,9 +87,16 @@ async function main() {
85
87
  await startCLI();
86
88
  }
87
89
  async function startCLI(options = {}) {
88
- // Dynamically import the CLI to avoid loading everything upfront
89
- const { startCLI: start } = await import('./cli.js');
90
- await start(options);
90
+ if (useLegacyUI) {
91
+ // Use legacy readline-based CLI
92
+ const { startCLI: start } = await import('./cli.js');
93
+ await start(options);
94
+ }
95
+ else {
96
+ // Use new ink-based UI
97
+ const { startInkCLI } = await import('./ui-cli.js');
98
+ await startInkCLI(options);
99
+ }
91
100
  }
92
101
  function printHelp() {
93
102
  console.log(`
@@ -106,6 +115,7 @@ ${bold('OPTIONS')}
106
115
 
107
116
  -g, --god-mode Run tools without confirmation prompts
108
117
  Enables unrestricted autonomous execution
118
+ --legacy Use legacy readline UI instead of ink
109
119
 
110
120
  ${bold('ENVIRONMENT VARIABLES')}
111
121
  ANTHROPIC_API_KEY Anthropic Claude API key
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Calliope CLI - Ink UI Integration
3
+ *
4
+ * Connects the ink-based UI to the existing agent/provider logic.
5
+ */
6
+ export declare function startInkCLI(options?: {
7
+ skipPermissions?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=ui-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-cli.d.ts","sourceRoot":"","sources":["../src/ui-cli.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AA2TH,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5F"}
package/dist/ui-cli.js ADDED
@@ -0,0 +1,224 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Calliope CLI - Ink UI Integration
4
+ *
5
+ * Connects the ink-based UI to the existing agent/provider logic.
6
+ */
7
+ import { useState, useCallback, useRef, useEffect } from 'react';
8
+ import { render, Box, Text, useInput, useApp, useStdout, Static } from 'ink';
9
+ import TextInput from 'ink-text-input';
10
+ import * as config from './config.js';
11
+ import { chat, getAvailableProviders, selectProvider } from './providers.js';
12
+ import { TOOLS, executeTool } from './tools.js';
13
+ import { getSystemPrompt, DEFAULT_MODELS } from './types.js';
14
+ import { getVersion } from './version-check.js';
15
+ import { selectModelInteractively } from './model-detection.js';
16
+ // Format helpers
17
+ const formatTokens = (n) => n >= 1000 ? `${(n / 1000).toFixed(1)}K` : String(n);
18
+ const formatCost = (c) => c < 0.01 ? '<$0.01' : `$${c.toFixed(2)}`;
19
+ const formatTime = (d) => {
20
+ const s = Math.floor((Date.now() - d.getTime()) / 1000);
21
+ if (s < 60)
22
+ return `${s}s`;
23
+ const m = Math.floor(s / 60);
24
+ return m < 60 ? `${m}m` : `${Math.floor(m / 60)}h${m % 60}m`;
25
+ };
26
+ // Separator
27
+ function Sep() {
28
+ const { stdout } = useStdout();
29
+ return _jsx(Text, { dimColor: true, children: '─'.repeat(stdout?.columns || 80) });
30
+ }
31
+ // Main App
32
+ function App({ skipPermissions = false }) {
33
+ const { exit } = useApp();
34
+ const { stdout } = useStdout();
35
+ // State
36
+ const [input, setInput] = useState('');
37
+ const [messages, setMessages] = useState([]);
38
+ const [isProcessing, setIsProcessing] = useState(false);
39
+ const [provider, setProvider] = useState(config.get('defaultProvider'));
40
+ const [model, setModel] = useState(config.get('defaultModel'));
41
+ const [persona, setPersona] = useState(config.get('persona'));
42
+ const [stats, setStats] = useState({
43
+ provider: selectProvider(config.get('defaultProvider')),
44
+ model: config.get('defaultModel') || DEFAULT_MODELS[selectProvider(config.get('defaultProvider'))],
45
+ inputTokens: 0,
46
+ outputTokens: 0,
47
+ cost: 0,
48
+ messages: 0,
49
+ startTime: new Date(),
50
+ });
51
+ // Conversation history for LLM
52
+ const llmMessages = useRef([
53
+ { role: 'system', content: getSystemPrompt(persona) }
54
+ ]);
55
+ // Add UI message
56
+ const addMessage = useCallback((type, content) => {
57
+ setMessages(prev => [...prev, { id: `${Date.now()}-${Math.random()}`, type, content }]);
58
+ }, []);
59
+ // Handle commands
60
+ const handleCommand = useCallback(async (cmd) => {
61
+ const parts = cmd.split(/\s+/);
62
+ const command = parts[0].toLowerCase();
63
+ switch (command) {
64
+ case '/help':
65
+ case '/h':
66
+ addMessage('system', `Commands: /help /provider /model /models /persona /clear /status /exit`);
67
+ return true;
68
+ case '/provider':
69
+ case '/p':
70
+ if (parts[1]) {
71
+ const p = parts[1].toLowerCase();
72
+ setProvider(p);
73
+ setStats(s => ({ ...s, provider: selectProvider(p) }));
74
+ addMessage('system', `Provider: ${selectProvider(p)}`);
75
+ }
76
+ else {
77
+ addMessage('system', `Provider: ${selectProvider(provider)} | Available: ${getAvailableProviders().join(', ')}`);
78
+ }
79
+ return true;
80
+ case '/model':
81
+ case '/m':
82
+ if (parts[1]) {
83
+ setModel(parts[1]);
84
+ setStats(s => ({ ...s, model: parts[1] }));
85
+ addMessage('system', `Model: ${parts[1]}`);
86
+ }
87
+ else {
88
+ const selected = await selectModelInteractively(selectProvider(provider));
89
+ if (selected) {
90
+ setModel(selected);
91
+ setStats(s => ({ ...s, model: selected }));
92
+ addMessage('system', `Model: ${selected}`);
93
+ }
94
+ }
95
+ return true;
96
+ case '/models':
97
+ const selected = await selectModelInteractively(selectProvider(provider));
98
+ if (selected) {
99
+ setModel(selected);
100
+ setStats(s => ({ ...s, model: selected }));
101
+ addMessage('system', `Model: ${selected}`);
102
+ }
103
+ return true;
104
+ case '/persona':
105
+ if (parts[1] && ['calliope', 'professional', 'minimal'].includes(parts[1])) {
106
+ const p = parts[1];
107
+ setPersona(p);
108
+ llmMessages.current = [{ role: 'system', content: getSystemPrompt(p) }];
109
+ addMessage('system', `Persona: ${p}`);
110
+ }
111
+ else {
112
+ addMessage('system', `Persona: ${persona} | Options: calliope, professional, minimal`);
113
+ }
114
+ return true;
115
+ case '/clear':
116
+ case '/c':
117
+ setMessages([]);
118
+ llmMessages.current = [{ role: 'system', content: getSystemPrompt(persona) }];
119
+ setStats(s => ({ ...s, messages: 0, inputTokens: 0, outputTokens: 0, cost: 0 }));
120
+ return true;
121
+ case '/status':
122
+ case '/s':
123
+ addMessage('system', `${selectProvider(provider)}:${model || DEFAULT_MODELS[selectProvider(provider)]} | ${stats.messages} msgs | ${formatTokens(stats.inputTokens + stats.outputTokens)} tokens | ${formatCost(stats.cost)}`);
124
+ return true;
125
+ case '/exit':
126
+ case '/quit':
127
+ case '/q':
128
+ exit();
129
+ return true;
130
+ default:
131
+ addMessage('error', `Unknown command: ${command}`);
132
+ return true;
133
+ }
134
+ }, [provider, model, persona, stats, addMessage, exit]);
135
+ // Run agent
136
+ const runAgent = useCallback(async (prompt) => {
137
+ llmMessages.current.push({ role: 'user', content: prompt });
138
+ setStats(s => ({ ...s, messages: s.messages + 1 }));
139
+ const maxIterations = config.get('maxIterations');
140
+ let iteration = 0;
141
+ while (iteration < maxIterations) {
142
+ iteration++;
143
+ try {
144
+ const response = await chat(provider, llmMessages.current, TOOLS, model);
145
+ // Handle tool calls
146
+ if (response.toolCalls && response.toolCalls.length > 0) {
147
+ llmMessages.current.push({
148
+ role: 'assistant',
149
+ content: response.content,
150
+ toolCalls: response.toolCalls,
151
+ });
152
+ for (const toolCall of response.toolCalls) {
153
+ addMessage('tool', `⚡ ${toolCall.name}: ${toolCall.arguments.command || toolCall.arguments.path || '...'}`);
154
+ const result = await executeTool(toolCall, process.cwd());
155
+ const preview = result.result.split('\n').slice(0, 3).join('\n');
156
+ addMessage('tool', preview + (result.result.split('\n').length > 3 ? '\n...' : ''));
157
+ llmMessages.current.push({
158
+ role: 'tool',
159
+ content: result.result,
160
+ toolCallId: toolCall.id,
161
+ });
162
+ }
163
+ continue;
164
+ }
165
+ // Final response
166
+ llmMessages.current.push({ role: 'assistant', content: response.content });
167
+ addMessage('assistant', response.content);
168
+ break;
169
+ }
170
+ catch (error) {
171
+ const msg = error instanceof Error ? error.message : String(error);
172
+ addMessage('error', `Error: ${msg}`);
173
+ break;
174
+ }
175
+ }
176
+ }, [provider, model, addMessage]);
177
+ // Handle submit
178
+ const handleSubmit = useCallback(async (value) => {
179
+ const trimmed = value.trim();
180
+ if (!trimmed || isProcessing)
181
+ return;
182
+ setInput('');
183
+ if (trimmed.startsWith('/')) {
184
+ await handleCommand(trimmed);
185
+ return;
186
+ }
187
+ addMessage('user', trimmed);
188
+ setIsProcessing(true);
189
+ try {
190
+ await runAgent(trimmed);
191
+ }
192
+ finally {
193
+ setIsProcessing(false);
194
+ }
195
+ }, [isProcessing, handleCommand, runAgent, addMessage]);
196
+ // Track terminal width for resize
197
+ const [width, setWidth] = useState(stdout?.columns || 80);
198
+ useEffect(() => {
199
+ const handleResize = () => {
200
+ setWidth(stdout?.columns || 80);
201
+ };
202
+ process.stdout.on('resize', handleResize);
203
+ return () => {
204
+ process.stdout.off('resize', handleResize);
205
+ };
206
+ }, [stdout]);
207
+ // Escape to exit
208
+ useInput((_, key) => {
209
+ if (key.escape)
210
+ exit();
211
+ });
212
+ const actualModel = model || DEFAULT_MODELS[selectProvider(provider)];
213
+ return (_jsxs(Box, { flexDirection: "column", width: width, children: [_jsx(Text, { color: "cyan", bold: true, children: "Calliope" }), _jsxs(Text, { dimColor: true, children: ["v", getVersion(), " | /help for commands"] }), _jsx(Text, { children: " " }), _jsx(Static, { items: messages, children: (msg) => (_jsx(Box, { children: _jsxs(Text, { color: msg.type === 'user' ? 'cyan' :
214
+ msg.type === 'assistant' ? 'white' :
215
+ msg.type === 'tool' ? 'green' :
216
+ msg.type === 'system' ? 'yellow' :
217
+ 'red', children: [msg.type === 'user' ? '› ' : msg.type === 'assistant' ? '│ ' : msg.type === 'tool' ? ' ' : '', msg.content] }) }, msg.id)) }), isProcessing && _jsx(Text, { color: "cyan", children: "\u280B Thinking..." }), _jsx(Sep, {}), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: "calliope" }), _jsx(Text, { dimColor: true, children: "> " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit })] }), _jsx(Sep, {}), _jsxs(Box, { width: width, justifyContent: "space-between", children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: selectProvider(provider) }), _jsx(Text, { dimColor: true, children: ":" }), _jsx(Text, { children: actualModel.length > 30 ? actualModel.slice(0, 27) + '...' : actualModel })] }), _jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: formatTokens(stats.inputTokens + stats.outputTokens) }), _jsx(Text, { dimColor: true, children: " tokens" })] }), _jsxs(Text, { children: [_jsx(Text, { color: "green", children: formatCost(stats.cost) }), _jsx(Text, { dimColor: true, children: " \u2502 " }), _jsx(Text, { dimColor: true, children: formatTime(stats.startTime) })] })] })] }));
218
+ }
219
+ // Export start function
220
+ export async function startInkCLI(options = {}) {
221
+ const { waitUntilExit } = render(_jsx(App, { skipPermissions: options.skipPermissions }));
222
+ await waitUntilExit();
223
+ }
224
+ //# sourceMappingURL=ui-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-cli.js","sourceRoot":"","sources":["../src/ui-cli.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calliopelabs/cli",
3
- "version": "0.3.3",
3
+ "version": "0.4.1",
4
4
  "description": "Calliope - Multi-model AI agent CLI with Ralph Wiggum autonomous loops",
5
5
  "keywords": [
6
6
  "ai",
@@ -46,10 +46,14 @@
46
46
  "@google/generative-ai": "^0.21.0",
47
47
  "@inquirer/prompts": "^7.2.0",
48
48
  "conf": "^13.0.1",
49
- "openai": "^4.77.0"
49
+ "ink": "^6.6.0",
50
+ "ink-text-input": "^6.0.0",
51
+ "openai": "^4.77.0",
52
+ "react": "^19.2.3"
50
53
  },
51
54
  "devDependencies": {
52
55
  "@types/node": "^22.10.2",
56
+ "@types/react": "^19.2.7",
53
57
  "typescript": "^5.7.2"
54
58
  },
55
59
  "engines": {