xibecode 1.0.8 → 1.2.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.
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +33 -35
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/hooks.d.ts +13 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +134 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/memory.d.ts +13 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +88 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/resume.d.ts +1 -0
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +5 -3
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/settings.d.ts +14 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +89 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/ui/claude-style-chat.d.ts.map +1 -1
- package/dist/ui/claude-style-chat.js +130 -8
- package/dist/ui/claude-style-chat.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -8,6 +8,9 @@ import { configCommand } from './commands/config.js';
|
|
|
8
8
|
import { mcpCommand } from './commands/mcp.js';
|
|
9
9
|
import { diagnosticsCommand } from './commands/diagnostics.js';
|
|
10
10
|
import { skillsCommand } from './commands/skills.js';
|
|
11
|
+
import { settingsCommand } from './commands/settings.js';
|
|
12
|
+
import { hooksCommand } from './commands/hooks.js';
|
|
13
|
+
import { memoryCommand } from './commands/memory.js';
|
|
11
14
|
import dotenv from 'dotenv';
|
|
12
15
|
import { createRequire } from 'module';
|
|
13
16
|
const require = createRequire(import.meta.url);
|
|
@@ -80,8 +83,9 @@ program
|
|
|
80
83
|
.description('Resume a previous chat session')
|
|
81
84
|
.argument('[session-id]', 'Session ID to resume (optional - shows picker if not provided)')
|
|
82
85
|
.option('--profile <name>', 'Config profile to use (default: configured default profile)')
|
|
86
|
+
.option('--all', 'Show sessions from all projects, not just the current directory')
|
|
83
87
|
.action((sessionId, options) => {
|
|
84
|
-
resumeCommand({ session: sessionId, profile: options.profile });
|
|
88
|
+
resumeCommand({ session: sessionId, profile: options.profile, all: options.all });
|
|
85
89
|
});
|
|
86
90
|
// Configuration
|
|
87
91
|
program
|
|
@@ -117,6 +121,24 @@ program
|
|
|
117
121
|
.command('skills [action] [args...]')
|
|
118
122
|
.description('List/search/show skills (built-in + .xibecode/skills)')
|
|
119
123
|
.action((action, args, options) => skillsCommand(action, args, options));
|
|
124
|
+
// Settings management
|
|
125
|
+
program
|
|
126
|
+
.command('settings [action] [args...]')
|
|
127
|
+
.description('Manage multi-source settings (list, get, set, sources, paths)')
|
|
128
|
+
.option('--profile <name>', 'Config profile to use')
|
|
129
|
+
.action((action, args, options) => settingsCommand(action, args, options));
|
|
130
|
+
// Hooks management
|
|
131
|
+
program
|
|
132
|
+
.command('hooks [action] [args...]')
|
|
133
|
+
.description('Manage lifecycle hooks (list, add, remove, events)')
|
|
134
|
+
.option('--profile <name>', 'Config profile to use')
|
|
135
|
+
.action((action, args, options) => hooksCommand(action, args, options));
|
|
136
|
+
// Memory management
|
|
137
|
+
program
|
|
138
|
+
.command('memory [action] [args...]')
|
|
139
|
+
.description('Manage project auto-memories (list, search, dream, path)')
|
|
140
|
+
.option('--profile <name>', 'Config profile to use')
|
|
141
|
+
.action((action, args, options) => memoryCommand(action, args, options));
|
|
120
142
|
// MCP Server Management
|
|
121
143
|
const mcpCmd = program
|
|
122
144
|
.command('mcp')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-style-chat.d.ts","sourceRoot":"","sources":["../../src/ui/claude-style-chat.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-style-chat.d.ts","sourceRoot":"","sources":["../../src/ui/claude-style-chat.tsx"],"names":[],"mappings":"AA0BA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;CACzE,CAAC;AA2GF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;AA+rDhE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAof/E"}
|
|
@@ -20,6 +20,7 @@ import { SPINNER_VERBS } from '../constants/spinnerVerbs.js';
|
|
|
20
20
|
import { extractAtReferences, splitAtReferences } from 'xibecode-core';
|
|
21
21
|
import { loadImageAttachment, mimeFromExtension } from '../utils/image-attachments.js';
|
|
22
22
|
import { SessionManager } from 'xibecode-core';
|
|
23
|
+
import { AutoMemoryManager, HooksManager, SettingsManager as CoreSettingsManager } from 'xibecode-core';
|
|
23
24
|
function isAbortLikeError(err) {
|
|
24
25
|
if (!err || typeof err !== 'object')
|
|
25
26
|
return false;
|
|
@@ -101,7 +102,7 @@ const HERO_LOGO = [
|
|
|
101
102
|
const WORK_SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
102
103
|
/** How fast to advance OpenClaude-style spinner verbs (ms) */
|
|
103
104
|
const WORK_VERB_ROTATE_MS = 2400;
|
|
104
|
-
const QUICK_HELP = ['/help', '/mode', '/format', '/model', '/setup', '/config', '/donate', '/sponsor', '/clear', '/exit'];
|
|
105
|
+
const QUICK_HELP = ['/help', '/mode', '/format', '/model', '/setup', '/config', '/memory', '/hooks', '/donate', '/sponsor', '/clear', '/exit'];
|
|
105
106
|
const CHAT_COMMANDS = [
|
|
106
107
|
{ name: '/help', description: 'Show available shortcuts and usage hints' },
|
|
107
108
|
{ name: '/mode', description: 'Switch agent mode from an interactive picker' },
|
|
@@ -110,6 +111,8 @@ const CHAT_COMMANDS = [
|
|
|
110
111
|
{ name: '/model', description: 'Fetch and switch available models for this provider' },
|
|
111
112
|
{ name: '/setup', description: 'Guided setup (set API key, then pick provider/model)' },
|
|
112
113
|
{ name: '/config', description: 'Show current config and quick config hints' },
|
|
114
|
+
{ name: '/memory', description: 'Show auto-memories for this project' },
|
|
115
|
+
{ name: '/hooks', description: 'Show registered lifecycle hooks' },
|
|
113
116
|
{ name: '/donate', description: 'Open the donation page in your browser' },
|
|
114
117
|
{ name: '/sponsor', description: 'Open the sponsorship page in your browser' },
|
|
115
118
|
{ name: '/exit', description: 'Exit the interactive chat session' },
|
|
@@ -336,13 +339,14 @@ function XibeCodeChatApp(props) {
|
|
|
336
339
|
if (!isRunning)
|
|
337
340
|
return;
|
|
338
341
|
const id = setInterval(() => {
|
|
339
|
-
// Silent means: no visible output (tool_call/tool_result/stream_text/response) for
|
|
340
|
-
|
|
342
|
+
// Silent means: no visible output (tool_call/tool_result/stream_text/response) for 180s.
|
|
343
|
+
// Some models (DeepSeek, etc.) can take a long time for their first token during complex tasks.
|
|
344
|
+
if (Date.now() - lastVisibleOutputAtRef.current > 180_000) {
|
|
341
345
|
if (abortControllerRef.current && abortReasonRef.current === 'none') {
|
|
342
346
|
abortReasonRef.current = 'watchdog';
|
|
343
347
|
pushLine({
|
|
344
348
|
type: 'info',
|
|
345
|
-
text: `No output for
|
|
349
|
+
text: `No output for 180s — restarting (attempt ${Math.min(restartAttemptsRef.current + 1, 2)}/2)…`,
|
|
346
350
|
});
|
|
347
351
|
abortControllerRef.current.abort();
|
|
348
352
|
}
|
|
@@ -632,6 +636,16 @@ function XibeCodeChatApp(props) {
|
|
|
632
636
|
startSetupWizard();
|
|
633
637
|
return;
|
|
634
638
|
}
|
|
639
|
+
if (resolvedInput === '/memory' || resolvedInput.startsWith('/memory ')) {
|
|
640
|
+
const subcmd = resolvedInput.replace('/memory', '').trim().toLowerCase();
|
|
641
|
+
props.onMemoryCommand?.(subcmd || 'list', pushLine);
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
if (resolvedInput === '/hooks' || resolvedInput.startsWith('/hooks ')) {
|
|
645
|
+
const subcmd = resolvedInput.replace('/hooks', '').trim().toLowerCase();
|
|
646
|
+
props.onHooksCommand?.(subcmd || 'list', pushLine);
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
635
649
|
if (resolvedInput === '/format' || resolvedInput.startsWith('/format ')) {
|
|
636
650
|
const arg = resolvedInput.replace(/^\/format\s*/i, '').trim().toLowerCase();
|
|
637
651
|
if (!arg) {
|
|
@@ -1397,15 +1411,38 @@ export async function launchClaudeStyleChat(options) {
|
|
|
1397
1411
|
}
|
|
1398
1412
|
activeAgent.removeAllListeners('event');
|
|
1399
1413
|
let streamedBuffer = '';
|
|
1414
|
+
let streamedLineEmitted = false;
|
|
1415
|
+
let streamFlushTimer = null;
|
|
1416
|
+
const flushStreamedBuffer = () => {
|
|
1417
|
+
if (streamedBuffer.trim()) {
|
|
1418
|
+
onLine({ type: 'assistant', text: streamedBuffer.trim() });
|
|
1419
|
+
streamedBuffer = '';
|
|
1420
|
+
streamedLineEmitted = false;
|
|
1421
|
+
}
|
|
1422
|
+
};
|
|
1400
1423
|
activeAgent.on('event', (event) => {
|
|
1401
1424
|
switch (event.type) {
|
|
1402
1425
|
case 'thinking':
|
|
1426
|
+
// Flush any pending streamed text before showing thinking indicator
|
|
1427
|
+
flushStreamedBuffer();
|
|
1428
|
+
if (streamFlushTimer) {
|
|
1429
|
+
clearTimeout(streamFlushTimer);
|
|
1430
|
+
streamFlushTimer = null;
|
|
1431
|
+
}
|
|
1432
|
+
// Thinking messages are visible output — reset the watchdog timer
|
|
1433
|
+
opts?.onVisibleOutput?.();
|
|
1403
1434
|
onLine({
|
|
1404
1435
|
type: 'info',
|
|
1405
1436
|
text: event.data?.message || 'Thinking…',
|
|
1406
1437
|
});
|
|
1407
1438
|
break;
|
|
1408
1439
|
case 'tool_call': {
|
|
1440
|
+
// Flush any pending streamed text before showing tool call
|
|
1441
|
+
flushStreamedBuffer();
|
|
1442
|
+
if (streamFlushTimer) {
|
|
1443
|
+
clearTimeout(streamFlushTimer);
|
|
1444
|
+
streamFlushTimer = null;
|
|
1445
|
+
}
|
|
1409
1446
|
opts?.onVisibleOutput?.();
|
|
1410
1447
|
const name = String(event.data?.name ?? 'tool');
|
|
1411
1448
|
const input = event.data?.input;
|
|
@@ -1417,6 +1454,12 @@ export async function launchClaudeStyleChat(options) {
|
|
|
1417
1454
|
break;
|
|
1418
1455
|
}
|
|
1419
1456
|
case 'tool_result': {
|
|
1457
|
+
// Flush any pending streamed text before showing tool result
|
|
1458
|
+
flushStreamedBuffer();
|
|
1459
|
+
if (streamFlushTimer) {
|
|
1460
|
+
clearTimeout(streamFlushTimer);
|
|
1461
|
+
streamFlushTimer = null;
|
|
1462
|
+
}
|
|
1420
1463
|
opts?.onVisibleOutput?.();
|
|
1421
1464
|
const name = String(event.data?.name ?? 'tool');
|
|
1422
1465
|
const result = event.data?.result;
|
|
@@ -1441,12 +1484,26 @@ export async function launchClaudeStyleChat(options) {
|
|
|
1441
1484
|
case 'stream_text':
|
|
1442
1485
|
opts?.onVisibleOutput?.();
|
|
1443
1486
|
streamedBuffer += event.data?.text || '';
|
|
1487
|
+
// Emit buffered text incrementally every ~500ms or when buffer gets large
|
|
1488
|
+
// so the user sees real-time output instead of waiting for stream_end
|
|
1489
|
+
if (!streamedLineEmitted || streamedBuffer.length > 500) {
|
|
1490
|
+
flushStreamedBuffer();
|
|
1491
|
+
streamedLineEmitted = true;
|
|
1492
|
+
}
|
|
1493
|
+
else if (!streamFlushTimer) {
|
|
1494
|
+
streamFlushTimer = setTimeout(() => {
|
|
1495
|
+
streamFlushTimer = null;
|
|
1496
|
+
flushStreamedBuffer();
|
|
1497
|
+
streamedLineEmitted = true;
|
|
1498
|
+
}, 500);
|
|
1499
|
+
}
|
|
1444
1500
|
break;
|
|
1445
1501
|
case 'stream_end':
|
|
1446
|
-
if (
|
|
1447
|
-
|
|
1502
|
+
if (streamFlushTimer) {
|
|
1503
|
+
clearTimeout(streamFlushTimer);
|
|
1504
|
+
streamFlushTimer = null;
|
|
1448
1505
|
}
|
|
1449
|
-
|
|
1506
|
+
flushStreamedBuffer();
|
|
1450
1507
|
break;
|
|
1451
1508
|
case 'response':
|
|
1452
1509
|
opts?.onVisibleOutput?.();
|
|
@@ -1591,8 +1648,73 @@ export async function launchClaudeStyleChat(options) {
|
|
|
1591
1648
|
}
|
|
1592
1649
|
};
|
|
1593
1650
|
const root = createRoot({ exitOnCtrlC: true });
|
|
1651
|
+
// ── Memory & Hooks slash-command handlers ──
|
|
1652
|
+
const autoMemManager = new AutoMemoryManager({ cwd: process.cwd() });
|
|
1653
|
+
const coreSettingsManager = new CoreSettingsManager({ cwd: process.cwd() });
|
|
1654
|
+
const hooksMgr = new HooksManager(coreSettingsManager);
|
|
1655
|
+
await hooksMgr.loadFromSettingsManager().catch(() => { });
|
|
1656
|
+
const onMemoryCommand = (subcmd, pushLine) => {
|
|
1657
|
+
void (async () => {
|
|
1658
|
+
try {
|
|
1659
|
+
if (subcmd === 'list' || subcmd === '') {
|
|
1660
|
+
const memories = await autoMemManager.listMemories();
|
|
1661
|
+
if (memories.length === 0) {
|
|
1662
|
+
pushLine({ type: 'info', text: 'No memories found for this project. Memories are auto-extracted as you chat.' });
|
|
1663
|
+
return;
|
|
1664
|
+
}
|
|
1665
|
+
pushLine({ type: 'info', text: `Found ${memories.length} memory/memories:` });
|
|
1666
|
+
for (const mem of memories.slice(0, 10)) {
|
|
1667
|
+
const tags = mem.frontmatter.tags?.length ? ` [${mem.frontmatter.tags.join(', ')}]` : '';
|
|
1668
|
+
pushLine({ type: 'info', text: ` ${mem.frontmatter.type}${tags}: ${mem.content.trim().slice(0, 80)}${mem.content.length > 80 ? '...' : ''}` });
|
|
1669
|
+
}
|
|
1670
|
+
if (memories.length > 10) {
|
|
1671
|
+
pushLine({ type: 'info', text: ` ... and ${memories.length - 10} more. Use "xc memory list" to see all.` });
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
else if (subcmd === 'dream') {
|
|
1675
|
+
pushLine({ type: 'info', text: 'Running dream consolidation...' });
|
|
1676
|
+
const result = await autoMemManager.dream();
|
|
1677
|
+
pushLine({ type: 'info', text: `Dream complete: created=${result.created}, merged=${result.merged}, pruned=${result.pruned}` });
|
|
1678
|
+
}
|
|
1679
|
+
else if (subcmd === 'path') {
|
|
1680
|
+
pushLine({ type: 'info', text: `Memory dir: ${autoMemManager.getMemoryDir()}` });
|
|
1681
|
+
}
|
|
1682
|
+
else {
|
|
1683
|
+
pushLine({ type: 'info', text: 'Usage: /memory [list|dream|path]. Default: list' });
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
catch (err) {
|
|
1687
|
+
pushLine({ type: 'error', text: `Memory error: ${err?.message || err}` });
|
|
1688
|
+
}
|
|
1689
|
+
})();
|
|
1690
|
+
};
|
|
1691
|
+
const onHooksCommand = (subcmd, pushLine) => {
|
|
1692
|
+
const allHooks = hooksMgr.getAllHooks();
|
|
1693
|
+
const flatList = [];
|
|
1694
|
+
for (const [event, hooks] of allHooks) {
|
|
1695
|
+
for (const hook of hooks) {
|
|
1696
|
+
flatList.push({ event, config: hook.config, matcher: hook.matcher });
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
if (subcmd === 'list' || subcmd === '') {
|
|
1700
|
+
if (flatList.length === 0) {
|
|
1701
|
+
pushLine({ type: 'info', text: 'No hooks configured. Use "xc hooks add" or edit ~/.xibecode/settings.json' });
|
|
1702
|
+
return;
|
|
1703
|
+
}
|
|
1704
|
+
pushLine({ type: 'info', text: `Registered hooks (${flatList.length}):` });
|
|
1705
|
+
for (const hook of flatList.slice(0, 10)) {
|
|
1706
|
+
const type = 'command' in hook.config ? 'command' : 'prompt' in hook.config ? 'prompt' : 'agent' in hook.config ? 'agent' : 'http' in hook.config ? 'http' : 'function';
|
|
1707
|
+
const value = hook.config.command || hook.config.prompt || hook.config.agent || hook.config.http || hook.config.url || '(fn)';
|
|
1708
|
+
const matcher = hook.matcher ? ` matcher="${hook.matcher}"` : '';
|
|
1709
|
+
pushLine({ type: 'info', text: ` ${hook.event}${matcher} -> ${type}: ${value}` });
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
else {
|
|
1713
|
+
pushLine({ type: 'info', text: 'Usage: /hooks [list]. Default: list. Use "xc hooks" CLI for full management.' });
|
|
1714
|
+
}
|
|
1715
|
+
};
|
|
1594
1716
|
try {
|
|
1595
|
-
await renderAndRun(root, _jsx(XibeCodeChatApp, { model: model, initialMode: activeMode, provider: provider, baseUrl: baseUrl, needsFirstRunSetup: needsFirstRunSetup, defaultModel: model, modeOptions: modeOptions, initialRequestFormat: wireFormat, customProviderFormat: customProviderFormat, profile: options.profile, sessionId: currentSessionId, initialMessages: options.initialMessages, runPrompt: runPrompt, listBackgroundTasks: listBackgroundTasks, checkBackgroundTask: checkBackgroundTask, onUiLine: appendLogLine, registerUiSink: registerUiSink, registerModeSink: registerModeSink, loadModels: loadModels, onModelChange: onModelChange, onModeChange: onModeChange, onWireFormatChange: onWireFormatChange, onSessionCreated: onSessionCreated, onMessagesUpdate: onMessagesUpdate, getCurrentMessages: () => activeAgent?.getMessages() ?? currentSession?.messages ?? [] }));
|
|
1717
|
+
await renderAndRun(root, _jsx(XibeCodeChatApp, { model: model, initialMode: activeMode, provider: provider, baseUrl: baseUrl, needsFirstRunSetup: needsFirstRunSetup, defaultModel: model, modeOptions: modeOptions, initialRequestFormat: wireFormat, customProviderFormat: customProviderFormat, profile: options.profile, sessionId: currentSessionId, initialMessages: options.initialMessages, runPrompt: runPrompt, listBackgroundTasks: listBackgroundTasks, checkBackgroundTask: checkBackgroundTask, onUiLine: appendLogLine, registerUiSink: registerUiSink, registerModeSink: registerModeSink, loadModels: loadModels, onModelChange: onModelChange, onModeChange: onModeChange, onWireFormatChange: onWireFormatChange, onSessionCreated: onSessionCreated, onMessagesUpdate: onMessagesUpdate, getCurrentMessages: () => activeAgent?.getMessages() ?? currentSession?.messages ?? [], onMemoryCommand: onMemoryCommand, onHooksCommand: onHooksCommand }));
|
|
1596
1718
|
}
|
|
1597
1719
|
finally {
|
|
1598
1720
|
process.off('unhandledRejection', onUnhandledRejection);
|