agent-relay 1.0.7 → 1.0.9
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/README.md +176 -6
- package/dist/bridge/config.d.ts +41 -0
- package/dist/bridge/config.d.ts.map +1 -0
- package/dist/bridge/config.js +143 -0
- package/dist/bridge/config.js.map +1 -0
- package/dist/bridge/index.d.ts +10 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +10 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/multi-project-client.d.ts +99 -0
- package/dist/bridge/multi-project-client.d.ts.map +1 -0
- package/dist/bridge/multi-project-client.js +386 -0
- package/dist/bridge/multi-project-client.js.map +1 -0
- package/dist/bridge/spawner.d.ts +46 -0
- package/dist/bridge/spawner.d.ts.map +1 -0
- package/dist/bridge/spawner.js +223 -0
- package/dist/bridge/spawner.js.map +1 -0
- package/dist/bridge/types.d.ts +55 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +6 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/bridge/utils.d.ts +30 -0
- package/dist/bridge/utils.d.ts.map +1 -0
- package/dist/bridge/utils.js +54 -0
- package/dist/bridge/utils.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +906 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/daemon/agent-registry.d.ts +60 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -0
- package/dist/daemon/agent-registry.js +163 -0
- package/dist/daemon/agent-registry.js.map +1 -0
- package/dist/daemon/connection.d.ts +33 -1
- package/dist/daemon/connection.d.ts.map +1 -1
- package/dist/daemon/connection.js +86 -11
- package/dist/daemon/connection.js.map +1 -1
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +2 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/registry.d.ts +9 -0
- package/dist/daemon/registry.d.ts.map +1 -0
- package/dist/daemon/registry.js +9 -0
- package/dist/daemon/registry.js.map +1 -0
- package/dist/daemon/router.d.ts +61 -2
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +219 -4
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +9 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +135 -16
- package/dist/daemon/server.js.map +1 -1
- package/dist/dashboard/metrics.d.ts +105 -0
- package/dist/dashboard/metrics.d.ts.map +1 -0
- package/dist/dashboard/metrics.js +192 -0
- package/dist/dashboard/metrics.js.map +1 -0
- package/dist/dashboard/needs-attention.d.ts +24 -0
- package/dist/dashboard/needs-attention.d.ts.map +1 -0
- package/dist/dashboard/needs-attention.js +78 -0
- package/dist/dashboard/needs-attention.js.map +1 -0
- package/dist/dashboard/public/bridge.html +1272 -0
- package/dist/dashboard/public/index.html +2094 -347
- package/dist/dashboard/public/js/app.js +184 -0
- package/dist/dashboard/public/js/app.js.map +7 -0
- package/dist/dashboard/public/metrics.html +999 -0
- package/dist/dashboard/server.d.ts +14 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +689 -16
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/start.js +1 -1
- package/dist/dashboard/start.js.map +1 -1
- package/dist/dashboard-v2/index.d.ts +10 -0
- package/dist/dashboard-v2/index.d.ts.map +1 -0
- package/dist/dashboard-v2/index.js +54 -0
- package/dist/dashboard-v2/index.js.map +1 -0
- package/dist/dashboard-v2/lib/api.d.ts +95 -0
- package/dist/dashboard-v2/lib/api.d.ts.map +1 -0
- package/dist/dashboard-v2/lib/api.js +270 -0
- package/dist/dashboard-v2/lib/api.js.map +1 -0
- package/dist/dashboard-v2/lib/colors.d.ts +61 -0
- package/dist/dashboard-v2/lib/colors.d.ts.map +1 -0
- package/dist/dashboard-v2/lib/colors.js +198 -0
- package/dist/dashboard-v2/lib/colors.js.map +1 -0
- package/dist/dashboard-v2/lib/hierarchy.d.ts +74 -0
- package/dist/dashboard-v2/lib/hierarchy.d.ts.map +1 -0
- package/dist/dashboard-v2/lib/hierarchy.js +196 -0
- package/dist/dashboard-v2/lib/hierarchy.js.map +1 -0
- package/dist/dashboard-v2/types/index.d.ts +154 -0
- package/dist/dashboard-v2/types/index.d.ts.map +1 -0
- package/dist/dashboard-v2/types/index.js +6 -0
- package/dist/dashboard-v2/types/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/protocol/types.d.ts +15 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/storage/adapter.d.ts +74 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/adapter.js +39 -0
- package/dist/storage/adapter.js.map +1 -1
- package/dist/storage/sqlite-adapter.d.ts +92 -1
- package/dist/storage/sqlite-adapter.d.ts.map +1 -1
- package/dist/storage/sqlite-adapter.js +615 -47
- package/dist/storage/sqlite-adapter.js.map +1 -1
- package/dist/utils/agent-config.d.ts +45 -0
- package/dist/utils/agent-config.d.ts.map +1 -0
- package/dist/utils/agent-config.js +118 -0
- package/dist/utils/agent-config.js.map +1 -0
- package/dist/utils/project-namespace.d.ts.map +1 -1
- package/dist/utils/project-namespace.js +22 -1
- package/dist/utils/project-namespace.js.map +1 -1
- package/dist/wrapper/client.d.ts +30 -3
- package/dist/wrapper/client.d.ts.map +1 -1
- package/dist/wrapper/client.js +85 -9
- package/dist/wrapper/client.js.map +1 -1
- package/dist/wrapper/parser.d.ts +127 -4
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +622 -86
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/tmux-wrapper.d.ts +136 -10
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +599 -79
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/AGENTS.md +132 -27
- package/docs/ARCHITECTURE_DECISIONS.md +175 -0
- package/docs/CHANGELOG.md +1 -1
- package/docs/COMPETITIVE_ANALYSIS.md +897 -0
- package/docs/DESIGN_BRIDGE_STAFFING.md +878 -0
- package/docs/DESIGN_V2.md +1079 -0
- package/docs/INTEGRATION-GUIDE.md +926 -0
- package/docs/MONETIZATION.md +1679 -0
- package/docs/PROPOSAL-trajectories.md +1582 -0
- package/docs/PROTOCOL.md +3 -3
- package/docs/SCALING_ANALYSIS.md +280 -0
- package/docs/TMUX_IMPLEMENTATION_NOTES.md +9 -9
- package/docs/TMUX_IMPROVEMENTS.md +968 -0
- package/docs/agent-relay-snippet.md +61 -0
- package/docs/competitive-analysis-mcp-agent-mail.md +389 -0
- package/docs/dashboard-v2-plan.md +179 -0
- package/package.json +10 -3
package/dist/protocol/types.d.ts
CHANGED
|
@@ -25,13 +25,22 @@ export interface HelloPayload {
|
|
|
25
25
|
};
|
|
26
26
|
/** Optional hint about which CLI the agent is using (claude, codex, gemini, etc.) */
|
|
27
27
|
cli?: string;
|
|
28
|
+
/** Optional program identifier (e.g., 'claude', 'gpt-4o') */
|
|
29
|
+
program?: string;
|
|
30
|
+
/** Optional model identifier (e.g., 'claude-3-opus-2024') */
|
|
31
|
+
model?: string;
|
|
32
|
+
/** Optional task/role description for dashboard/registry */
|
|
33
|
+
task?: string;
|
|
34
|
+
/** Optional working directory hint for registry/dashboard */
|
|
35
|
+
workingDirectory?: string;
|
|
28
36
|
session?: {
|
|
29
37
|
resume_token?: string;
|
|
30
38
|
};
|
|
31
39
|
}
|
|
32
40
|
export interface WelcomePayload {
|
|
33
41
|
session_id: string;
|
|
34
|
-
|
|
42
|
+
/** Optional - only provided when session resume is implemented */
|
|
43
|
+
resume_token?: string;
|
|
35
44
|
server: {
|
|
36
45
|
max_frame_bytes: number;
|
|
37
46
|
heartbeat_ms: number;
|
|
@@ -41,10 +50,14 @@ export interface SendPayload {
|
|
|
41
50
|
kind: PayloadKind;
|
|
42
51
|
body: string;
|
|
43
52
|
data?: Record<string, unknown>;
|
|
53
|
+
/** Optional thread ID for grouping related messages (e.g., "feature-123", "bd-456") */
|
|
54
|
+
thread?: string;
|
|
44
55
|
}
|
|
45
56
|
export interface SendMeta {
|
|
46
57
|
requires_ack?: boolean;
|
|
47
58
|
ttl_ms?: number;
|
|
59
|
+
importance?: number;
|
|
60
|
+
replyTo?: string;
|
|
48
61
|
}
|
|
49
62
|
export interface DeliveryInfo {
|
|
50
63
|
seq: number;
|
|
@@ -95,6 +108,7 @@ export type SendEnvelope = Envelope<SendPayload> & {
|
|
|
95
108
|
};
|
|
96
109
|
export type DeliverEnvelope = Envelope<SendPayload> & {
|
|
97
110
|
delivery: DeliveryInfo;
|
|
111
|
+
payload_meta?: SendMeta;
|
|
98
112
|
};
|
|
99
113
|
export type AckEnvelope = Envelope<AckPayload>;
|
|
100
114
|
export type NackEnvelope = Envelope<NackPayload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/protocol/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,SAAS,GACT,MAAM,GACN,SAAS,GACT,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,KAAK,GACL,OAAO,GACP,MAAM,GACN,eAAe,GACf,YAAY,GACZ,WAAW,GACX,aAAa,CAAC;AAElB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,CAAC;CACZ;AAGD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE;QACZ,GAAG,EAAE,OAAO,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/protocol/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { PayloadKind } from '../protocol/types.js';
|
|
1
|
+
import type { PayloadKind, SendMeta } from '../protocol/types.js';
|
|
2
|
+
export type MessageStatus = 'unread' | 'read' | 'acked';
|
|
2
3
|
export interface StoredMessage {
|
|
3
4
|
id: string;
|
|
4
5
|
ts: number;
|
|
@@ -8,9 +9,19 @@ export interface StoredMessage {
|
|
|
8
9
|
kind: PayloadKind;
|
|
9
10
|
body: string;
|
|
10
11
|
data?: Record<string, unknown>;
|
|
12
|
+
/** Optional metadata (importance, replyTo, etc.) */
|
|
13
|
+
payloadMeta?: SendMeta;
|
|
14
|
+
/** Optional thread ID for grouping related messages */
|
|
15
|
+
thread?: string;
|
|
11
16
|
deliverySeq?: number;
|
|
12
17
|
deliverySessionId?: string;
|
|
13
18
|
sessionId?: string;
|
|
19
|
+
/** Per-recipient message status */
|
|
20
|
+
status: MessageStatus;
|
|
21
|
+
/** Whether the message is marked as urgent */
|
|
22
|
+
is_urgent: boolean;
|
|
23
|
+
/** Whether the message was sent as a broadcast (to: '*') */
|
|
24
|
+
is_broadcast?: boolean;
|
|
14
25
|
}
|
|
15
26
|
export interface MessageQuery {
|
|
16
27
|
limit?: number;
|
|
@@ -18,14 +29,69 @@ export interface MessageQuery {
|
|
|
18
29
|
from?: string;
|
|
19
30
|
to?: string;
|
|
20
31
|
topic?: string;
|
|
32
|
+
/** Filter by thread ID */
|
|
33
|
+
thread?: string;
|
|
21
34
|
order?: 'asc' | 'desc';
|
|
35
|
+
/** Only include unread messages */
|
|
36
|
+
unreadOnly?: boolean;
|
|
37
|
+
/** Only include urgent messages */
|
|
38
|
+
urgentOnly?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface StoredSession {
|
|
41
|
+
id: string;
|
|
42
|
+
agentName: string;
|
|
43
|
+
cli?: string;
|
|
44
|
+
projectId?: string;
|
|
45
|
+
projectRoot?: string;
|
|
46
|
+
startedAt: number;
|
|
47
|
+
endedAt?: number;
|
|
48
|
+
messageCount: number;
|
|
49
|
+
summary?: string;
|
|
50
|
+
resumeToken?: string;
|
|
51
|
+
/** How the session was closed: 'agent' (explicit), 'disconnect', 'error', or undefined (still active) */
|
|
52
|
+
closedBy?: 'agent' | 'disconnect' | 'error';
|
|
53
|
+
}
|
|
54
|
+
export interface SessionQuery {
|
|
55
|
+
agentName?: string;
|
|
56
|
+
projectId?: string;
|
|
57
|
+
since?: number;
|
|
58
|
+
limit?: number;
|
|
59
|
+
}
|
|
60
|
+
export interface AgentSummary {
|
|
61
|
+
agentName: string;
|
|
62
|
+
projectId?: string;
|
|
63
|
+
lastUpdated: number;
|
|
64
|
+
currentTask?: string;
|
|
65
|
+
completedTasks?: string[];
|
|
66
|
+
decisions?: string[];
|
|
67
|
+
context?: string;
|
|
68
|
+
files?: string[];
|
|
22
69
|
}
|
|
23
70
|
export interface StorageAdapter {
|
|
24
71
|
init(): Promise<void>;
|
|
25
72
|
saveMessage(message: StoredMessage): Promise<void>;
|
|
26
73
|
getMessages(query?: MessageQuery): Promise<StoredMessage[]>;
|
|
27
74
|
getMessageById?(id: string): Promise<StoredMessage | null>;
|
|
75
|
+
updateMessageStatus?(id: string, status: MessageStatus): Promise<void>;
|
|
28
76
|
close?(): Promise<void>;
|
|
77
|
+
startSession?(session: Omit<StoredSession, 'messageCount'>): Promise<void>;
|
|
78
|
+
endSession?(sessionId: string, options?: {
|
|
79
|
+
summary?: string;
|
|
80
|
+
closedBy?: 'agent' | 'disconnect' | 'error';
|
|
81
|
+
}): Promise<void>;
|
|
82
|
+
getSessions?(query?: SessionQuery): Promise<StoredSession[]>;
|
|
83
|
+
getRecentSessions?(limit?: number): Promise<StoredSession[]>;
|
|
84
|
+
incrementSessionMessageCount?(sessionId: string): Promise<void>;
|
|
85
|
+
getSessionByResumeToken?(resumeToken: string): Promise<StoredSession | null>;
|
|
86
|
+
saveAgentSummary?(summary: Omit<AgentSummary, 'lastUpdated'>): Promise<void>;
|
|
87
|
+
getAgentSummary?(agentName: string): Promise<AgentSummary | null>;
|
|
88
|
+
getAllAgentSummaries?(): Promise<AgentSummary[]>;
|
|
89
|
+
getPendingMessagesForSession?(agentName: string, sessionId: string): Promise<StoredMessage[]>;
|
|
90
|
+
getMaxSeqByStream?(agentName: string, sessionId: string): Promise<Array<{
|
|
91
|
+
peer: string;
|
|
92
|
+
topic?: string;
|
|
93
|
+
maxSeq: number;
|
|
94
|
+
}>>;
|
|
29
95
|
}
|
|
30
96
|
/**
|
|
31
97
|
* Storage configuration options.
|
|
@@ -49,6 +115,13 @@ export declare class MemoryStorageAdapter implements StorageAdapter {
|
|
|
49
115
|
saveMessage(message: StoredMessage): Promise<void>;
|
|
50
116
|
getMessages(query?: MessageQuery): Promise<StoredMessage[]>;
|
|
51
117
|
getMessageById(id: string): Promise<StoredMessage | null>;
|
|
118
|
+
updateMessageStatus(id: string, status: MessageStatus): Promise<void>;
|
|
119
|
+
getPendingMessagesForSession(agentName: string, sessionId: string): Promise<StoredMessage[]>;
|
|
120
|
+
getMaxSeqByStream(agentName: string, sessionId: string): Promise<Array<{
|
|
121
|
+
peer: string;
|
|
122
|
+
topic?: string;
|
|
123
|
+
maxSeq: number;
|
|
124
|
+
}>>;
|
|
52
125
|
close(): Promise<void>;
|
|
53
126
|
}
|
|
54
127
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/storage/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/storage/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/adapter.js
CHANGED
|
@@ -25,6 +25,9 @@ export class MemoryStorageAdapter {
|
|
|
25
25
|
if (query?.topic) {
|
|
26
26
|
result = result.filter(m => m.topic === query.topic);
|
|
27
27
|
}
|
|
28
|
+
if (query?.thread) {
|
|
29
|
+
result = result.filter(m => m.thread === query.thread);
|
|
30
|
+
}
|
|
28
31
|
if (query?.sinceTs) {
|
|
29
32
|
result = result.filter(m => m.ts >= query.sinceTs);
|
|
30
33
|
}
|
|
@@ -43,6 +46,42 @@ export class MemoryStorageAdapter {
|
|
|
43
46
|
// Support both exact match and prefix match (for short IDs)
|
|
44
47
|
return this.messages.find(m => m.id === id || m.id.startsWith(id)) ?? null;
|
|
45
48
|
}
|
|
49
|
+
async updateMessageStatus(id, status) {
|
|
50
|
+
const msg = this.messages.find(m => m.id === id || m.id.startsWith(id));
|
|
51
|
+
if (msg) {
|
|
52
|
+
msg.status = status;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async getPendingMessagesForSession(agentName, sessionId) {
|
|
56
|
+
return this.messages
|
|
57
|
+
.filter(m => m.to === agentName && m.deliverySessionId === sessionId && m.status !== 'acked')
|
|
58
|
+
.sort((a, b) => {
|
|
59
|
+
const seqA = mSeq(a);
|
|
60
|
+
const seqB = mSeq(b);
|
|
61
|
+
return seqA === seqB ? a.ts - b.ts : seqA - seqB;
|
|
62
|
+
});
|
|
63
|
+
function mSeq(msg) {
|
|
64
|
+
return msg.deliverySeq ?? 0;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async getMaxSeqByStream(agentName, sessionId) {
|
|
68
|
+
const aggregates = new Map();
|
|
69
|
+
for (const msg of this.messages) {
|
|
70
|
+
if (msg.to !== agentName)
|
|
71
|
+
continue;
|
|
72
|
+
if (msg.deliverySessionId !== sessionId)
|
|
73
|
+
continue;
|
|
74
|
+
if (msg.deliverySeq === undefined || msg.deliverySeq === null)
|
|
75
|
+
continue;
|
|
76
|
+
const topic = msg.topic ?? 'default';
|
|
77
|
+
const key = `${topic}:${msg.from}`;
|
|
78
|
+
const current = aggregates.get(key);
|
|
79
|
+
if (!current || msg.deliverySeq > current.maxSeq) {
|
|
80
|
+
aggregates.set(key, { peer: msg.from, topic: msg.topic, maxSeq: msg.deliverySeq });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return Array.from(aggregates.values());
|
|
84
|
+
}
|
|
46
85
|
async close() {
|
|
47
86
|
this.messages = [];
|
|
48
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/storage/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/storage/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,107 @@
|
|
|
1
|
-
import { type MessageQuery, type StorageAdapter, type StoredMessage } from './adapter.js';
|
|
1
|
+
import { type AgentSummary, type MessageQuery, type MessageStatus, type SessionQuery, type StorageAdapter, type StoredMessage, type StoredSession } from './adapter.js';
|
|
2
2
|
export interface SqliteAdapterOptions {
|
|
3
3
|
dbPath: string;
|
|
4
|
+
/** Message retention period in milliseconds (default: 7 days) */
|
|
5
|
+
messageRetentionMs?: number;
|
|
6
|
+
/** Auto-cleanup interval in milliseconds (default: 1 hour, 0 to disable) */
|
|
7
|
+
cleanupIntervalMs?: number;
|
|
4
8
|
}
|
|
9
|
+
export type { StoredSession, SessionQuery } from './adapter.js';
|
|
5
10
|
export declare class SqliteStorageAdapter implements StorageAdapter {
|
|
6
11
|
private dbPath;
|
|
7
12
|
private db?;
|
|
8
13
|
private insertStmt?;
|
|
14
|
+
private insertSessionStmt?;
|
|
15
|
+
private driver?;
|
|
16
|
+
private retentionMs;
|
|
17
|
+
private cleanupIntervalMs;
|
|
18
|
+
private cleanupTimer?;
|
|
9
19
|
constructor(options: SqliteAdapterOptions);
|
|
20
|
+
private resolvePreferredDriver;
|
|
21
|
+
private openDatabase;
|
|
10
22
|
init(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Start the automatic cleanup timer
|
|
25
|
+
*/
|
|
26
|
+
private startCleanupTimer;
|
|
27
|
+
/**
|
|
28
|
+
* Clean up messages older than the retention period
|
|
29
|
+
* @returns Number of messages deleted
|
|
30
|
+
*/
|
|
31
|
+
cleanupExpiredMessages(): Promise<number>;
|
|
32
|
+
/**
|
|
33
|
+
* Get storage statistics
|
|
34
|
+
*/
|
|
35
|
+
getStats(): Promise<{
|
|
36
|
+
messageCount: number;
|
|
37
|
+
sessionCount: number;
|
|
38
|
+
oldestMessageTs?: number;
|
|
39
|
+
}>;
|
|
11
40
|
saveMessage(message: StoredMessage): Promise<void>;
|
|
12
41
|
getMessages(query?: MessageQuery): Promise<StoredMessage[]>;
|
|
42
|
+
updateMessageStatus(id: string, status: MessageStatus): Promise<void>;
|
|
13
43
|
getMessageById(id: string): Promise<StoredMessage | null>;
|
|
44
|
+
getPendingMessagesForSession(agentName: string, sessionId: string): Promise<StoredMessage[]>;
|
|
45
|
+
getMaxSeqByStream(agentName: string, sessionId: string): Promise<Array<{
|
|
46
|
+
peer: string;
|
|
47
|
+
topic?: string;
|
|
48
|
+
maxSeq: number;
|
|
49
|
+
}>>;
|
|
14
50
|
close(): Promise<void>;
|
|
51
|
+
startSession(session: Omit<StoredSession, 'messageCount'>): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* End a session and optionally set a summary.
|
|
54
|
+
*
|
|
55
|
+
* Note: The summary uses COALESCE(?, summary) - if a summary was previously
|
|
56
|
+
* set (e.g., during startSession or a prior endSession call), passing null/undefined
|
|
57
|
+
* for summary will preserve the existing value rather than clearing it.
|
|
58
|
+
* To explicitly clear a summary, pass an empty string.
|
|
59
|
+
*/
|
|
60
|
+
endSession(sessionId: string, options?: {
|
|
61
|
+
summary?: string;
|
|
62
|
+
closedBy?: 'agent' | 'disconnect' | 'error';
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
incrementSessionMessageCount(sessionId: string): Promise<void>;
|
|
65
|
+
getSessions(query?: SessionQuery): Promise<StoredSession[]>;
|
|
66
|
+
getRecentSessions(limit?: number): Promise<StoredSession[]>;
|
|
67
|
+
getSessionByResumeToken(resumeToken: string): Promise<StoredSession | null>;
|
|
68
|
+
saveAgentSummary(summary: {
|
|
69
|
+
agentName: string;
|
|
70
|
+
projectId?: string;
|
|
71
|
+
currentTask?: string;
|
|
72
|
+
completedTasks?: string[];
|
|
73
|
+
decisions?: string[];
|
|
74
|
+
context?: string;
|
|
75
|
+
files?: string[];
|
|
76
|
+
}): Promise<void>;
|
|
77
|
+
getAgentSummary(agentName: string): Promise<AgentSummary | null>;
|
|
78
|
+
getAllAgentSummaries(): Promise<AgentSummary[]>;
|
|
79
|
+
updatePresence(presence: {
|
|
80
|
+
agentName: string;
|
|
81
|
+
status: 'online' | 'away' | 'busy' | 'offline';
|
|
82
|
+
statusText?: string;
|
|
83
|
+
typingIn?: string;
|
|
84
|
+
}): Promise<void>;
|
|
85
|
+
getPresence(agentName: string): Promise<{
|
|
86
|
+
agentName: string;
|
|
87
|
+
status: 'online' | 'away' | 'busy' | 'offline';
|
|
88
|
+
statusText?: string;
|
|
89
|
+
lastActivity: number;
|
|
90
|
+
typingIn?: string;
|
|
91
|
+
} | null>;
|
|
92
|
+
getAllPresence(): Promise<Array<{
|
|
93
|
+
agentName: string;
|
|
94
|
+
status: 'online' | 'away' | 'busy' | 'offline';
|
|
95
|
+
statusText?: string;
|
|
96
|
+
lastActivity: number;
|
|
97
|
+
typingIn?: string;
|
|
98
|
+
}>>;
|
|
99
|
+
setTypingIndicator(agentName: string, channel: string | null): Promise<void>;
|
|
100
|
+
updateReadState(agentName: string, channel: string, lastReadTs: number, lastReadId?: string): Promise<void>;
|
|
101
|
+
getReadState(agentName: string, channel: string): Promise<{
|
|
102
|
+
lastReadTs: number;
|
|
103
|
+
lastReadId?: string;
|
|
104
|
+
} | null>;
|
|
105
|
+
getUnreadCounts(agentName: string): Promise<Record<string, number>>;
|
|
15
106
|
}
|
|
16
107
|
//# sourceMappingURL=sqlite-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|