agorai 0.2.3 → 0.4.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/README.md +17 -6
- package/dist/agent/internal-agent.d.ts.map +1 -1
- package/dist/agent/internal-agent.js +39 -2
- package/dist/agent/internal-agent.js.map +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/bridge/server.js +175 -16
- package/dist/bridge/server.js.map +1 -1
- package/dist/bridge/tools.d.ts +3 -0
- package/dist/bridge/tools.d.ts.map +1 -1
- package/dist/bridge/tools.js +2 -1
- package/dist/bridge/tools.js.map +1 -1
- package/dist/cli.js +228 -9
- package/dist/cli.js.map +1 -1
- package/dist/config-manager.d.ts +99 -0
- package/dist/config-manager.d.ts.map +1 -0
- package/dist/config-manager.js +227 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/store/events.d.ts +23 -0
- package/dist/store/events.d.ts.map +1 -0
- package/dist/store/events.js +28 -0
- package/dist/store/events.js.map +1 -0
- package/dist/store/interfaces.d.ts +5 -1
- package/dist/store/interfaces.d.ts.map +1 -1
- package/dist/store/sqlite.d.ts +9 -2
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +168 -13
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/types.d.ts +26 -0
- package/dist/store/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config manager — programmatic CRUD for agents in agorai.config.json.
|
|
3
|
+
*
|
|
4
|
+
* Reads/writes raw JSON (no Zod parsing) to preserve user formatting and extra fields.
|
|
5
|
+
* Handles both bridge.apiKeys[] (auth) and agents[] (adapter config) in sync.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
8
|
+
import { resolve } from "node:path";
|
|
9
|
+
import { randomBytes } from "node:crypto";
|
|
10
|
+
/** Types that require an agents[] entry (have their own adapter config) */
|
|
11
|
+
const ADAPTER_TYPES = new Set(["openai-compat", "ollama"]);
|
|
12
|
+
// --- Config file discovery ---
|
|
13
|
+
const CONFIG_FILENAMES = ["agorai.config.json", ".agorairc.json"];
|
|
14
|
+
/**
|
|
15
|
+
* Find the config file path in cwd.
|
|
16
|
+
* Throws if no config file exists.
|
|
17
|
+
*/
|
|
18
|
+
export function findConfigPath() {
|
|
19
|
+
for (const filename of CONFIG_FILENAMES) {
|
|
20
|
+
const fullPath = resolve(process.cwd(), filename);
|
|
21
|
+
if (existsSync(fullPath)) {
|
|
22
|
+
return fullPath;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
throw new Error("No agorai.config.json found in current directory. Run 'agorai init' first.");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Load raw JSON config without Zod validation (preserves all fields).
|
|
29
|
+
*/
|
|
30
|
+
export function loadRawConfig(configPath) {
|
|
31
|
+
const path = configPath ?? findConfigPath();
|
|
32
|
+
const content = readFileSync(path, "utf-8");
|
|
33
|
+
return JSON.parse(content);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Write config back to disk with consistent formatting.
|
|
37
|
+
*/
|
|
38
|
+
export function saveConfig(config, configPath) {
|
|
39
|
+
const path = configPath ?? findConfigPath();
|
|
40
|
+
writeFileSync(path, JSON.stringify(config, null, 2) + "\n");
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Generate a random pass-key (base64url, 24 bytes = 32 chars).
|
|
44
|
+
*/
|
|
45
|
+
export function generatePassKey() {
|
|
46
|
+
return randomBytes(24).toString("base64url");
|
|
47
|
+
}
|
|
48
|
+
// --- Agent CRUD ---
|
|
49
|
+
/**
|
|
50
|
+
* Add an agent to the config.
|
|
51
|
+
* Creates a bridge.apiKeys[] entry (always) and an agents[] entry (for adapter types).
|
|
52
|
+
* Returns the generated pass-key for display.
|
|
53
|
+
*/
|
|
54
|
+
export function addAgent(opts, configPath) {
|
|
55
|
+
const config = loadRawConfig(configPath);
|
|
56
|
+
// Ensure bridge section exists
|
|
57
|
+
if (!config.bridge) {
|
|
58
|
+
config.bridge = { apiKeys: [] };
|
|
59
|
+
}
|
|
60
|
+
if (!config.bridge.apiKeys) {
|
|
61
|
+
config.bridge.apiKeys = [];
|
|
62
|
+
}
|
|
63
|
+
if (!config.agents) {
|
|
64
|
+
config.agents = [];
|
|
65
|
+
}
|
|
66
|
+
// Check for duplicate name in bridge.apiKeys
|
|
67
|
+
const existing = config.bridge.apiKeys.find((k) => k.agent === opts.name);
|
|
68
|
+
if (existing) {
|
|
69
|
+
throw new Error(`Agent "${opts.name}" already exists`);
|
|
70
|
+
}
|
|
71
|
+
// Also check agents[]
|
|
72
|
+
const existingAgent = config.agents.find((a) => a.name === opts.name);
|
|
73
|
+
if (existingAgent) {
|
|
74
|
+
throw new Error(`Agent "${opts.name}" already exists in agents[]`);
|
|
75
|
+
}
|
|
76
|
+
// Generate pass-key
|
|
77
|
+
const passKey = generatePassKey();
|
|
78
|
+
// Validate env var (warn only)
|
|
79
|
+
let envVarWarning;
|
|
80
|
+
if (opts.apiKeyEnv && !process.env[opts.apiKeyEnv]) {
|
|
81
|
+
envVarWarning = opts.apiKeyEnv;
|
|
82
|
+
}
|
|
83
|
+
// Add to bridge.apiKeys
|
|
84
|
+
const apiKeyEntry = {
|
|
85
|
+
key: passKey,
|
|
86
|
+
agent: opts.name,
|
|
87
|
+
type: opts.type,
|
|
88
|
+
clearanceLevel: opts.clearance ?? "team",
|
|
89
|
+
};
|
|
90
|
+
config.bridge.apiKeys.push(apiKeyEntry);
|
|
91
|
+
// Add to agents[] for adapter types
|
|
92
|
+
if (ADAPTER_TYPES.has(opts.type)) {
|
|
93
|
+
const agentEntry = {
|
|
94
|
+
name: opts.name,
|
|
95
|
+
type: opts.type,
|
|
96
|
+
enabled: true,
|
|
97
|
+
};
|
|
98
|
+
if (opts.model)
|
|
99
|
+
agentEntry.model = opts.model;
|
|
100
|
+
if (opts.endpoint)
|
|
101
|
+
agentEntry.endpoint = opts.endpoint;
|
|
102
|
+
if (opts.apiKeyEnv)
|
|
103
|
+
agentEntry.apiKeyEnv = opts.apiKeyEnv;
|
|
104
|
+
config.agents.push(agentEntry);
|
|
105
|
+
}
|
|
106
|
+
saveConfig(config, configPath);
|
|
107
|
+
return { passKey };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* List all agents by merging bridge.apiKeys[] and agents[].
|
|
111
|
+
*/
|
|
112
|
+
export function listAgents(configPath) {
|
|
113
|
+
const config = loadRawConfig(configPath);
|
|
114
|
+
const apiKeys = config.bridge?.apiKeys ?? [];
|
|
115
|
+
const agents = config.agents ?? [];
|
|
116
|
+
// Build a map of agents[] entries by name
|
|
117
|
+
const agentMap = new Map();
|
|
118
|
+
for (const a of agents) {
|
|
119
|
+
agentMap.set(a.name, a);
|
|
120
|
+
}
|
|
121
|
+
const result = [];
|
|
122
|
+
for (const key of apiKeys) {
|
|
123
|
+
const agentEntry = agentMap.get(key.agent);
|
|
124
|
+
result.push({
|
|
125
|
+
name: key.agent,
|
|
126
|
+
type: key.type ?? "custom",
|
|
127
|
+
model: agentEntry?.model ?? null,
|
|
128
|
+
endpoint: agentEntry?.endpoint ?? null,
|
|
129
|
+
apiKeyEnv: agentEntry?.apiKeyEnv ?? null,
|
|
130
|
+
apiKeySet: agentEntry?.apiKeyEnv
|
|
131
|
+
? !!process.env[agentEntry.apiKeyEnv]
|
|
132
|
+
: true, // no env var needed
|
|
133
|
+
clearance: key.clearanceLevel ?? "team",
|
|
134
|
+
enabled: agentEntry?.enabled !== false,
|
|
135
|
+
});
|
|
136
|
+
// Remove from map so we can detect orphan agents
|
|
137
|
+
agentMap.delete(key.agent);
|
|
138
|
+
}
|
|
139
|
+
// Add orphan agents (in agents[] but not in bridge.apiKeys[])
|
|
140
|
+
for (const [, agentEntry] of agentMap) {
|
|
141
|
+
result.push({
|
|
142
|
+
name: agentEntry.name,
|
|
143
|
+
type: agentEntry.type ?? "unknown",
|
|
144
|
+
model: agentEntry.model ?? null,
|
|
145
|
+
endpoint: agentEntry.endpoint ?? null,
|
|
146
|
+
apiKeyEnv: agentEntry.apiKeyEnv ?? null,
|
|
147
|
+
apiKeySet: agentEntry.apiKeyEnv
|
|
148
|
+
? !!process.env[agentEntry.apiKeyEnv]
|
|
149
|
+
: true,
|
|
150
|
+
clearance: "team",
|
|
151
|
+
enabled: agentEntry.enabled !== false,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Update an existing agent's configuration.
|
|
158
|
+
*/
|
|
159
|
+
export function updateAgent(name, opts, configPath) {
|
|
160
|
+
const config = loadRawConfig(configPath);
|
|
161
|
+
const changes = [];
|
|
162
|
+
// Find in bridge.apiKeys
|
|
163
|
+
const apiKeyEntry = config.bridge?.apiKeys?.find((k) => k.agent === name);
|
|
164
|
+
// Find in agents[]
|
|
165
|
+
const agentEntry = config.agents?.find((a) => a.name === name);
|
|
166
|
+
if (!apiKeyEntry && !agentEntry) {
|
|
167
|
+
throw new Error(`Agent "${name}" not found`);
|
|
168
|
+
}
|
|
169
|
+
// Update clearance in bridge.apiKeys
|
|
170
|
+
if (opts.clearance !== undefined && apiKeyEntry) {
|
|
171
|
+
const old = apiKeyEntry.clearanceLevel ?? "team";
|
|
172
|
+
apiKeyEntry.clearanceLevel = opts.clearance;
|
|
173
|
+
changes.push(`clearance: ${old} → ${opts.clearance}`);
|
|
174
|
+
}
|
|
175
|
+
// Update adapter fields in agents[]
|
|
176
|
+
if (agentEntry) {
|
|
177
|
+
if (opts.model !== undefined) {
|
|
178
|
+
const old = agentEntry.model ?? "(none)";
|
|
179
|
+
agentEntry.model = opts.model;
|
|
180
|
+
changes.push(`model: ${old} → ${opts.model}`);
|
|
181
|
+
}
|
|
182
|
+
if (opts.endpoint !== undefined) {
|
|
183
|
+
const old = agentEntry.endpoint ?? "(none)";
|
|
184
|
+
agentEntry.endpoint = opts.endpoint;
|
|
185
|
+
changes.push(`endpoint: ${old} → ${opts.endpoint}`);
|
|
186
|
+
}
|
|
187
|
+
if (opts.apiKeyEnv !== undefined) {
|
|
188
|
+
const old = agentEntry.apiKeyEnv ?? "(none)";
|
|
189
|
+
agentEntry.apiKeyEnv = opts.apiKeyEnv;
|
|
190
|
+
changes.push(`apiKeyEnv: ${old} → ${opts.apiKeyEnv}`);
|
|
191
|
+
if (!process.env[opts.apiKeyEnv]) {
|
|
192
|
+
changes.push(`⚠ env var ${opts.apiKeyEnv} is not set`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (opts.enabled !== undefined) {
|
|
196
|
+
const old = agentEntry.enabled !== false;
|
|
197
|
+
agentEntry.enabled = opts.enabled;
|
|
198
|
+
changes.push(`enabled: ${old} → ${opts.enabled}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (changes.length === 0) {
|
|
202
|
+
throw new Error("No changes specified");
|
|
203
|
+
}
|
|
204
|
+
saveConfig(config, configPath);
|
|
205
|
+
return { changes };
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Remove an agent from both bridge.apiKeys[] and agents[].
|
|
209
|
+
*/
|
|
210
|
+
export function removeAgent(name, configPath) {
|
|
211
|
+
const config = loadRawConfig(configPath);
|
|
212
|
+
const apiKeyIdx = config.bridge?.apiKeys?.findIndex((k) => k.agent === name);
|
|
213
|
+
const agentIdx = config.agents?.findIndex((a) => a.name === name);
|
|
214
|
+
const foundInApiKeys = apiKeyIdx !== undefined && apiKeyIdx >= 0;
|
|
215
|
+
const foundInAgents = agentIdx !== undefined && agentIdx >= 0;
|
|
216
|
+
if (!foundInApiKeys && !foundInAgents) {
|
|
217
|
+
throw new Error(`Agent "${name}" not found`);
|
|
218
|
+
}
|
|
219
|
+
if (foundInApiKeys && config.bridge?.apiKeys) {
|
|
220
|
+
config.bridge.apiKeys.splice(apiKeyIdx, 1);
|
|
221
|
+
}
|
|
222
|
+
if (foundInAgents && config.agents) {
|
|
223
|
+
config.agents.splice(agentIdx, 1);
|
|
224
|
+
}
|
|
225
|
+
saveConfig(config, configPath);
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=config-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* your own Node.js application).
|
|
7
7
|
*/
|
|
8
8
|
export { SqliteStore } from "./store/sqlite.js";
|
|
9
|
+
export { StoreEventBus } from "./store/events.js";
|
|
10
|
+
export type { MessageCreatedEvent } from "./store/events.js";
|
|
9
11
|
export type { IStore } from "./store/interfaces.js";
|
|
10
|
-
export type { Agent, AgentRegistration, Project, CreateProject, Conversation, CreateConversation, Message, CreateMessage, GetMessagesOptions, MemoryEntry, CreateMemoryEntry, MemoryFilters, Subscription, SubscribeOptions, VisibilityLevel, } from "./store/types.js";
|
|
12
|
+
export type { Agent, AgentRegistration, AgentHighWaterMark, Project, CreateProject, Conversation, CreateConversation, Message, CreateMessage, GetMessagesOptions, MemoryEntry, CreateMemoryEntry, MemoryFilters, Subscription, SubscribeOptions, VisibilityLevel, BridgeMetadata, BridgeInstructions, ConfidentialityMode, } from "./store/types.js";
|
|
11
13
|
export { startBridgeServer } from "./bridge/server.js";
|
|
12
14
|
export { ApiKeyAuthProvider, hashApiKey } from "./bridge/auth.js";
|
|
13
15
|
export type { AuthResult, IAuthProvider } from "./bridge/auth.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
// --- Store ---
|
|
9
9
|
export { SqliteStore } from "./store/sqlite.js";
|
|
10
|
+
export { StoreEventBus } from "./store/events.js";
|
|
10
11
|
// --- Bridge ---
|
|
11
12
|
export { startBridgeServer } from "./bridge/server.js";
|
|
12
13
|
export { ApiKeyAuthProvider, hashApiKey } from "./bridge/auth.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAyBlD,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIlE,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGzD,yBAAyB;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store event bus — typed EventEmitter for store mutations.
|
|
3
|
+
*
|
|
4
|
+
* Emits events when the store is mutated, enabling reactive patterns
|
|
5
|
+
* like SSE push notifications without polling.
|
|
6
|
+
*
|
|
7
|
+
* MVP: single event type `message:created`.
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from "node:events";
|
|
10
|
+
import type { Message } from "./types.js";
|
|
11
|
+
export interface MessageCreatedEvent {
|
|
12
|
+
message: Message;
|
|
13
|
+
}
|
|
14
|
+
export declare class StoreEventBus extends EventEmitter {
|
|
15
|
+
constructor();
|
|
16
|
+
/** Emit after a message is inserted into the store. */
|
|
17
|
+
emitMessage(message: Message): void;
|
|
18
|
+
/** Subscribe to new message events. */
|
|
19
|
+
onMessage(listener: (event: MessageCreatedEvent) => void): this;
|
|
20
|
+
/** Unsubscribe from new message events. */
|
|
21
|
+
offMessage(listener: (event: MessageCreatedEvent) => void): this;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAc,SAAQ,YAAY;;IAM7C,uDAAuD;IACvD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,uCAAuC;IACvC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAI/D,2CAA2C;IAC3C,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;CAGjE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store event bus — typed EventEmitter for store mutations.
|
|
3
|
+
*
|
|
4
|
+
* Emits events when the store is mutated, enabling reactive patterns
|
|
5
|
+
* like SSE push notifications without polling.
|
|
6
|
+
*
|
|
7
|
+
* MVP: single event type `message:created`.
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from "node:events";
|
|
10
|
+
export class StoreEventBus extends EventEmitter {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.setMaxListeners(0); // intentional pub/sub — many subscribers expected
|
|
14
|
+
}
|
|
15
|
+
/** Emit after a message is inserted into the store. */
|
|
16
|
+
emitMessage(message) {
|
|
17
|
+
this.emit("message:created", { message });
|
|
18
|
+
}
|
|
19
|
+
/** Subscribe to new message events. */
|
|
20
|
+
onMessage(listener) {
|
|
21
|
+
return this.on("message:created", listener);
|
|
22
|
+
}
|
|
23
|
+
/** Unsubscribe from new message events. */
|
|
24
|
+
offMessage(listener) {
|
|
25
|
+
return this.off("message:created", listener);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAC7E,CAAC;IAED,uDAAuD;IACvD,WAAW,CAAC,OAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAgC,CAAC,CAAC;IAC1E,CAAC;IAED,uCAAuC;IACvC,SAAS,CAAC,QAA8C;QACtD,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,2CAA2C;IAC3C,UAAU,CAAC,QAA8C;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* The store looks up the agent's `clearanceLevel` and filters results automatically.
|
|
6
6
|
* The agent never knows hidden data exists.
|
|
7
7
|
*/
|
|
8
|
-
import type { Agent, AgentRegistration, Project, CreateProject, MemoryEntry, CreateMemoryEntry, MemoryFilters, Conversation, CreateConversation, Subscription, SubscribeOptions, Message, CreateMessage, GetMessagesOptions } from "./types.js";
|
|
8
|
+
import type { Agent, AgentRegistration, AgentHighWaterMark, Project, CreateProject, MemoryEntry, CreateMemoryEntry, MemoryFilters, Conversation, CreateConversation, Subscription, SubscribeOptions, Message, CreateMessage, GetMessagesOptions } from "./types.js";
|
|
9
|
+
import type { StoreEventBus } from "./events.js";
|
|
9
10
|
export interface IStore {
|
|
11
|
+
/** Event bus for reactive notifications. Optional for backward compat. */
|
|
12
|
+
readonly eventBus?: StoreEventBus;
|
|
10
13
|
registerAgent(agent: AgentRegistration): Promise<Agent>;
|
|
11
14
|
getAgent(id: string): Promise<Agent | null>;
|
|
12
15
|
getAgentByApiKey(keyHash: string): Promise<Agent | null>;
|
|
@@ -31,6 +34,7 @@ export interface IStore {
|
|
|
31
34
|
getMessages(conversationId: string, agentId: string, opts?: GetMessagesOptions): Promise<Message[]>;
|
|
32
35
|
markRead(messageIds: string[], agentId: string): Promise<void>;
|
|
33
36
|
getUnreadCount(agentId: string): Promise<number>;
|
|
37
|
+
getHighWaterMark(agentId: string, projectId: string): Promise<AgentHighWaterMark | null>;
|
|
34
38
|
initialize(): Promise<void>;
|
|
35
39
|
close(): Promise<void>;
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/store/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/store/interfaces.ts"],"names":[],"mappings":"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"}
|
package/dist/store/sqlite.d.ts
CHANGED
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
* Visibility is stored as text and compared via integer mapping.
|
|
6
6
|
*/
|
|
7
7
|
import type { IStore } from "./interfaces.js";
|
|
8
|
-
import
|
|
8
|
+
import { StoreEventBus } from "./events.js";
|
|
9
|
+
import type { Agent, AgentRegistration, AgentHighWaterMark, Project, CreateProject, MemoryEntry, CreateMemoryEntry, MemoryFilters, Conversation, CreateConversation, Subscription, SubscribeOptions, Message, CreateMessage, GetMessagesOptions } from "./types.js";
|
|
9
10
|
export declare class SqliteStore implements IStore {
|
|
10
11
|
private db;
|
|
11
|
-
|
|
12
|
+
readonly eventBus: StoreEventBus;
|
|
13
|
+
constructor(dbPath: string, eventBus?: StoreEventBus);
|
|
12
14
|
initialize(): Promise<void>;
|
|
13
15
|
close(): Promise<void>;
|
|
16
|
+
private migrateSchema;
|
|
14
17
|
private getAgentClearance;
|
|
15
18
|
private rowToAgent;
|
|
16
19
|
registerAgent(agent: AgentRegistration): Promise<Agent>;
|
|
@@ -36,8 +39,12 @@ export declare class SqliteStore implements IStore {
|
|
|
36
39
|
unsubscribe(conversationId: string, agentId: string): Promise<void>;
|
|
37
40
|
getSubscribers(conversationId: string): Promise<Subscription[]>;
|
|
38
41
|
isSubscribed(conversationId: string, agentId: string): Promise<boolean>;
|
|
42
|
+
private getConfidentialityInstructions;
|
|
43
|
+
private getProjectConfidentialityMode;
|
|
39
44
|
sendMessage(msg: CreateMessage): Promise<Message>;
|
|
40
45
|
getMessages(conversationId: string, agentId: string, opts?: GetMessagesOptions): Promise<Message[]>;
|
|
46
|
+
private updateHighWaterMark;
|
|
47
|
+
getHighWaterMark(agentId: string, projectId: string): Promise<AgentHighWaterMark | null>;
|
|
41
48
|
markRead(messageIds: string[], agentId: string): Promise<void>;
|
|
42
49
|
getUnreadCount(agentId: string): Promise<number>;
|
|
43
50
|
private rowToMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/store/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,kBAAkB,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/store/sqlite.ts"],"names":[],"mappings":"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"}
|