@layer-ai/core 0.8.12 → 0.8.14
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/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/lib/db/postgres.d.ts +2 -0
- package/dist/lib/db/postgres.d.ts.map +1 -1
- package/dist/lib/db/postgres.js +16 -0
- package/dist/routes/v1/gate-history.d.ts.map +1 -1
- package/dist/routes/v1/gate-history.js +30 -0
- package/dist/routes/v1/gates.d.ts.map +1 -1
- package/dist/routes/v1/gates.js +32 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { default as authRouter } from './routes/v1/auth.js';
|
|
2
2
|
export { default as gatesRouter } from './routes/v1/gates.js';
|
|
3
|
-
export { default as gateHistoryRouter } from './routes/v1/gate-history.js';
|
|
4
3
|
export { default as keysRouter } from './routes/v1/keys.js';
|
|
5
4
|
export { default as logsRouter } from './routes/v1/logs.js';
|
|
6
5
|
export { default as completeRouter } from './routes/v2/complete.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG3C,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAGrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAG3E,CAAC;AAGF,cAAc,6BAA6B,CAAC;AAG5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Routes
|
|
2
2
|
export { default as authRouter } from './routes/v1/auth.js';
|
|
3
3
|
export { default as gatesRouter } from './routes/v1/gates.js';
|
|
4
|
-
export { default as gateHistoryRouter } from './routes/v1/gate-history.js';
|
|
5
4
|
export { default as keysRouter } from './routes/v1/keys.js';
|
|
6
5
|
export { default as logsRouter } from './routes/v1/logs.js';
|
|
7
6
|
export { default as completeRouter } from './routes/v2/complete.js';
|
|
@@ -43,8 +43,10 @@ export declare const db: {
|
|
|
43
43
|
createGateHistory(gateId: string, gate: Partial<Gate>, appliedBy: "user" | "auto", changedFields?: string[]): Promise<void>;
|
|
44
44
|
getGateHistory(gateId: string, limit?: number): Promise<any[]>;
|
|
45
45
|
getGateHistoryById(id: string): Promise<any | null>;
|
|
46
|
+
getAllGatesHistory(userId: string, limit?: number): Promise<any[]>;
|
|
46
47
|
createActivityLog(gateId: string, userId: string | null, action: "manual_update" | "auto_update" | "reanalysis" | "rollback", details: any): Promise<void>;
|
|
47
48
|
getActivityLog(gateId: string, limit?: number): Promise<any[]>;
|
|
49
|
+
getAllGatesActivity(userId: string, limit?: number): Promise<any[]>;
|
|
48
50
|
rollbackGate(gateId: string, historyId: string, userId: string): Promise<Gate | null>;
|
|
49
51
|
};
|
|
50
52
|
export default getPool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/lib/db/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAyB,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5F,iBAAS,OAAO,IAAI,EAAE,CAAC,IAAI,CAqB1B;AA0BD,eAAO,MAAM,EAAE;gBAEK,MAAM,WAAW,GAAG,EAAE;0BASZ,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;oBAQnC,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;sBAQ3B,MAAM,gBAAgB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;6BASrC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;yBAQnC,MAAM,WAAW,MAAM,aAAa,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;kCAQjE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;8BAO1B,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;qBAQnC,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;iCAS7B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;+BAQjD,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;4BAQhD,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;uBAQ7B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;oBA8BpC,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;mBAQ9B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;mBAkDxC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;qBASvB,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;iCAgBP,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;6BAQhE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;qCAehB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;2BAQhC,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;4BAQrD,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;8BASnD,MAAM,YACJ,MAAM,gBACF;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,aACrD,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC;8BAWb,MAAM,YACJ,MAAM,gBACF;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,aACrD,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;8BAWE,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;kCAQvC,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;qCAQzC,MAAM,GAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;8BAahE,MAAM,QACR,OAAO,CAAC,IAAI,CAAC,aACR,MAAM,GAAG,MAAM,kBACV,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;2BA8Ca,MAAM,UAAS,MAAM,GAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;2BAW3C,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/lib/db/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAyB,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5F,iBAAS,OAAO,IAAI,EAAE,CAAC,IAAI,CAqB1B;AA0BD,eAAO,MAAM,EAAE;gBAEK,MAAM,WAAW,GAAG,EAAE;0BASZ,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;oBAQnC,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;sBAQ3B,MAAM,gBAAgB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;6BASrC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;yBAQnC,MAAM,WAAW,MAAM,aAAa,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;kCAQjE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;8BAO1B,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;qBAQnC,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;iCAS7B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;+BAQjD,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;4BAQhD,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;uBAQ7B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;oBA8BpC,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;mBAQ9B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;mBAkDxC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;qBASvB,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;iCAgBP,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;6BAQhE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;qCAehB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;2BAQhC,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;4BAQrD,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;8BASnD,MAAM,YACJ,MAAM,gBACF;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,aACrD,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC;8BAWb,MAAM,YACJ,MAAM,gBACF;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,aACrD,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;8BAWE,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;kCAQvC,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;qCAQzC,MAAM,GAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;8BAahE,MAAM,QACR,OAAO,CAAC,IAAI,CAAC,aACR,MAAM,GAAG,MAAM,kBACV,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;2BA8Ca,MAAM,UAAS,MAAM,GAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;2BAW3C,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;+BAQxB,MAAM,UAAS,MAAM,GAAS,OAAO,CAAC,GAAG,EAAE,CAAC;8BAcnE,MAAM,UACN,MAAM,GAAG,IAAI,UACb,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,WAC1D,GAAG,GACX,OAAO,CAAC,IAAI,CAAC;2BAQa,MAAM,UAAS,MAAM,GAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;gCAWtC,MAAM,UAAS,MAAM,GAAS,OAAO,CAAC,GAAG,EAAE,CAAC;yBAYnD,MAAM,aAAa,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CA+E5F,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/dist/lib/db/postgres.js
CHANGED
|
@@ -292,6 +292,14 @@ export const db = {
|
|
|
292
292
|
const result = await getPool().query('SELECT * FROM gate_history WHERE id = $1', [id]);
|
|
293
293
|
return result.rows[0] ? toCamelCase(result.rows[0]) : null;
|
|
294
294
|
},
|
|
295
|
+
async getAllGatesHistory(userId, limit = 100) {
|
|
296
|
+
const result = await getPool().query(`SELECT gh.* FROM gate_history gh
|
|
297
|
+
JOIN gates g ON gh.gate_id = g.id
|
|
298
|
+
WHERE g.user_id = $1
|
|
299
|
+
ORDER BY gh.created_at DESC
|
|
300
|
+
LIMIT $2`, [userId, limit]);
|
|
301
|
+
return result.rows.map(toCamelCase);
|
|
302
|
+
},
|
|
295
303
|
// Activity Log
|
|
296
304
|
async createActivityLog(gateId, userId, action, details) {
|
|
297
305
|
await getPool().query(`INSERT INTO gate_activity_log (gate_id, user_id, action, details)
|
|
@@ -304,6 +312,14 @@ export const db = {
|
|
|
304
312
|
LIMIT $2`, [gateId, limit]);
|
|
305
313
|
return result.rows.map(toCamelCase);
|
|
306
314
|
},
|
|
315
|
+
async getAllGatesActivity(userId, limit = 100) {
|
|
316
|
+
const result = await getPool().query(`SELECT gal.* FROM gate_activity_log gal
|
|
317
|
+
JOIN gates g ON gal.gate_id = g.id
|
|
318
|
+
WHERE g.user_id = $1
|
|
319
|
+
ORDER BY gal.timestamp DESC
|
|
320
|
+
LIMIT $2`, [userId, limit]);
|
|
321
|
+
return result.rows.map(toCamelCase);
|
|
322
|
+
},
|
|
307
323
|
async rollbackGate(gateId, historyId, userId) {
|
|
308
324
|
// Get the historical configuration
|
|
309
325
|
const historyEntry = await this.getGateHistoryById(historyId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-history.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/gate-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"gate-history.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/gate-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AA6JhC,eAAe,MAAM,CAAC"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
2
|
import { db } from '../../lib/db/postgres.js';
|
|
3
3
|
const router = Router();
|
|
4
|
+
/**
|
|
5
|
+
* GET /v1/gates/history
|
|
6
|
+
* Get history for all gates belonging to the user
|
|
7
|
+
*/
|
|
8
|
+
router.get('/history', async (req, res) => {
|
|
9
|
+
try {
|
|
10
|
+
const limit = req.query.limit ? parseInt(req.query.limit, 10) : 100;
|
|
11
|
+
const history = await db.getAllGatesHistory(req.userId, limit);
|
|
12
|
+
res.json(history);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error('Error fetching all gates history:', error);
|
|
16
|
+
res.status(500).json({ error: 'Failed to fetch history' });
|
|
17
|
+
}
|
|
18
|
+
});
|
|
4
19
|
/**
|
|
5
20
|
* GET /v1/gates/:gateId/history
|
|
6
21
|
* Get history for a gate
|
|
@@ -24,6 +39,21 @@ router.get('/:gateId/history', async (req, res) => {
|
|
|
24
39
|
res.status(500).json({ error: 'Failed to fetch history' });
|
|
25
40
|
}
|
|
26
41
|
});
|
|
42
|
+
/**
|
|
43
|
+
* GET /v1/gates/activity
|
|
44
|
+
* Get activity log for all gates belonging to the user
|
|
45
|
+
*/
|
|
46
|
+
router.get('/activity', async (req, res) => {
|
|
47
|
+
try {
|
|
48
|
+
const limit = req.query.limit ? parseInt(req.query.limit, 10) : 100;
|
|
49
|
+
const activity = await db.getAllGatesActivity(req.userId, limit);
|
|
50
|
+
res.json(activity);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('Error fetching all gates activity:', error);
|
|
54
|
+
res.status(500).json({ error: 'Failed to fetch activity' });
|
|
55
|
+
}
|
|
56
|
+
});
|
|
27
57
|
/**
|
|
28
58
|
* GET /v1/gates/:gateId/activity
|
|
29
59
|
* Get activity log for a gate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/gates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AASpD,QAAA,MAAM,MAAM,EAAE,UAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/gates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AASpD,QAAA,MAAM,MAAM,EAAE,UAAqB,CAAC;AAwkBpC,eAAe,MAAM,CAAC"}
|
package/dist/routes/v1/gates.js
CHANGED
|
@@ -89,6 +89,38 @@ router.get('/name/:name', async (req, res) => {
|
|
|
89
89
|
res.status(500).json({ error: 'internal_error', message: 'Failed to get gate' });
|
|
90
90
|
}
|
|
91
91
|
});
|
|
92
|
+
// GET /history - Get history for all gates belonging to the user
|
|
93
|
+
router.get('/history', async (req, res) => {
|
|
94
|
+
if (!req.userId) {
|
|
95
|
+
res.status(401).json({ error: 'unauthorized', message: 'Missing user ID' });
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
const limit = req.query.limit ? parseInt(req.query.limit, 10) : 100;
|
|
100
|
+
const history = await db.getAllGatesHistory(req.userId, limit);
|
|
101
|
+
res.json(history);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error('Get all gates history error:', error);
|
|
105
|
+
res.status(500).json({ error: 'internal_error', message: 'Failed to fetch history' });
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
// GET /activity - Get activity log for all gates belonging to the user
|
|
109
|
+
router.get('/activity', async (req, res) => {
|
|
110
|
+
if (!req.userId) {
|
|
111
|
+
res.status(401).json({ error: 'unauthorized', message: 'Missing user ID' });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const limit = req.query.limit ? parseInt(req.query.limit, 10) : 100;
|
|
116
|
+
const activity = await db.getAllGatesActivity(req.userId, limit);
|
|
117
|
+
res.json(activity);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error('Get all gates activity error:', error);
|
|
121
|
+
res.status(500).json({ error: 'internal_error', message: 'Failed to fetch activity' });
|
|
122
|
+
}
|
|
123
|
+
});
|
|
92
124
|
// GET /:id - Get a single gate by ID
|
|
93
125
|
router.get('/:id', async (req, res) => {
|
|
94
126
|
if (!req.userId) {
|