@mcoda/db 0.1.27 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/migrations/global/GlobalMigrations.d.ts.map +1 -1
- package/dist/migrations/global/GlobalMigrations.js +39 -0
- package/dist/repositories/global/GlobalRepository.d.ts +4 -1
- package/dist/repositories/global/GlobalRepository.d.ts.map +1 -1
- package/dist/repositories/global/GlobalRepository.js +63 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalMigrations.d.ts","sourceRoot":"","sources":["../../../src/migrations/global/GlobalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC;;;GAGG;AACH,qBAAa,gBAAgB;WACd,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"GlobalMigrations.d.ts","sourceRoot":"","sources":["../../../src/migrations/global/GlobalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC;;;GAGG;AACH,qBAAa,gBAAgB;WACd,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA4gB9C"}
|
|
@@ -71,6 +71,22 @@ export class GlobalMigrations {
|
|
|
71
71
|
PRIMARY KEY (agent_id, model_name)
|
|
72
72
|
);
|
|
73
73
|
|
|
74
|
+
CREATE TABLE IF NOT EXISTS agent_usage_limits (
|
|
75
|
+
id TEXT PRIMARY KEY,
|
|
76
|
+
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
77
|
+
limit_scope TEXT NOT NULL,
|
|
78
|
+
limit_key TEXT NOT NULL,
|
|
79
|
+
window_type TEXT NOT NULL,
|
|
80
|
+
status TEXT NOT NULL,
|
|
81
|
+
reset_at TEXT,
|
|
82
|
+
observed_at TEXT NOT NULL,
|
|
83
|
+
source TEXT,
|
|
84
|
+
details_json TEXT,
|
|
85
|
+
created_at TEXT NOT NULL,
|
|
86
|
+
updated_at TEXT NOT NULL,
|
|
87
|
+
UNIQUE(agent_id, limit_scope, limit_key, window_type)
|
|
88
|
+
);
|
|
89
|
+
|
|
74
90
|
CREATE TABLE IF NOT EXISTS workspace_defaults (
|
|
75
91
|
workspace_id TEXT NOT NULL,
|
|
76
92
|
command_name TEXT NOT NULL,
|
|
@@ -140,9 +156,31 @@ export class GlobalMigrations {
|
|
|
140
156
|
raw_review_json TEXT,
|
|
141
157
|
created_at TEXT NOT NULL
|
|
142
158
|
);
|
|
159
|
+
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_agent_usage_limits_agent_id
|
|
161
|
+
ON agent_usage_limits(agent_id);
|
|
143
162
|
`);
|
|
144
163
|
};
|
|
145
164
|
await createSchema();
|
|
165
|
+
await db.exec(`
|
|
166
|
+
CREATE TABLE IF NOT EXISTS agent_usage_limits (
|
|
167
|
+
id TEXT PRIMARY KEY,
|
|
168
|
+
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
169
|
+
limit_scope TEXT NOT NULL,
|
|
170
|
+
limit_key TEXT NOT NULL,
|
|
171
|
+
window_type TEXT NOT NULL,
|
|
172
|
+
status TEXT NOT NULL,
|
|
173
|
+
reset_at TEXT,
|
|
174
|
+
observed_at TEXT NOT NULL,
|
|
175
|
+
source TEXT,
|
|
176
|
+
details_json TEXT,
|
|
177
|
+
created_at TEXT NOT NULL,
|
|
178
|
+
updated_at TEXT NOT NULL,
|
|
179
|
+
UNIQUE(agent_id, limit_scope, limit_key, window_type)
|
|
180
|
+
);
|
|
181
|
+
CREATE INDEX IF NOT EXISTS idx_agent_usage_limits_agent_id
|
|
182
|
+
ON agent_usage_limits(agent_id);
|
|
183
|
+
`);
|
|
146
184
|
let agentsInfo = await db.all("PRAGMA table_info(agents)");
|
|
147
185
|
const hasAgentId = agentsInfo.some((col) => col.name === "id");
|
|
148
186
|
const hasAgentSlug = agentsInfo.some((col) => col.name === "slug");
|
|
@@ -154,6 +192,7 @@ export class GlobalMigrations {
|
|
|
154
192
|
DROP TABLE IF EXISTS agent_prompts;
|
|
155
193
|
DROP TABLE IF EXISTS agent_health;
|
|
156
194
|
DROP TABLE IF EXISTS agent_models;
|
|
195
|
+
DROP TABLE IF EXISTS agent_usage_limits;
|
|
157
196
|
DROP TABLE IF EXISTS workspace_defaults;
|
|
158
197
|
DROP TABLE IF EXISTS command_runs;
|
|
159
198
|
DROP TABLE IF EXISTS token_usage;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Database } from "sqlite";
|
|
2
|
-
import { Agent, AgentAuthMetadata, AgentAuthSecret, AgentHealth, AgentModel, AgentPromptManifest, CreateAgentInput, UpdateAgentInput, WorkspaceDefault } from "@mcoda/shared";
|
|
2
|
+
import { Agent, AgentAuthMetadata, AgentAuthSecret, AgentHealth, AgentUsageLimitRecord, AgentModel, AgentPromptManifest, CreateAgentInput, UpsertAgentUsageLimitInput, UpdateAgentInput, WorkspaceDefault } from "@mcoda/shared";
|
|
3
3
|
import { Connection } from "../../sqlite/connection.js";
|
|
4
4
|
export type GlobalCommandStatus = "running" | "succeeded" | "failed";
|
|
5
5
|
export interface GlobalCommandRunInsert {
|
|
@@ -84,6 +84,9 @@ export declare class GlobalRepository {
|
|
|
84
84
|
setAgentHealth(health: AgentHealth): Promise<void>;
|
|
85
85
|
getAgentHealth(agentId: string): Promise<AgentHealth | undefined>;
|
|
86
86
|
listAgentHealthSummary(): Promise<AgentHealth[]>;
|
|
87
|
+
upsertAgentUsageLimit(input: UpsertAgentUsageLimitInput): Promise<AgentUsageLimitRecord>;
|
|
88
|
+
upsertAgentUsageLimits(inputs: UpsertAgentUsageLimitInput[]): Promise<AgentUsageLimitRecord[]>;
|
|
89
|
+
listAgentUsageLimits(agentId?: string): Promise<AgentUsageLimitRecord[]>;
|
|
87
90
|
setWorkspaceDefault(workspaceId: string, commandName: string, agentId: string, options?: {
|
|
88
91
|
qaProfile?: string;
|
|
89
92
|
docdexScope?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/global/GlobalRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,KAAK,EACL,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"GlobalRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/global/GlobalRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,20 @@ const mapAgentRow = (row) => ({
|
|
|
25
25
|
createdAt: row.created_at,
|
|
26
26
|
updatedAt: row.updated_at,
|
|
27
27
|
});
|
|
28
|
+
const mapAgentUsageLimitRow = (row) => ({
|
|
29
|
+
id: row.id,
|
|
30
|
+
agentId: row.agent_id,
|
|
31
|
+
limitScope: row.limit_scope,
|
|
32
|
+
limitKey: row.limit_key,
|
|
33
|
+
windowType: row.window_type,
|
|
34
|
+
status: row.status,
|
|
35
|
+
resetAt: row.reset_at ?? undefined,
|
|
36
|
+
observedAt: row.observed_at,
|
|
37
|
+
source: row.source ?? undefined,
|
|
38
|
+
details: row.details_json ? JSON.parse(row.details_json) : undefined,
|
|
39
|
+
createdAt: row.created_at,
|
|
40
|
+
updatedAt: row.updated_at,
|
|
41
|
+
});
|
|
28
42
|
export class GlobalRepository {
|
|
29
43
|
constructor(db, connection) {
|
|
30
44
|
this.db = db;
|
|
@@ -272,6 +286,55 @@ export class GlobalRepository {
|
|
|
272
286
|
details: row.details_json ? JSON.parse(row.details_json) : undefined,
|
|
273
287
|
}));
|
|
274
288
|
}
|
|
289
|
+
async upsertAgentUsageLimit(input) {
|
|
290
|
+
const now = new Date().toISOString();
|
|
291
|
+
await this.db.run(`INSERT INTO agent_usage_limits (
|
|
292
|
+
id,
|
|
293
|
+
agent_id,
|
|
294
|
+
limit_scope,
|
|
295
|
+
limit_key,
|
|
296
|
+
window_type,
|
|
297
|
+
status,
|
|
298
|
+
reset_at,
|
|
299
|
+
observed_at,
|
|
300
|
+
source,
|
|
301
|
+
details_json,
|
|
302
|
+
created_at,
|
|
303
|
+
updated_at
|
|
304
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
305
|
+
ON CONFLICT(agent_id, limit_scope, limit_key, window_type) DO UPDATE SET
|
|
306
|
+
status = excluded.status,
|
|
307
|
+
reset_at = excluded.reset_at,
|
|
308
|
+
observed_at = excluded.observed_at,
|
|
309
|
+
source = excluded.source,
|
|
310
|
+
details_json = excluded.details_json,
|
|
311
|
+
updated_at = excluded.updated_at`, randomUUID(), input.agentId, input.limitScope, input.limitKey, input.windowType, input.status, input.resetAt ?? null, input.observedAt, input.source ?? null, input.details ? JSON.stringify(input.details) : null, now, now);
|
|
312
|
+
const row = await this.db.get(`SELECT id, agent_id, limit_scope, limit_key, window_type, status, reset_at, observed_at, source, details_json, created_at, updated_at
|
|
313
|
+
FROM agent_usage_limits
|
|
314
|
+
WHERE agent_id = ? AND limit_scope = ? AND limit_key = ? AND window_type = ?`, input.agentId, input.limitScope, input.limitKey, input.windowType);
|
|
315
|
+
if (!row) {
|
|
316
|
+
throw new Error("Failed to upsert agent usage limit record");
|
|
317
|
+
}
|
|
318
|
+
return mapAgentUsageLimitRow(row);
|
|
319
|
+
}
|
|
320
|
+
async upsertAgentUsageLimits(inputs) {
|
|
321
|
+
const records = [];
|
|
322
|
+
for (const input of inputs) {
|
|
323
|
+
records.push(await this.upsertAgentUsageLimit(input));
|
|
324
|
+
}
|
|
325
|
+
return records;
|
|
326
|
+
}
|
|
327
|
+
async listAgentUsageLimits(agentId) {
|
|
328
|
+
const rows = agentId
|
|
329
|
+
? await this.db.all(`SELECT id, agent_id, limit_scope, limit_key, window_type, status, reset_at, observed_at, source, details_json, created_at, updated_at
|
|
330
|
+
FROM agent_usage_limits
|
|
331
|
+
WHERE agent_id = ?
|
|
332
|
+
ORDER BY datetime(observed_at) DESC`, agentId)
|
|
333
|
+
: await this.db.all(`SELECT id, agent_id, limit_scope, limit_key, window_type, status, reset_at, observed_at, source, details_json, created_at, updated_at
|
|
334
|
+
FROM agent_usage_limits
|
|
335
|
+
ORDER BY datetime(observed_at) DESC`);
|
|
336
|
+
return rows.map(mapAgentUsageLimitRow);
|
|
337
|
+
}
|
|
275
338
|
async setWorkspaceDefault(workspaceId, commandName, agentId, options = {}) {
|
|
276
339
|
const now = new Date().toISOString();
|
|
277
340
|
await this.db.run(`INSERT INTO workspace_defaults (workspace_id, command_name, agent_id, qa_profile, docdex_scope, updated_at)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcoda/db",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28",
|
|
4
4
|
"description": "SQLite-backed storage layer for mcoda.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"sqlite": "^5.1.1",
|
|
34
34
|
"sqlite3": "^5.1.7",
|
|
35
|
-
"@mcoda/shared": "0.1.
|
|
35
|
+
"@mcoda/shared": "0.1.28"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "tsc -p tsconfig.json",
|