httpcat-cli 0.3.0 → 0.3.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/.github/workflows/ci.yml +3 -0
- package/.github/workflows/rc-publish.yml +6 -0
- package/.github/workflows/release.yml +102 -0
- package/.github/workflows/sync-version.yml +31 -2
- package/README.md +1408 -109
- package/additions.txt +3 -0
- package/bun.lock +260 -25
- package/dist/agent/autonomous-trader.d.ts.map +1 -0
- package/dist/agent/autonomous-trader.js +362 -0
- package/dist/agent/autonomous-trader.js.map +1 -0
- package/dist/agent/ax-agent.d.ts.map +1 -1
- package/dist/agent/ax-agent.js +356 -18
- package/dist/agent/ax-agent.js.map +1 -1
- package/dist/agent/event-client.d.ts.map +1 -0
- package/dist/agent/event-client.js +82 -0
- package/dist/agent/event-client.js.map +1 -0
- package/dist/agent/log-stream.d.ts.map +1 -0
- package/dist/agent/log-stream.js +95 -0
- package/dist/agent/log-stream.js.map +1 -0
- package/dist/agent/memory/conversation-session.d.ts.map +1 -0
- package/dist/agent/memory/conversation-session.js +232 -0
- package/dist/agent/memory/conversation-session.js.map +1 -0
- package/dist/agent/memory/conversation-store.d.ts.map +1 -0
- package/dist/agent/memory/conversation-store.js +214 -0
- package/dist/agent/memory/conversation-store.js.map +1 -0
- package/dist/agent/memory/database-schema.d.ts.map +1 -0
- package/dist/agent/memory/database-schema.js +355 -0
- package/dist/agent/memory/database-schema.js.map +1 -0
- package/dist/agent/memory/decision-tracker.d.ts.map +1 -0
- package/dist/agent/memory/decision-tracker.js +274 -0
- package/dist/agent/memory/decision-tracker.js.map +1 -0
- package/dist/agent/memory/memory-manager.d.ts.map +1 -0
- package/dist/agent/memory/memory-manager.js +187 -0
- package/dist/agent/memory/memory-manager.js.map +1 -0
- package/dist/agent/memory/types.d.ts.map +1 -0
- package/dist/agent/memory/types.js +5 -0
- package/dist/agent/memory/types.js.map +1 -0
- package/dist/agent/message-formatter.d.ts.map +1 -0
- package/dist/agent/message-formatter.js +76 -0
- package/dist/agent/message-formatter.js.map +1 -0
- package/dist/agent/position-db.d.ts.map +1 -0
- package/dist/agent/position-db.js +154 -0
- package/dist/agent/position-db.js.map +1 -0
- package/dist/agent/simple-chat-ui-static.d.ts.map +1 -0
- package/dist/agent/simple-chat-ui-static.js +129 -0
- package/dist/agent/simple-chat-ui-static.js.map +1 -0
- package/dist/agent/simple-chat-ui.d.ts.map +1 -0
- package/dist/agent/simple-chat-ui.js +90 -0
- package/dist/agent/simple-chat-ui.js.map +1 -0
- package/dist/agent/tools.d.ts.map +1 -1
- package/dist/agent/tools.js +297 -4
- package/dist/agent/tools.js.map +1 -1
- package/dist/agent/ui.d.ts.map +1 -0
- package/dist/agent/ui.js +84 -0
- package/dist/agent/ui.js.map +1 -0
- package/dist/agent/unified-runtime.d.ts.map +1 -0
- package/dist/agent/unified-runtime.js +397 -0
- package/dist/agent/unified-runtime.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +272 -21
- package/dist/client.js.map +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +187 -33
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +125 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +505 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/automation.d.ts.map +1 -0
- package/dist/commands/automation.js +346 -0
- package/dist/commands/automation.js.map +1 -0
- package/dist/commands/balances.d.ts.map +1 -1
- package/dist/commands/balances.js +226 -73
- package/dist/commands/balances.js.map +1 -1
- package/dist/commands/buy.d.ts.map +1 -1
- package/dist/commands/buy.js +149 -146
- package/dist/commands/buy.js.map +1 -1
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +51 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/cex.d.ts.map +1 -0
- package/dist/commands/cex.js +958 -0
- package/dist/commands/cex.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +169 -411
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +313 -29
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +151 -43
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/gasless-swap.d.ts.map +1 -0
- package/dist/commands/gasless-swap.js +232 -0
- package/dist/commands/gasless-swap.js.map +1 -0
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +63 -7
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +131 -47
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/launchpad.d.ts.map +1 -0
- package/dist/commands/launchpad.js +708 -0
- package/dist/commands/launchpad.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +57 -23
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/market.d.ts.map +1 -0
- package/dist/commands/market.js +960 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/mcp-install.d.ts.map +1 -0
- package/dist/commands/mcp-install.js +387 -0
- package/dist/commands/mcp-install.js.map +1 -0
- package/dist/commands/opps.d.ts.map +1 -0
- package/dist/commands/opps.js +409 -0
- package/dist/commands/opps.js.map +1 -0
- package/dist/commands/perps.d.ts.map +1 -0
- package/dist/commands/perps.js +248 -0
- package/dist/commands/perps.js.map +1 -0
- package/dist/commands/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio.js +679 -0
- package/dist/commands/portfolio.js.map +1 -0
- package/dist/commands/positions.d.ts.map +1 -1
- package/dist/commands/positions.js +76 -47
- package/dist/commands/positions.js.map +1 -1
- package/dist/commands/predict.d.ts.map +1 -0
- package/dist/commands/predict.js +280 -0
- package/dist/commands/predict.js.map +1 -0
- package/dist/commands/predictions.d.ts.map +1 -0
- package/dist/commands/predictions.js +486 -0
- package/dist/commands/predictions.js.map +1 -0
- package/dist/commands/risk.d.ts.map +1 -0
- package/dist/commands/risk.js +225 -0
- package/dist/commands/risk.js.map +1 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +244 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/sell.d.ts.map +1 -1
- package/dist/commands/sell.js +67 -34
- package/dist/commands/sell.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +733 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/sign.d.ts.map +1 -0
- package/dist/commands/sign.js +1048 -0
- package/dist/commands/sign.js.map +1 -0
- package/dist/commands/swap.d.ts.map +1 -0
- package/dist/commands/swap.js +744 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +417 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +2040 -0
- package/dist/commands/tools/index.js.map +1 -0
- package/dist/commands/trade.d.ts.map +1 -0
- package/dist/commands/trade.js +237 -0
- package/dist/commands/trade.js.map +1 -0
- package/dist/commands/transactions.d.ts.map +1 -1
- package/dist/commands/transactions.js +29 -17
- package/dist/commands/transactions.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +429 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +351 -40
- package/dist/config.js.map +1 -1
- package/dist/index.js +4524 -924
- package/dist/index.js.map +1 -1
- package/dist/interactive/art.d.ts.map +1 -1
- package/dist/interactive/art.js +33 -1
- package/dist/interactive/art.js.map +1 -1
- package/dist/interactive/shell.d.ts.map +1 -1
- package/dist/interactive/shell.js +467 -2652
- package/dist/interactive/shell.js.map +1 -1
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/context.js +211 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/onboarding.d.ts.map +1 -0
- package/dist/mcp/onboarding.js +266 -0
- package/dist/mcp/onboarding.js.map +1 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +222 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +51 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +4119 -169
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/types/agent-info.d.ts.map +1 -0
- package/dist/types/agent-info.js +11 -0
- package/dist/types/agent-info.js.map +1 -0
- package/dist/ui/components/ScrollableList.d.ts.map +1 -0
- package/dist/ui/components/ScrollableList.js +72 -0
- package/dist/ui/components/ScrollableList.js.map +1 -0
- package/dist/ui/components/ThemeProvider.d.ts.map +1 -0
- package/dist/ui/components/ThemeProvider.js +87 -0
- package/dist/ui/components/ThemeProvider.js.map +1 -0
- package/dist/ui/components/ThemedBox.d.ts.map +1 -0
- package/dist/ui/components/ThemedBox.js +24 -0
- package/dist/ui/components/ThemedBox.js.map +1 -0
- package/dist/ui/components/agent/ChatHeader.d.ts.map +1 -0
- package/dist/ui/components/agent/ChatHeader.js +39 -0
- package/dist/ui/components/agent/ChatHeader.js.map +1 -0
- package/dist/ui/components/agent/Header.d.ts.map +1 -0
- package/dist/ui/components/agent/Header.js +14 -0
- package/dist/ui/components/agent/Header.js.map +1 -0
- package/dist/ui/components/agent/Input.d.ts.map +1 -0
- package/dist/ui/components/agent/Input.js +23 -0
- package/dist/ui/components/agent/Input.js.map +1 -0
- package/dist/ui/components/agent/Output.d.ts.map +1 -0
- package/dist/ui/components/agent/Output.js +23 -0
- package/dist/ui/components/agent/Output.js.map +1 -0
- package/dist/ui/components/chat/TokenChatUI.d.ts.map +1 -0
- package/dist/ui/components/chat/TokenChatUI.js +133 -0
- package/dist/ui/components/chat/TokenChatUI.js.map +1 -0
- package/dist/ui/components/shell/ShellHeader.d.ts.map +1 -0
- package/dist/ui/components/shell/ShellHeader.js +31 -0
- package/dist/ui/components/shell/ShellHeader.js.map +1 -0
- package/dist/ui/components/shell/ShellInput.d.ts.map +1 -0
- package/dist/ui/components/shell/ShellInput.js +151 -0
- package/dist/ui/components/shell/ShellInput.js.map +1 -0
- package/dist/ui/components/shell/ShellOutput.d.ts.map +1 -0
- package/dist/ui/components/shell/ShellOutput.js +8 -0
- package/dist/ui/components/shell/ShellOutput.js.map +1 -0
- package/dist/ui/hooks/useChatWebSocket.d.ts.map +1 -0
- package/dist/ui/hooks/useChatWebSocket.js +76 -0
- package/dist/ui/hooks/useChatWebSocket.js.map +1 -0
- package/dist/ui/hooks/useCommandHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useCommandHistory.js +70 -0
- package/dist/ui/hooks/useCommandHistory.js.map +1 -0
- package/dist/ui/hooks/useDebounce.d.ts.map +1 -0
- package/dist/ui/hooks/useDebounce.js +17 -0
- package/dist/ui/hooks/useDebounce.js.map +1 -0
- package/dist/ui/hooks/useLogStream.d.ts.map +1 -0
- package/dist/ui/hooks/useLogStream.js +20 -0
- package/dist/ui/hooks/useLogStream.js.map +1 -0
- package/dist/ui/hooks/useVirtualScroll.d.ts.map +1 -0
- package/dist/ui/hooks/useVirtualScroll.js +70 -0
- package/dist/ui/hooks/useVirtualScroll.js.map +1 -0
- package/dist/utils/admin.d.ts.map +1 -0
- package/dist/utils/admin.js +144 -0
- package/dist/utils/admin.js.map +1 -0
- package/dist/utils/autoSetup.d.ts.map +1 -0
- package/dist/utils/autoSetup.js +252 -0
- package/dist/utils/autoSetup.js.map +1 -0
- package/dist/utils/build-constants.d.ts.map +1 -0
- package/dist/utils/build-constants.js +10 -0
- package/dist/utils/build-constants.js.map +1 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +46 -9
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/llm-cli-config.d.ts.map +1 -0
- package/dist/utils/llm-cli-config.js +963 -0
- package/dist/utils/llm-cli-config.js.map +1 -0
- package/dist/utils/llm-cli-detector.d.ts.map +1 -0
- package/dist/utils/llm-cli-detector.js +202 -0
- package/dist/utils/llm-cli-detector.js.map +1 -0
- package/dist/utils/loading.d.ts.map +1 -1
- package/dist/utils/loading.js +25 -3
- package/dist/utils/loading.js.map +1 -1
- package/dist/utils/maintenance.d.ts.map +1 -0
- package/dist/utils/maintenance.js +17 -0
- package/dist/utils/maintenance.js.map +1 -0
- package/dist/utils/mcp-config.d.ts.map +1 -0
- package/dist/utils/mcp-config.js +77 -0
- package/dist/utils/mcp-config.js.map +1 -0
- package/dist/utils/privateKeyPrompt.d.ts.map +1 -1
- package/dist/utils/privateKeyPrompt.js +308 -129
- package/dist/utils/privateKeyPrompt.js.map +1 -1
- package/dist/utils/process-cleanup.d.ts.map +1 -0
- package/dist/utils/process-cleanup.js +136 -0
- package/dist/utils/process-cleanup.js.map +1 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +56 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/rpc-helpers.d.ts.map +1 -0
- package/dist/utils/rpc-helpers.js +70 -0
- package/dist/utils/rpc-helpers.js.map +1 -0
- package/dist/utils/rpc-transport.d.ts.map +1 -0
- package/dist/utils/rpc-transport.js +87 -0
- package/dist/utils/rpc-transport.js.map +1 -0
- package/dist/utils/shell-setup.d.ts.map +1 -0
- package/dist/utils/shell-setup.js +531 -0
- package/dist/utils/shell-setup.js.map +1 -0
- package/dist/utils/status.d.ts.map +1 -1
- package/dist/utils/status.js +34 -5
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/token-resolver.d.ts.map +1 -1
- package/dist/utils/token-resolver.js +51 -8
- package/dist/utils/token-resolver.js.map +1 -1
- package/dist/utils/x402-caller.d.ts.map +1 -0
- package/dist/utils/x402-caller.js +17 -0
- package/dist/utils/x402-caller.js.map +1 -0
- package/docs/README.md +28 -0
- package/docs/agent/README.md +18 -0
- package/docs/api/README.md +41 -0
- package/docs/cli/README.md +42 -0
- package/docs/guides/README.md +26 -0
- package/docs/implementation/README.md +18 -0
- package/docs/planning/README.md +19 -0
- package/docs/testing/README.md +15 -0
- package/docs/ux/README.md +16 -0
- package/issues.txt +2 -0
- package/package.json +24 -9
- package/scripts/cat-spin.sh +417 -0
- package/scripts/deprecate-rc-versions.js +58 -0
- package/scripts/inject-build-constants.js +43 -0
- package/scripts/monitor-foobar.js +117 -0
- package/swap.logs +61 -0
- package/swapping.txt +108 -0
- package/test.txt +12 -0
- package/tests/fixtures/test-data.json +16 -0
- package/Screenshot 2025-12-21 at 8.56.02/342/200/257PM.png +0 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LogStream - Shared message logging system for unified agent runtime
|
|
3
|
+
* Handles message history and subscriptions for both autonomous and chat modes
|
|
4
|
+
*/
|
|
5
|
+
export class LogStream {
|
|
6
|
+
listeners = new Set();
|
|
7
|
+
messageHistory = [];
|
|
8
|
+
maxHistory = 1000; // Keep last 1000 messages
|
|
9
|
+
/**
|
|
10
|
+
* Add a message to the stream
|
|
11
|
+
*/
|
|
12
|
+
log(content, type = 'agent', metadata) {
|
|
13
|
+
const message = {
|
|
14
|
+
timestamp: new Date(),
|
|
15
|
+
type,
|
|
16
|
+
content,
|
|
17
|
+
metadata,
|
|
18
|
+
};
|
|
19
|
+
// Add to history
|
|
20
|
+
this.messageHistory.push(message);
|
|
21
|
+
// Trim history if too long
|
|
22
|
+
if (this.messageHistory.length > this.maxHistory) {
|
|
23
|
+
this.messageHistory = this.messageHistory.slice(-this.maxHistory);
|
|
24
|
+
}
|
|
25
|
+
// Notify all listeners
|
|
26
|
+
this.listeners.forEach((listener) => {
|
|
27
|
+
try {
|
|
28
|
+
listener(message);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
// Don't let listener errors break the stream
|
|
32
|
+
console.error('Error in log stream listener:', error);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Subscribe to new messages
|
|
38
|
+
* Returns an unsubscribe function
|
|
39
|
+
*/
|
|
40
|
+
subscribe(callback) {
|
|
41
|
+
this.listeners.add(callback);
|
|
42
|
+
// Return unsubscribe function
|
|
43
|
+
return () => {
|
|
44
|
+
this.listeners.delete(callback);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get message history
|
|
49
|
+
*/
|
|
50
|
+
getHistory(limit) {
|
|
51
|
+
if (limit) {
|
|
52
|
+
return this.messageHistory.slice(-limit);
|
|
53
|
+
}
|
|
54
|
+
return [...this.messageHistory];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Clear message history
|
|
58
|
+
*/
|
|
59
|
+
clear() {
|
|
60
|
+
this.messageHistory = [];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get the number of messages in history
|
|
64
|
+
*/
|
|
65
|
+
getMessageCount() {
|
|
66
|
+
return this.messageHistory.length;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Remove the last message from the stream
|
|
70
|
+
* Used for removing temporary messages like "thinking..."
|
|
71
|
+
*/
|
|
72
|
+
removeLast() {
|
|
73
|
+
if (this.messageHistory.length > 0) {
|
|
74
|
+
const removed = this.messageHistory.pop();
|
|
75
|
+
// Notify listeners about the removal (send a special removal message)
|
|
76
|
+
if (removed) {
|
|
77
|
+
const removalMessage = {
|
|
78
|
+
timestamp: new Date(),
|
|
79
|
+
type: 'system',
|
|
80
|
+
content: '',
|
|
81
|
+
metadata: { action: 'remove-last', removed },
|
|
82
|
+
};
|
|
83
|
+
this.listeners.forEach((listener) => {
|
|
84
|
+
try {
|
|
85
|
+
listener(removalMessage);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error('Error in log stream listener:', error);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=log-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-stream.js","sourceRoot":"","sources":["../../src/agent/log-stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,OAAO,SAAS;IACZ,SAAS,GAAuC,IAAI,GAAG,EAAE,CAAC;IAC1D,cAAc,GAAiB,EAAE,CAAC;IAClC,UAAU,GAAW,IAAI,CAAC,CAAC,0BAA0B;IAE7D;;OAEG;IACH,GAAG,CAAC,OAAe,EAAE,OAA2B,OAAO,EAAE,QAAc;QACrE,MAAM,OAAO,GAAe;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI;YACJ,OAAO;YACP,QAAQ;SACT,CAAC;QAEF,iBAAiB;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,2BAA2B;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,6CAA6C;gBAC7C,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,QAAuC;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAc;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;YAE1C,sEAAsE;YACtE,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,cAAc,GAAe;oBACjC,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE;iBAC7C,CAAC;gBAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAClC,IAAI,CAAC;wBACH,QAAQ,CAAC,cAAc,CAAC,CAAC;oBAC3B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-session.d.ts","sourceRoot":"","sources":["../../../src/agent/memory/conversation-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,iBAAiB,CAAoB;gBAEzB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAKzC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;;;OAIG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,OAAc,GAC/B,MAAM;IAyBT;;OAEG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASlD;;OAEG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3D;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAyB/C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,GAAE,OAAe,GAAG,kBAAkB,EAAE;IAQtF;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAM5D;;OAEG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAM3C;;OAEG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAO1C;;OAEG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE;IAI9D;;OAEG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG;QACtC,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB;IA6BD;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QACvD,MAAM,EAAE,kBAAkB,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IA0BF;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAS9D;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAU1D,OAAO,CAAC,iBAAiB;CAkB1B"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation Session Manager
|
|
3
|
+
* Manages persistent conversation threads that can be resumed
|
|
4
|
+
*/
|
|
5
|
+
import { ConversationStore } from "./conversation-store.js";
|
|
6
|
+
import { randomUUID } from "crypto";
|
|
7
|
+
export class ConversationSessionManager {
|
|
8
|
+
db;
|
|
9
|
+
conversationStore;
|
|
10
|
+
constructor(db) {
|
|
11
|
+
this.db = db;
|
|
12
|
+
this.conversationStore = new ConversationStore(db);
|
|
13
|
+
this.initializeSessionTracking();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Initialize session tracking table
|
|
17
|
+
*/
|
|
18
|
+
initializeSessionTracking() {
|
|
19
|
+
this.db.exec(`
|
|
20
|
+
CREATE TABLE IF NOT EXISTS conversation_threads (
|
|
21
|
+
conversation_id TEXT PRIMARY KEY,
|
|
22
|
+
session_id TEXT NOT NULL,
|
|
23
|
+
started_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
+
last_message_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
|
25
|
+
message_count INTEGER DEFAULT 0,
|
|
26
|
+
title TEXT,
|
|
27
|
+
archived BOOLEAN DEFAULT 0
|
|
28
|
+
)
|
|
29
|
+
`);
|
|
30
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_threads_session ON conversation_threads(session_id)`);
|
|
31
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_threads_archived ON conversation_threads(archived)`);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get or create active conversation thread for a session
|
|
35
|
+
* If resumeLastThread is true, returns the most recent active thread
|
|
36
|
+
* Otherwise creates a new thread
|
|
37
|
+
*/
|
|
38
|
+
getOrCreateThread(sessionId, resumeLastThread = true) {
|
|
39
|
+
if (resumeLastThread) {
|
|
40
|
+
// Get the most recent active (non-archived) thread
|
|
41
|
+
const existingThread = this.db.prepare(`
|
|
42
|
+
SELECT conversation_id FROM conversation_threads
|
|
43
|
+
WHERE session_id = ? AND archived = 0
|
|
44
|
+
ORDER BY last_message_at DESC
|
|
45
|
+
LIMIT 1
|
|
46
|
+
`).get(sessionId);
|
|
47
|
+
if (existingThread) {
|
|
48
|
+
return existingThread.conversation_id;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Create new thread
|
|
52
|
+
const conversationId = randomUUID();
|
|
53
|
+
this.db.prepare(`
|
|
54
|
+
INSERT INTO conversation_threads (conversation_id, session_id)
|
|
55
|
+
VALUES (?, ?)
|
|
56
|
+
`).run(conversationId, sessionId);
|
|
57
|
+
return conversationId;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Update thread metadata when a new message is added
|
|
61
|
+
*/
|
|
62
|
+
updateThreadActivity(conversationId) {
|
|
63
|
+
this.db.prepare(`
|
|
64
|
+
UPDATE conversation_threads
|
|
65
|
+
SET last_message_at = CURRENT_TIMESTAMP,
|
|
66
|
+
message_count = message_count + 1
|
|
67
|
+
WHERE conversation_id = ?
|
|
68
|
+
`).run(conversationId);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set a title for a conversation thread (auto-generated from first message or user-set)
|
|
72
|
+
*/
|
|
73
|
+
setThreadTitle(conversationId, title) {
|
|
74
|
+
this.db.prepare(`
|
|
75
|
+
UPDATE conversation_threads
|
|
76
|
+
SET title = ?
|
|
77
|
+
WHERE conversation_id = ?
|
|
78
|
+
`).run(title, conversationId);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Generate a title from the first user message (if not already set)
|
|
82
|
+
*/
|
|
83
|
+
autoGenerateTitle(conversationId) {
|
|
84
|
+
// Check if title already exists
|
|
85
|
+
const thread = this.db.prepare(`
|
|
86
|
+
SELECT title FROM conversation_threads WHERE conversation_id = ?
|
|
87
|
+
`).get(conversationId);
|
|
88
|
+
if (thread?.title) {
|
|
89
|
+
return; // Already has a title
|
|
90
|
+
}
|
|
91
|
+
// Get first user message
|
|
92
|
+
const firstMessage = this.db.prepare(`
|
|
93
|
+
SELECT message FROM conversations
|
|
94
|
+
WHERE conversation_id = ? AND role = 'user'
|
|
95
|
+
ORDER BY timestamp ASC
|
|
96
|
+
LIMIT 1
|
|
97
|
+
`).get(conversationId);
|
|
98
|
+
if (firstMessage) {
|
|
99
|
+
// Create title from first 50 chars of first message
|
|
100
|
+
const title = firstMessage.message.substring(0, 50) + (firstMessage.message.length > 50 ? "..." : "");
|
|
101
|
+
this.setThreadTitle(conversationId, title);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get all conversation threads for a session
|
|
106
|
+
*/
|
|
107
|
+
listThreads(sessionId, includeArchived = false) {
|
|
108
|
+
const query = includeArchived
|
|
109
|
+
? `SELECT * FROM conversation_threads WHERE session_id = ? ORDER BY last_message_at DESC`
|
|
110
|
+
: `SELECT * FROM conversation_threads WHERE session_id = ? AND archived = 0 ORDER BY last_message_at DESC`;
|
|
111
|
+
return this.db.prepare(query).all(sessionId);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get a specific thread by ID
|
|
115
|
+
*/
|
|
116
|
+
getThread(conversationId) {
|
|
117
|
+
return this.db.prepare(`
|
|
118
|
+
SELECT * FROM conversation_threads WHERE conversation_id = ?
|
|
119
|
+
`).get(conversationId) || null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Archive a conversation thread
|
|
123
|
+
*/
|
|
124
|
+
archiveThread(conversationId) {
|
|
125
|
+
this.db.prepare(`
|
|
126
|
+
UPDATE conversation_threads SET archived = 1 WHERE conversation_id = ?
|
|
127
|
+
`).run(conversationId);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Delete a conversation thread and all its messages
|
|
131
|
+
*/
|
|
132
|
+
deleteThread(conversationId) {
|
|
133
|
+
// Delete messages
|
|
134
|
+
this.db.prepare(`DELETE FROM conversations WHERE conversation_id = ?`).run(conversationId);
|
|
135
|
+
// Delete thread record
|
|
136
|
+
this.db.prepare(`DELETE FROM conversation_threads WHERE conversation_id = ?`).run(conversationId);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Load full conversation thread for resumption
|
|
140
|
+
*/
|
|
141
|
+
loadConversationThread(conversationId) {
|
|
142
|
+
return this.conversationStore.getConversationThread(conversationId);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get conversation statistics for a thread
|
|
146
|
+
*/
|
|
147
|
+
getThreadStats(conversationId) {
|
|
148
|
+
const stats = this.db.prepare(`
|
|
149
|
+
SELECT
|
|
150
|
+
COUNT(*) as total,
|
|
151
|
+
SUM(CASE WHEN role = 'user' THEN 1 ELSE 0 END) as user_count,
|
|
152
|
+
SUM(CASE WHEN role = 'agent' THEN 1 ELSE 0 END) as agent_count,
|
|
153
|
+
MIN(timestamp) as first_message,
|
|
154
|
+
MAX(timestamp) as last_message
|
|
155
|
+
FROM conversations
|
|
156
|
+
WHERE conversation_id = ?
|
|
157
|
+
`).get(conversationId);
|
|
158
|
+
// Calculate duration
|
|
159
|
+
const duration = this.calculateDuration(stats.first_message, stats.last_message);
|
|
160
|
+
return {
|
|
161
|
+
messageCount: stats.total,
|
|
162
|
+
userMessages: stats.user_count,
|
|
163
|
+
agentMessages: stats.agent_count,
|
|
164
|
+
duration,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Search across all conversation threads
|
|
169
|
+
*/
|
|
170
|
+
searchThreads(sessionId, keyword) {
|
|
171
|
+
const results = this.db.prepare(`
|
|
172
|
+
SELECT
|
|
173
|
+
ct.*,
|
|
174
|
+
COUNT(c.id) as match_count
|
|
175
|
+
FROM conversation_threads ct
|
|
176
|
+
JOIN conversations c ON c.conversation_id = ct.conversation_id
|
|
177
|
+
WHERE ct.session_id = ?
|
|
178
|
+
AND c.message LIKE ?
|
|
179
|
+
GROUP BY ct.conversation_id
|
|
180
|
+
ORDER BY ct.last_message_at DESC
|
|
181
|
+
`).all(sessionId, `%${keyword}%`);
|
|
182
|
+
return results.map(r => ({
|
|
183
|
+
thread: {
|
|
184
|
+
conversation_id: r.conversation_id,
|
|
185
|
+
session_id: r.session_id,
|
|
186
|
+
started_at: r.started_at,
|
|
187
|
+
last_message_at: r.last_message_at,
|
|
188
|
+
message_count: r.message_count,
|
|
189
|
+
title: r.title,
|
|
190
|
+
},
|
|
191
|
+
matchCount: r.match_count,
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get the current active thread for a session (most recent non-archived)
|
|
196
|
+
*/
|
|
197
|
+
getCurrentThread(sessionId) {
|
|
198
|
+
return this.db.prepare(`
|
|
199
|
+
SELECT * FROM conversation_threads
|
|
200
|
+
WHERE session_id = ? AND archived = 0
|
|
201
|
+
ORDER BY last_message_at DESC
|
|
202
|
+
LIMIT 1
|
|
203
|
+
`).get(sessionId) || null;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Create a new conversation thread
|
|
207
|
+
*/
|
|
208
|
+
createNewThread(sessionId, title) {
|
|
209
|
+
const conversationId = randomUUID();
|
|
210
|
+
this.db.prepare(`
|
|
211
|
+
INSERT INTO conversation_threads (conversation_id, session_id, title)
|
|
212
|
+
VALUES (?, ?, ?)
|
|
213
|
+
`).run(conversationId, sessionId, title || null);
|
|
214
|
+
return conversationId;
|
|
215
|
+
}
|
|
216
|
+
calculateDuration(start, end) {
|
|
217
|
+
const startTime = new Date(start).getTime();
|
|
218
|
+
const endTime = new Date(end).getTime();
|
|
219
|
+
const diffMs = endTime - startTime;
|
|
220
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
221
|
+
if (diffMins < 60) {
|
|
222
|
+
return `${diffMins}m`;
|
|
223
|
+
}
|
|
224
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
225
|
+
if (diffHours < 24) {
|
|
226
|
+
return `${diffHours}h ${diffMins % 60}m`;
|
|
227
|
+
}
|
|
228
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
229
|
+
return `${diffDays}d ${diffHours % 24}h`;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=conversation-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-session.js","sourceRoot":"","sources":["../../../src/agent/memory/conversation-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAWpC,MAAM,OAAO,0BAA0B;IAGjB;IAFZ,iBAAiB,CAAoB;IAE7C,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,yBAAyB;QAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;KAUZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;QACnG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IACpG,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CACf,SAAiB,EACjB,mBAA4B,IAAI;QAEhC,IAAI,gBAAgB,EAAE,CAAC;YACrB,mDAAmD;YACnD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKtC,CAAC,CAAC,GAAG,CAAC,SAAS,CAA4C,CAAC;YAE7D,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,cAAc,CAAC,eAAe,CAAC;YACxC,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAElC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,cAAsB;QACzC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAKf,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,cAAsB,EAAE,KAAa;QAClD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIf,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,cAAsB;QACtC,gCAAgC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE9B,CAAC,CAAC,GAAG,CAAC,cAAc,CAAyC,CAAC;QAE/D,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,sBAAsB;QAChC,CAAC;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAKpC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAoC,CAAC;QAE1D,IAAI,YAAY,EAAE,CAAC;YACjB,oDAAoD;YACpD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAiB,EAAE,kBAA2B,KAAK;QAC7D,MAAM,KAAK,GAAG,eAAe;YAC3B,CAAC,CAAC,uFAAuF;YACzF,CAAC,CAAC,wGAAwG,CAAC;QAE7G,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAyB,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,cAAsB;QAC9B,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEvB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAwB,IAAI,IAAI,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,cAAsB;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEf,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,cAAsB;QACjC,kBAAkB;QAClB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3F,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACpG,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,cAAsB;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,cAAsB;QAMnC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS7B,CAAC,CAAC,GAAG,CAAC,cAAc,CAMpB,CAAC;QAEF,qBAAqB;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAEjF,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,KAAK;YACzB,YAAY,EAAE,KAAK,CAAC,UAAU;YAC9B,aAAa,EAAE,KAAK,CAAC,WAAW;YAChC,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,SAAiB,EAAE,OAAe;QAI9C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;KAU/B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,OAAO,GAAG,CAAwD,CAAC;QAEzF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,EAAE;gBACN,eAAe,EAAE,CAAC,CAAC,eAAe;gBAClC,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,eAAe,EAAE,CAAC,CAAC,eAAe;gBAClC,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,KAAK,EAAE,CAAC,CAAC,KAAK;aACf;YACD,UAAU,EAAE,CAAC,CAAC,WAAW;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAiB;QAChC,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAKvB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAwB,IAAI,IAAI,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB,EAAE,KAAc;QAC/C,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;QAEjD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,iBAAiB,CAAC,KAAa,EAAE,GAAW;QAClD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,GAAG,QAAQ,GAAG,CAAC;QACxB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACnB,OAAO,GAAG,SAAS,KAAK,QAAQ,GAAG,EAAE,GAAG,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC5C,OAAO,GAAG,QAAQ,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-store.d.ts","sourceRoot":"","sources":["../../../src/agent/memory/conversation-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAGpB,qBAAa,iBAAiB;IAChB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEzC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY;IA8BzD;;OAEG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB,eAAe,CAAC,YAAY,CAAC;IAyBhC;;OAEG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE;IAU7D;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAW7E;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,YAAY,EAAE;IAWjB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,YAAY,EAAE;IAWjB;;OAEG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,KAAK,GAAE,MAAW,GACjB,YAAY,EAAE;IAWjB;;OAEG;IACH,2BAA2B,CACzB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,YAAY,EAAE;IAYjB;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;IAUjF;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAWxE;;OAEG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAYxE;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;CAuDF"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation storage and retrieval for agent memory system
|
|
3
|
+
*/
|
|
4
|
+
import { randomUUID } from "crypto";
|
|
5
|
+
export class ConversationStore {
|
|
6
|
+
db;
|
|
7
|
+
constructor(db) {
|
|
8
|
+
this.db = db;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Store a conversation message
|
|
12
|
+
*/
|
|
13
|
+
storeConversation(input) {
|
|
14
|
+
const conversationId = input.conversation_id || randomUUID();
|
|
15
|
+
const metadata = input.metadata ? JSON.stringify(input.metadata) : null;
|
|
16
|
+
const stmt = this.db.prepare(`
|
|
17
|
+
INSERT INTO conversations (
|
|
18
|
+
session_id, conversation_id, role, message, context_type,
|
|
19
|
+
related_token_id, related_trade_id, metadata
|
|
20
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
21
|
+
`);
|
|
22
|
+
const result = stmt.run(input.session_id, conversationId, input.role, input.message, input.context_type || null, input.related_token_id || null, input.related_trade_id || null, metadata);
|
|
23
|
+
// Retrieve the inserted conversation
|
|
24
|
+
const selectStmt = this.db.prepare(`
|
|
25
|
+
SELECT * FROM conversations WHERE id = ?
|
|
26
|
+
`);
|
|
27
|
+
return selectStmt.get(result.lastInsertRowid);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get conversations by session ID with pagination
|
|
31
|
+
*/
|
|
32
|
+
getConversationsBySession(sessionId, limit = 50, offset = 0) {
|
|
33
|
+
const stmt = this.db.prepare(`
|
|
34
|
+
SELECT * FROM conversations
|
|
35
|
+
WHERE session_id = ?
|
|
36
|
+
ORDER BY timestamp DESC
|
|
37
|
+
LIMIT ? OFFSET ?
|
|
38
|
+
`);
|
|
39
|
+
const countStmt = this.db.prepare(`
|
|
40
|
+
SELECT COUNT(*) as count FROM conversations WHERE session_id = ?
|
|
41
|
+
`);
|
|
42
|
+
const items = stmt.all(sessionId, limit, offset);
|
|
43
|
+
const countResult = countStmt.get(sessionId);
|
|
44
|
+
const total = countResult.count;
|
|
45
|
+
return {
|
|
46
|
+
items,
|
|
47
|
+
total,
|
|
48
|
+
page: Math.floor(offset / limit) + 1,
|
|
49
|
+
limit,
|
|
50
|
+
hasMore: offset + limit < total,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get a specific conversation thread
|
|
55
|
+
*/
|
|
56
|
+
getConversationThread(conversationId) {
|
|
57
|
+
const stmt = this.db.prepare(`
|
|
58
|
+
SELECT * FROM conversations
|
|
59
|
+
WHERE conversation_id = ?
|
|
60
|
+
ORDER BY timestamp ASC
|
|
61
|
+
`);
|
|
62
|
+
return stmt.all(conversationId);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get recent conversations (last N messages)
|
|
66
|
+
*/
|
|
67
|
+
getRecentConversations(sessionId, limit = 10) {
|
|
68
|
+
const stmt = this.db.prepare(`
|
|
69
|
+
SELECT * FROM conversations
|
|
70
|
+
WHERE session_id = ?
|
|
71
|
+
ORDER BY timestamp DESC
|
|
72
|
+
LIMIT ?
|
|
73
|
+
`);
|
|
74
|
+
return stmt.all(sessionId, limit).reverse();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Search conversations by keyword
|
|
78
|
+
*/
|
|
79
|
+
searchConversations(sessionId, keyword, limit = 20) {
|
|
80
|
+
const stmt = this.db.prepare(`
|
|
81
|
+
SELECT * FROM conversations
|
|
82
|
+
WHERE session_id = ? AND message LIKE ?
|
|
83
|
+
ORDER BY timestamp DESC
|
|
84
|
+
LIMIT ?
|
|
85
|
+
`);
|
|
86
|
+
return stmt.all(sessionId, `%${keyword}%`, limit);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get conversations related to a specific token
|
|
90
|
+
*/
|
|
91
|
+
getTokenConversations(sessionId, tokenId, limit = 20) {
|
|
92
|
+
const stmt = this.db.prepare(`
|
|
93
|
+
SELECT * FROM conversations
|
|
94
|
+
WHERE session_id = ? AND related_token_id = ?
|
|
95
|
+
ORDER BY timestamp DESC
|
|
96
|
+
LIMIT ?
|
|
97
|
+
`);
|
|
98
|
+
return stmt.all(sessionId, tokenId, limit);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get conversations by context type
|
|
102
|
+
*/
|
|
103
|
+
getConversationsByType(sessionId, contextType, limit = 20) {
|
|
104
|
+
const stmt = this.db.prepare(`
|
|
105
|
+
SELECT * FROM conversations
|
|
106
|
+
WHERE session_id = ? AND context_type = ?
|
|
107
|
+
ORDER BY timestamp DESC
|
|
108
|
+
LIMIT ?
|
|
109
|
+
`);
|
|
110
|
+
return stmt.all(sessionId, contextType, limit);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get conversations in a date range
|
|
114
|
+
*/
|
|
115
|
+
getConversationsByDateRange(sessionId, startDate, endDate) {
|
|
116
|
+
const stmt = this.db.prepare(`
|
|
117
|
+
SELECT * FROM conversations
|
|
118
|
+
WHERE session_id = ?
|
|
119
|
+
AND timestamp >= ?
|
|
120
|
+
AND timestamp <= ?
|
|
121
|
+
ORDER BY timestamp DESC
|
|
122
|
+
`);
|
|
123
|
+
return stmt.all(sessionId, startDate, endDate);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Store a daily summary
|
|
127
|
+
*/
|
|
128
|
+
storeDailySummary(sessionId, date, summary) {
|
|
129
|
+
return this.storeConversation({
|
|
130
|
+
session_id: sessionId,
|
|
131
|
+
role: "system",
|
|
132
|
+
message: summary,
|
|
133
|
+
context_type: "daily_summary",
|
|
134
|
+
metadata: { date },
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get daily summaries
|
|
139
|
+
*/
|
|
140
|
+
getDailySummaries(sessionId, limit = 30) {
|
|
141
|
+
const stmt = this.db.prepare(`
|
|
142
|
+
SELECT * FROM conversations
|
|
143
|
+
WHERE session_id = ? AND context_type = 'daily_summary'
|
|
144
|
+
ORDER BY timestamp DESC
|
|
145
|
+
LIMIT ?
|
|
146
|
+
`);
|
|
147
|
+
return stmt.all(sessionId, limit);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Delete conversations older than a certain date
|
|
151
|
+
*/
|
|
152
|
+
deleteConversationsBefore(sessionId, beforeDate) {
|
|
153
|
+
// Don't delete daily summaries
|
|
154
|
+
const stmt = this.db.prepare(`
|
|
155
|
+
DELETE FROM conversations
|
|
156
|
+
WHERE session_id = ?
|
|
157
|
+
AND timestamp < ?
|
|
158
|
+
AND context_type != 'daily_summary'
|
|
159
|
+
`);
|
|
160
|
+
return stmt.run(sessionId, beforeDate).changes;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get conversation statistics
|
|
164
|
+
*/
|
|
165
|
+
getConversationStats(sessionId) {
|
|
166
|
+
// Total count
|
|
167
|
+
const totalResult = this.db
|
|
168
|
+
.prepare(`SELECT COUNT(*) as count FROM conversations WHERE session_id = ?`)
|
|
169
|
+
.get(sessionId);
|
|
170
|
+
// By role
|
|
171
|
+
const byRoleResult = this.db.prepare(`
|
|
172
|
+
SELECT role, COUNT(*) as count
|
|
173
|
+
FROM conversations
|
|
174
|
+
WHERE session_id = ?
|
|
175
|
+
GROUP BY role
|
|
176
|
+
`).all(sessionId);
|
|
177
|
+
const byRole = {};
|
|
178
|
+
for (const { role, count } of byRoleResult) {
|
|
179
|
+
byRole[role] = count;
|
|
180
|
+
}
|
|
181
|
+
// By type
|
|
182
|
+
const byTypeResult = this.db.prepare(`
|
|
183
|
+
SELECT context_type, COUNT(*) as count
|
|
184
|
+
FROM conversations
|
|
185
|
+
WHERE session_id = ? AND context_type IS NOT NULL
|
|
186
|
+
GROUP BY context_type
|
|
187
|
+
`).all(sessionId);
|
|
188
|
+
const byType = {};
|
|
189
|
+
for (const { context_type, count } of byTypeResult) {
|
|
190
|
+
byType[context_type] = count;
|
|
191
|
+
}
|
|
192
|
+
// Oldest and newest
|
|
193
|
+
const oldestResult = this.db.prepare(`
|
|
194
|
+
SELECT timestamp FROM conversations
|
|
195
|
+
WHERE session_id = ?
|
|
196
|
+
ORDER BY timestamp ASC
|
|
197
|
+
LIMIT 1
|
|
198
|
+
`).get(sessionId);
|
|
199
|
+
const newestResult = this.db.prepare(`
|
|
200
|
+
SELECT timestamp FROM conversations
|
|
201
|
+
WHERE session_id = ?
|
|
202
|
+
ORDER BY timestamp DESC
|
|
203
|
+
LIMIT 1
|
|
204
|
+
`).get(sessionId);
|
|
205
|
+
return {
|
|
206
|
+
total: totalResult.count,
|
|
207
|
+
byRole: byRole,
|
|
208
|
+
byType,
|
|
209
|
+
oldestMessage: oldestResult?.timestamp || null,
|
|
210
|
+
newestMessage: newestResult?.timestamp || null,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=conversation-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-store.js","sourceRoot":"","sources":["../../../src/agent/memory/conversation-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-schema.d.ts","sourceRoot":"","sources":["../../../src/agent/memory/database-schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA8OlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAiDjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA6BzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,IAAI,CA4BtG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BjG"}
|