crewly 1.20.407 → 1.20.408
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/backend/backend/src/constants.d.ts +34 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +34 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/activity/activity.controller.d.ts +29 -0
- package/dist/backend/backend/src/controllers/activity/activity.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/activity/activity.controller.js +77 -0
- package/dist/backend/backend/src/controllers/activity/activity.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +49 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/services/activity/activity-log.service.d.ts +192 -0
- package/dist/backend/backend/src/services/activity/activity-log.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/activity/activity-log.service.js +343 -0
- package/dist/backend/backend/src/services/activity/activity-log.service.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +13 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +39 -0
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.js +2 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +34 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +34 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/middleware/agent-origin-correction.d.ts +31 -0
- package/dist/cli/backend/src/middleware/agent-origin-correction.d.ts.map +1 -0
- package/dist/cli/backend/src/middleware/agent-origin-correction.js +31 -0
- package/dist/cli/backend/src/middleware/agent-origin-correction.js.map +1 -0
- package/dist/cli/backend/src/middleware/api-token.middleware.d.ts +171 -0
- package/dist/cli/backend/src/middleware/api-token.middleware.d.ts.map +1 -0
- package/dist/cli/backend/src/middleware/api-token.middleware.js +329 -0
- package/dist/cli/backend/src/middleware/api-token.middleware.js.map +1 -0
- package/dist/cli/backend/src/middleware/caller-identity.middleware.d.ts +290 -0
- package/dist/cli/backend/src/middleware/caller-identity.middleware.d.ts.map +1 -0
- package/dist/cli/backend/src/middleware/caller-identity.middleware.js +658 -0
- package/dist/cli/backend/src/middleware/caller-identity.middleware.js.map +1 -0
- package/dist/cli/backend/src/middleware/require-auth.middleware.d.ts +60 -0
- package/dist/cli/backend/src/middleware/require-auth.middleware.d.ts.map +1 -0
- package/dist/cli/backend/src/middleware/require-auth.middleware.js +127 -0
- package/dist/cli/backend/src/middleware/require-auth.middleware.js.map +1 -0
- package/dist/cli/backend/src/services/activity/activity-log.service.d.ts +192 -0
- package/dist/cli/backend/src/services/activity/activity-log.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/activity/activity-log.service.js +343 -0
- package/dist/cli/backend/src/services/activity/activity-log.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/peer-process.service.d.ts +168 -0
- package/dist/cli/backend/src/services/core/peer-process.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/peer-process.service.js +352 -0
- package/dist/cli/backend/src/services/core/peer-process.service.js.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +13 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +39 -0
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caller-identity.middleware.js","sourceRoot":"","sources":["../../../../../backend/src/middleware/caller-identity.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Middleware
|
|
3
|
+
*
|
|
4
|
+
* Verifies JWT tokens from the Authorization header and attaches
|
|
5
|
+
* decoded user info to the request. Supports both Supabase JWTs
|
|
6
|
+
* (via JWKS) and locally-signed JWTs (via CREWLY_JWT_SECRET).
|
|
7
|
+
*
|
|
8
|
+
* In development mode (NODE_ENV !== 'production' and no JWT secret),
|
|
9
|
+
* falls through with a placeholder user to allow local testing.
|
|
10
|
+
*
|
|
11
|
+
* @module middleware/require-auth
|
|
12
|
+
*/
|
|
13
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
14
|
+
/** Shape of the decoded JWT payload we expect */
|
|
15
|
+
export interface JwtPayload {
|
|
16
|
+
/** Subject — the user's unique ID */
|
|
17
|
+
sub: string;
|
|
18
|
+
/** User email address */
|
|
19
|
+
email?: string;
|
|
20
|
+
/** Subscription plan tier */
|
|
21
|
+
plan?: string;
|
|
22
|
+
/** Token issued-at timestamp (seconds) */
|
|
23
|
+
iat?: number;
|
|
24
|
+
/** Token expiration timestamp (seconds) */
|
|
25
|
+
exp?: number;
|
|
26
|
+
}
|
|
27
|
+
/** User object attached to authenticated requests */
|
|
28
|
+
export interface AuthUser {
|
|
29
|
+
userId: string;
|
|
30
|
+
email: string;
|
|
31
|
+
plan?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Extended Request type with user attached */
|
|
34
|
+
export interface AuthenticatedRequest extends Request {
|
|
35
|
+
user: AuthUser;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Verify and decode an HS256 JWT token.
|
|
39
|
+
*
|
|
40
|
+
* @param token - The raw JWT string
|
|
41
|
+
* @param secret - HMAC secret for signature verification
|
|
42
|
+
* @returns Decoded payload or null if verification fails
|
|
43
|
+
*/
|
|
44
|
+
export declare function verifyHs256Token(token: string, secret: string): JwtPayload | null;
|
|
45
|
+
/**
|
|
46
|
+
* Express middleware that enforces JWT authentication.
|
|
47
|
+
*
|
|
48
|
+
* Reads the token from the Authorization header (Bearer scheme).
|
|
49
|
+
* On success, attaches `user` to the request. On failure, responds
|
|
50
|
+
* with 401.
|
|
51
|
+
*
|
|
52
|
+
* In development (no JWT_SECRET and NODE_ENV !== 'production'),
|
|
53
|
+
* falls through with a dev placeholder user.
|
|
54
|
+
*
|
|
55
|
+
* @param req - Express request
|
|
56
|
+
* @param res - Express response
|
|
57
|
+
* @param next - Express next function
|
|
58
|
+
*/
|
|
59
|
+
export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
|
|
60
|
+
//# sourceMappingURL=require-auth.middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-auth.middleware.d.ts","sourceRoot":"","sources":["../../../../../backend/src/middleware/require-auth.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM/D,iDAAiD;AACjD,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qDAAqD;AACrD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAqB,SAAQ,OAAO;IACnD,IAAI,EAAE,QAAQ,CAAC;CAChB;AAaD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA6CjF;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IA8C7E,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Middleware
|
|
3
|
+
*
|
|
4
|
+
* Verifies JWT tokens from the Authorization header and attaches
|
|
5
|
+
* decoded user info to the request. Supports both Supabase JWTs
|
|
6
|
+
* (via JWKS) and locally-signed JWTs (via CREWLY_JWT_SECRET).
|
|
7
|
+
*
|
|
8
|
+
* In development mode (NODE_ENV !== 'production' and no JWT secret),
|
|
9
|
+
* falls through with a placeholder user to allow local testing.
|
|
10
|
+
*
|
|
11
|
+
* @module middleware/require-auth
|
|
12
|
+
*/
|
|
13
|
+
import { createHmac, timingSafeEqual } from 'crypto';
|
|
14
|
+
import { LoggerService } from '../services/core/logger.service.js';
|
|
15
|
+
const logger = LoggerService.getInstance().createComponentLogger('AuthMiddleware');
|
|
16
|
+
/**
|
|
17
|
+
* Base64url decode a string segment.
|
|
18
|
+
*
|
|
19
|
+
* @param input - Base64url encoded string
|
|
20
|
+
* @returns Decoded UTF-8 string
|
|
21
|
+
*/
|
|
22
|
+
function base64UrlDecode(input) {
|
|
23
|
+
const padded = input.replace(/-/g, '+').replace(/_/g, '/');
|
|
24
|
+
return Buffer.from(padded, 'base64').toString('utf-8');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Verify and decode an HS256 JWT token.
|
|
28
|
+
*
|
|
29
|
+
* @param token - The raw JWT string
|
|
30
|
+
* @param secret - HMAC secret for signature verification
|
|
31
|
+
* @returns Decoded payload or null if verification fails
|
|
32
|
+
*/
|
|
33
|
+
export function verifyHs256Token(token, secret) {
|
|
34
|
+
const parts = token.split('.');
|
|
35
|
+
if (parts.length !== 3) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const [headerB64, payloadB64, signatureB64] = parts;
|
|
39
|
+
// Verify header is HS256
|
|
40
|
+
try {
|
|
41
|
+
const header = JSON.parse(base64UrlDecode(headerB64));
|
|
42
|
+
if (header.alg !== 'HS256') {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
// Verify signature
|
|
50
|
+
const signatureInput = `${headerB64}.${payloadB64}`;
|
|
51
|
+
const expectedSig = createHmac('sha256', secret)
|
|
52
|
+
.update(signatureInput)
|
|
53
|
+
.digest('base64url');
|
|
54
|
+
// Timing-safe comparison
|
|
55
|
+
const sigBuf = Buffer.from(signatureB64);
|
|
56
|
+
const expectedBuf = Buffer.from(expectedSig);
|
|
57
|
+
if (sigBuf.length !== expectedBuf.length || !timingSafeEqual(sigBuf, expectedBuf)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
// Decode payload
|
|
61
|
+
try {
|
|
62
|
+
const payload = JSON.parse(base64UrlDecode(payloadB64));
|
|
63
|
+
// Check expiration
|
|
64
|
+
if (payload.exp && payload.exp < Math.floor(Date.now() / 1000)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return payload;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Express middleware that enforces JWT authentication.
|
|
75
|
+
*
|
|
76
|
+
* Reads the token from the Authorization header (Bearer scheme).
|
|
77
|
+
* On success, attaches `user` to the request. On failure, responds
|
|
78
|
+
* with 401.
|
|
79
|
+
*
|
|
80
|
+
* In development (no JWT_SECRET and NODE_ENV !== 'production'),
|
|
81
|
+
* falls through with a dev placeholder user.
|
|
82
|
+
*
|
|
83
|
+
* @param req - Express request
|
|
84
|
+
* @param res - Express response
|
|
85
|
+
* @param next - Express next function
|
|
86
|
+
*/
|
|
87
|
+
export const requireAuth = (req, res, next) => {
|
|
88
|
+
const jwtSecret = process.env['CREWLY_JWT_SECRET'];
|
|
89
|
+
const isProduction = process.env['NODE_ENV'] === 'production';
|
|
90
|
+
// Extract Bearer token
|
|
91
|
+
const authHeader = req.headers.authorization;
|
|
92
|
+
const token = authHeader?.startsWith('Bearer ') ? authHeader.slice(7) : null;
|
|
93
|
+
// If JWT secret is configured, enforce real auth
|
|
94
|
+
if (jwtSecret) {
|
|
95
|
+
if (!token) {
|
|
96
|
+
res.status(401).json({ success: false, error: 'Authorization header required' });
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const payload = verifyHs256Token(token, jwtSecret);
|
|
100
|
+
if (!payload || !payload.sub) {
|
|
101
|
+
res.status(401).json({ success: false, error: 'Invalid or expired token' });
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
req.user = {
|
|
105
|
+
userId: payload.sub,
|
|
106
|
+
email: payload.email ?? '',
|
|
107
|
+
plan: payload.plan,
|
|
108
|
+
};
|
|
109
|
+
next();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// No JWT secret configured
|
|
113
|
+
if (isProduction) {
|
|
114
|
+
logger.error('CREWLY_JWT_SECRET not set in production — blocking request');
|
|
115
|
+
res.status(500).json({ success: false, error: 'Server authentication not configured' });
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Development fallback: allow requests with a dev placeholder
|
|
119
|
+
logger.warn('Auth middleware in dev mode — using placeholder user');
|
|
120
|
+
req.user = {
|
|
121
|
+
userId: 'dev-user-001',
|
|
122
|
+
email: 'dev@crewly.local',
|
|
123
|
+
plan: 'max',
|
|
124
|
+
};
|
|
125
|
+
next();
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=require-auth.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-auth.middleware.js","sourceRoot":"","sources":["../../../../../backend/src/middleware/require-auth.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AA4BnF;;;;;GAKG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,MAAc;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC;IAEpD,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,MAAM,cAAc,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC7C,MAAM,CAAC,cAAc,CAAC;SACtB,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAe,CAAC;QAEtE,mBAAmB;QACnB,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;IACnF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,CAAC;IAE9D,uBAAuB;IACvB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7E,iDAAiD;IACjD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAEA,GAA4B,CAAC,IAAI,GAAG;YACnC,MAAM,EAAE,OAAO,CAAC,GAAG;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;QAEF,IAAI,EAAE,CAAC;QACP,OAAO;IACT,CAAC;IAED,2BAA2B;IAC3B,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC3E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACnE,GAA4B,CAAC,IAAI,GAAG;QACnC,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,KAAK;KACZ,CAAC;IACF,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { type ComponentLogger } from '../core/logger.service.js';
|
|
2
|
+
import { type CallerIdentity, type IdentifiableRequest } from '../../middleware/caller-identity.middleware.js';
|
|
3
|
+
/** Who acted. */
|
|
4
|
+
export type ActivityActorType = 'owner' | 'agent' | 'system';
|
|
5
|
+
/** The actor of an entry. */
|
|
6
|
+
export interface ActivityActor {
|
|
7
|
+
/** Owner, an agent, or Crewly itself (schedulers, deadlines, anonymous local calls) */
|
|
8
|
+
type: ActivityActorType;
|
|
9
|
+
/** The agent session, Slack user id, scheduler name, … when known */
|
|
10
|
+
id?: string;
|
|
11
|
+
/** How the actor was recognised (`owner-session`, `api-token`, `agent-badge`, `deadline`, …) */
|
|
12
|
+
via?: string;
|
|
13
|
+
}
|
|
14
|
+
/** What an entry is about. */
|
|
15
|
+
export interface ActivityTarget {
|
|
16
|
+
/** `team`, `member`, `decision`, … */
|
|
17
|
+
type: string;
|
|
18
|
+
id: string;
|
|
19
|
+
/** Display name at the time of the action */
|
|
20
|
+
name?: string;
|
|
21
|
+
}
|
|
22
|
+
/** One line of the log. */
|
|
23
|
+
export interface ActivityEntry {
|
|
24
|
+
id: string;
|
|
25
|
+
/** ISO timestamp */
|
|
26
|
+
ts: string;
|
|
27
|
+
actor: ActivityActor;
|
|
28
|
+
/** Dotted, past tense: `team.member.updated`, `decision.resolved` */
|
|
29
|
+
action: string;
|
|
30
|
+
target: ActivityTarget;
|
|
31
|
+
/** Changed fields before the action (masked, truncated) */
|
|
32
|
+
before?: Record<string, unknown>;
|
|
33
|
+
/** Changed fields after the action (masked, truncated) */
|
|
34
|
+
after?: Record<string, unknown>;
|
|
35
|
+
/** The Crewly Request this happened under, when known */
|
|
36
|
+
requestId?: string;
|
|
37
|
+
/** The WorkItem this happened under, when known */
|
|
38
|
+
workItemId?: string;
|
|
39
|
+
/** Short free text (an answer, a reason) */
|
|
40
|
+
note?: string;
|
|
41
|
+
}
|
|
42
|
+
/** What a writer hands in; id and timestamp are filled here. */
|
|
43
|
+
export type ActivityEntryInput = Omit<ActivityEntry, 'id' | 'ts'> & {
|
|
44
|
+
ts?: string;
|
|
45
|
+
};
|
|
46
|
+
/** Filters of a read. All optional; `action` and ids match exactly, `action` also by `prefix.` */
|
|
47
|
+
export interface ActivityQuery {
|
|
48
|
+
actorType?: ActivityActorType;
|
|
49
|
+
actorId?: string;
|
|
50
|
+
/** Exact action, or a dotted prefix such as `team.` */
|
|
51
|
+
action?: string;
|
|
52
|
+
targetType?: string;
|
|
53
|
+
targetId?: string;
|
|
54
|
+
/** ISO timestamp (inclusive) */
|
|
55
|
+
since?: string;
|
|
56
|
+
/** ISO timestamp (inclusive) */
|
|
57
|
+
until?: string;
|
|
58
|
+
limit?: number;
|
|
59
|
+
}
|
|
60
|
+
/** File operations the log uses (injectable to simulate failures). */
|
|
61
|
+
export interface ActivityFsOps {
|
|
62
|
+
mkdir(dir: string, opts: {
|
|
63
|
+
recursive: true;
|
|
64
|
+
}): Promise<unknown>;
|
|
65
|
+
appendFile(file: string, data: string): Promise<void>;
|
|
66
|
+
readFile(file: string): Promise<string>;
|
|
67
|
+
readdir(dir: string): Promise<string[]>;
|
|
68
|
+
}
|
|
69
|
+
/** Construction options. */
|
|
70
|
+
export interface ActivityLogOptions {
|
|
71
|
+
/** Log directory (default `<CREWLY_HOME>/activity-log`) */
|
|
72
|
+
dir?: string;
|
|
73
|
+
fs?: ActivityFsOps;
|
|
74
|
+
now?: () => Date;
|
|
75
|
+
logger?: ComponentLogger;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Whether a string names an actor type.
|
|
79
|
+
*
|
|
80
|
+
* @param value - Candidate
|
|
81
|
+
* @returns True for owner / agent / system
|
|
82
|
+
*/
|
|
83
|
+
export declare function isActivityActorType(value: unknown): value is ActivityActorType;
|
|
84
|
+
/**
|
|
85
|
+
* Mask secret-looking keys and cut long strings, recursively. Arrays and plain
|
|
86
|
+
* objects are walked; anything else is kept as is.
|
|
87
|
+
*
|
|
88
|
+
* @param value - Any JSON-ish value
|
|
89
|
+
* @returns The value safe to write
|
|
90
|
+
*/
|
|
91
|
+
export declare function maskForActivity(value: unknown): unknown;
|
|
92
|
+
/**
|
|
93
|
+
* The fields that differ between two shallow records, as a before / after
|
|
94
|
+
* pair (masked). Equal fields are left out so an entry shows only the change;
|
|
95
|
+
* a key absent on one side appears as `undefined` → left out of that side.
|
|
96
|
+
*
|
|
97
|
+
* @param before - Record before the change (null when created)
|
|
98
|
+
* @param after - Record after the change (null when deleted)
|
|
99
|
+
* @returns Masked before / after summaries, each undefined when empty
|
|
100
|
+
*/
|
|
101
|
+
export declare function summarizeChange(before: Record<string, unknown> | null | undefined, after: Record<string, unknown> | null | undefined): {
|
|
102
|
+
before?: Record<string, unknown>;
|
|
103
|
+
after?: Record<string, unknown>;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* The actor behind a caller identity: owner credentials (dashboard session,
|
|
107
|
+
* API token, phone / portal relay, cloud) are the owner; an agent is itself;
|
|
108
|
+
* schedulers and anonymous local calls are the system.
|
|
109
|
+
*
|
|
110
|
+
* @param identity - What the caller-identity middleware decided
|
|
111
|
+
* @returns The actor
|
|
112
|
+
*/
|
|
113
|
+
export declare function actorFromCaller(identity: CallerIdentity): ActivityActor;
|
|
114
|
+
/**
|
|
115
|
+
* The actor of an HTTP request.
|
|
116
|
+
*
|
|
117
|
+
* @param req - Request
|
|
118
|
+
* @returns The actor
|
|
119
|
+
*/
|
|
120
|
+
export declare function actorFromRequest(req: IdentifiableRequest): ActivityActor;
|
|
121
|
+
/**
|
|
122
|
+
* The append-only activity log.
|
|
123
|
+
*/
|
|
124
|
+
export declare class ActivityLogService {
|
|
125
|
+
private readonly dir;
|
|
126
|
+
private readonly fs;
|
|
127
|
+
private readonly now;
|
|
128
|
+
private readonly logger;
|
|
129
|
+
private chain;
|
|
130
|
+
private dirReady;
|
|
131
|
+
private seq;
|
|
132
|
+
/**
|
|
133
|
+
* @param options - Directory, file ops, clock, logger (all optional)
|
|
134
|
+
*/
|
|
135
|
+
constructor(options?: ActivityLogOptions);
|
|
136
|
+
/**
|
|
137
|
+
* Append one entry. Returns at once; the write is chained after earlier
|
|
138
|
+
* writes and a failure is logged, never thrown.
|
|
139
|
+
*
|
|
140
|
+
* @param input - The entry without id / timestamp
|
|
141
|
+
* @returns The entry as it will be written
|
|
142
|
+
*/
|
|
143
|
+
record(input: ActivityEntryInput): ActivityEntry;
|
|
144
|
+
/**
|
|
145
|
+
* Wait for every write handed in so far.
|
|
146
|
+
*
|
|
147
|
+
* @returns When the chain is idle
|
|
148
|
+
*/
|
|
149
|
+
flush(): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Read entries newest first.
|
|
152
|
+
*
|
|
153
|
+
* @param query - Filters and limit
|
|
154
|
+
* @returns Matching entries, newest first, at most `limit`
|
|
155
|
+
*/
|
|
156
|
+
list(query?: ActivityQuery): Promise<ActivityEntry[]>;
|
|
157
|
+
/**
|
|
158
|
+
* The monthly files worth opening for a query, newest first, bounded by
|
|
159
|
+
* MAX_FILES_PER_READ and by the query's time window.
|
|
160
|
+
*
|
|
161
|
+
* @param query - Filters (since / until narrow the months)
|
|
162
|
+
* @returns File names
|
|
163
|
+
*/
|
|
164
|
+
private monthlyFiles;
|
|
165
|
+
/**
|
|
166
|
+
* The file an entry at a timestamp belongs to.
|
|
167
|
+
*
|
|
168
|
+
* @param ts - ISO timestamp
|
|
169
|
+
* @returns Absolute path
|
|
170
|
+
*/
|
|
171
|
+
private fileFor;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The process-wide activity log.
|
|
175
|
+
*
|
|
176
|
+
* @returns The log (created on first use)
|
|
177
|
+
*/
|
|
178
|
+
export declare function getActivityLog(): ActivityLogService;
|
|
179
|
+
/**
|
|
180
|
+
* Replace the process-wide log (tests).
|
|
181
|
+
*
|
|
182
|
+
* @param log - Log, or null to rebuild the default lazily
|
|
183
|
+
*/
|
|
184
|
+
export declare function setActivityLogForTesting(log: ActivityLogService | null): void;
|
|
185
|
+
/**
|
|
186
|
+
* Append to the process-wide log without ever throwing. The one call writers
|
|
187
|
+
* make.
|
|
188
|
+
*
|
|
189
|
+
* @param input - The entry
|
|
190
|
+
*/
|
|
191
|
+
export declare function recordActivity(input: ActivityEntryInput): void;
|
|
192
|
+
//# sourceMappingURL=activity-log.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-log.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/activity/activity-log.service.ts"],"names":[],"mappings":"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"}
|