crewly 1.20.407 → 1.20.409

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.
Files changed (86) hide show
  1. package/dist/backend/backend/src/constants.d.ts +34 -0
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +34 -0
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/controllers/activity/activity.controller.d.ts +29 -0
  6. package/dist/backend/backend/src/controllers/activity/activity.controller.d.ts.map +1 -0
  7. package/dist/backend/backend/src/controllers/activity/activity.controller.js +77 -0
  8. package/dist/backend/backend/src/controllers/activity/activity.controller.js.map +1 -0
  9. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  10. package/dist/backend/backend/src/controllers/google/google.controller.js +3 -0
  11. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  12. package/dist/backend/backend/src/controllers/team/team-charter.controller.d.ts.map +1 -1
  13. package/dist/backend/backend/src/controllers/team/team-charter.controller.js +7 -0
  14. package/dist/backend/backend/src/controllers/team/team-charter.controller.js.map +1 -1
  15. package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.d.ts.map +1 -1
  16. package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.js +5 -1
  17. package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.js.map +1 -1
  18. package/dist/backend/backend/src/controllers/team/team-pause.controller.d.ts.map +1 -1
  19. package/dist/backend/backend/src/controllers/team/team-pause.controller.js +9 -0
  20. package/dist/backend/backend/src/controllers/team/team-pause.controller.js.map +1 -1
  21. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/team/team.controller.js +49 -0
  23. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/team-move/team-move.controller.d.ts.map +1 -1
  25. package/dist/backend/backend/src/controllers/team-move/team-move.controller.js +2 -0
  26. package/dist/backend/backend/src/controllers/team-move/team-move.controller.js.map +1 -1
  27. package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
  28. package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
  29. package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
  30. package/dist/backend/backend/src/services/activity/activity-log.service.d.ts +192 -0
  31. package/dist/backend/backend/src/services/activity/activity-log.service.d.ts.map +1 -0
  32. package/dist/backend/backend/src/services/activity/activity-log.service.js +349 -0
  33. package/dist/backend/backend/src/services/activity/activity-log.service.js.map +1 -0
  34. package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/browser/browser-approval.service.js +7 -0
  36. package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -1
  37. package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/budget/team-budget-gate.service.js +9 -0
  39. package/dist/backend/backend/src/services/budget/team-budget-gate.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +13 -0
  41. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/decisions/decision.service.js +39 -0
  43. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  44. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  45. package/dist/backend/backend/src/services/decisions/decision.wiring.js +2 -0
  46. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  47. package/dist/backend/backend/src/services/google/gmail-send-approval.service.d.ts.map +1 -1
  48. package/dist/backend/backend/src/services/google/gmail-send-approval.service.js +26 -0
  49. package/dist/backend/backend/src/services/google/gmail-send-approval.service.js.map +1 -1
  50. package/dist/backend/build-info.json +2 -2
  51. package/dist/cli/backend/src/constants.d.ts +34 -0
  52. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  53. package/dist/cli/backend/src/constants.js +34 -0
  54. package/dist/cli/backend/src/constants.js.map +1 -1
  55. package/dist/cli/backend/src/middleware/agent-origin-correction.d.ts +31 -0
  56. package/dist/cli/backend/src/middleware/agent-origin-correction.d.ts.map +1 -0
  57. package/dist/cli/backend/src/middleware/agent-origin-correction.js +31 -0
  58. package/dist/cli/backend/src/middleware/agent-origin-correction.js.map +1 -0
  59. package/dist/cli/backend/src/middleware/api-token.middleware.d.ts +171 -0
  60. package/dist/cli/backend/src/middleware/api-token.middleware.d.ts.map +1 -0
  61. package/dist/cli/backend/src/middleware/api-token.middleware.js +329 -0
  62. package/dist/cli/backend/src/middleware/api-token.middleware.js.map +1 -0
  63. package/dist/cli/backend/src/middleware/caller-identity.middleware.d.ts +290 -0
  64. package/dist/cli/backend/src/middleware/caller-identity.middleware.d.ts.map +1 -0
  65. package/dist/cli/backend/src/middleware/caller-identity.middleware.js +658 -0
  66. package/dist/cli/backend/src/middleware/caller-identity.middleware.js.map +1 -0
  67. package/dist/cli/backend/src/middleware/require-auth.middleware.d.ts +60 -0
  68. package/dist/cli/backend/src/middleware/require-auth.middleware.d.ts.map +1 -0
  69. package/dist/cli/backend/src/middleware/require-auth.middleware.js +127 -0
  70. package/dist/cli/backend/src/middleware/require-auth.middleware.js.map +1 -0
  71. package/dist/cli/backend/src/services/activity/activity-log.service.d.ts +192 -0
  72. package/dist/cli/backend/src/services/activity/activity-log.service.d.ts.map +1 -0
  73. package/dist/cli/backend/src/services/activity/activity-log.service.js +349 -0
  74. package/dist/cli/backend/src/services/activity/activity-log.service.js.map +1 -0
  75. package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -1
  76. package/dist/cli/backend/src/services/budget/team-budget-gate.service.js +9 -0
  77. package/dist/cli/backend/src/services/budget/team-budget-gate.service.js.map +1 -1
  78. package/dist/cli/backend/src/services/core/peer-process.service.d.ts +168 -0
  79. package/dist/cli/backend/src/services/core/peer-process.service.d.ts.map +1 -0
  80. package/dist/cli/backend/src/services/core/peer-process.service.js +352 -0
  81. package/dist/cli/backend/src/services/core/peer-process.service.js.map +1 -0
  82. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +13 -0
  83. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  84. package/dist/cli/backend/src/services/decisions/decision.service.js +39 -0
  85. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  86. package/package.json +1 -1
@@ -0,0 +1,349 @@
1
+ /**
2
+ * Activity log (crewly#881): the append-only record of who did what and when.
3
+ *
4
+ * - One `<CREWLY_HOME>/activity-log/YYYY-MM.jsonl` file per month, one JSON
5
+ * entry per line. Nothing is ever rewritten or deleted here.
6
+ * - Each entry names the actor (owner / agent / system, with its id and how it
7
+ * was recognised), the action (`team.member.updated`, `decision.resolved`,
8
+ * …), the target, and a before / after summary of the changed fields with
9
+ * secret-looking keys masked and long strings cut.
10
+ * - Writes are chained on one promise and never awaited by callers; a failed
11
+ * write is logged, never thrown. Reads walk the monthly files newest first
12
+ * and stop once the limit is reached.
13
+ *
14
+ * Writers: team / member config handlers (`team.controller.ts`) and owner
15
+ * decisions (`decision.service.ts`). Reader: `GET /api/activity`.
16
+ *
17
+ * `specs/2026-10-25-activity-log.md`
18
+ *
19
+ * @module services/activity/activity-log.service
20
+ */
21
+ import { promises as fsp } from 'fs';
22
+ import * as path from 'path';
23
+ import { ACTIVITY_LOG_CONSTANTS } from '../../constants.js';
24
+ import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
25
+ import { LoggerService } from '../core/logger.service.js';
26
+ import { getCallerIdentity } from '../../middleware/caller-identity.middleware.js';
27
+ const NODE_FS = {
28
+ mkdir: (dir, opts) => fsp.mkdir(dir, opts),
29
+ appendFile: (file, data) => fsp.appendFile(file, data, 'utf8'),
30
+ readFile: (file) => fsp.readFile(file, 'utf8'),
31
+ readdir: (dir) => fsp.readdir(dir),
32
+ };
33
+ const ACTOR_TYPES = new Set(['owner', 'agent', 'system']);
34
+ /**
35
+ * Whether a string names an actor type.
36
+ *
37
+ * @param value - Candidate
38
+ * @returns True for owner / agent / system
39
+ */
40
+ export function isActivityActorType(value) {
41
+ return typeof value === 'string' && ACTOR_TYPES.has(value);
42
+ }
43
+ /**
44
+ * Mask secret-looking keys and cut long strings, recursively. Arrays and plain
45
+ * objects are walked; anything else is kept as is.
46
+ *
47
+ * @param value - Any JSON-ish value
48
+ * @returns The value safe to write
49
+ */
50
+ export function maskForActivity(value) {
51
+ if (typeof value === 'string') {
52
+ return value.length > ACTIVITY_LOG_CONSTANTS.MAX_SUMMARY_CHARS ? `${value.slice(0, ACTIVITY_LOG_CONSTANTS.MAX_SUMMARY_CHARS)}…` : value;
53
+ }
54
+ if (Array.isArray(value))
55
+ return value.map(maskForActivity);
56
+ if (value && typeof value === 'object') {
57
+ const out = {};
58
+ for (const [k, v] of Object.entries(value)) {
59
+ out[k] = ACTIVITY_LOG_CONSTANTS.SECRET_KEY_PATTERN.test(k) && v !== undefined && v !== null ? ACTIVITY_LOG_CONSTANTS.MASK : maskForActivity(v);
60
+ }
61
+ return out;
62
+ }
63
+ return value;
64
+ }
65
+ /**
66
+ * The fields that differ between two shallow records, as a before / after
67
+ * pair (masked). Equal fields are left out so an entry shows only the change;
68
+ * a key absent on one side appears as `undefined` → left out of that side.
69
+ *
70
+ * @param before - Record before the change (null when created)
71
+ * @param after - Record after the change (null when deleted)
72
+ * @returns Masked before / after summaries, each undefined when empty
73
+ */
74
+ export function summarizeChange(before, after) {
75
+ const b = {};
76
+ const a = {};
77
+ const keys = new Set([...Object.keys(before ?? {}), ...Object.keys(after ?? {})]);
78
+ for (const k of keys) {
79
+ const bv = before?.[k];
80
+ const av = after?.[k];
81
+ if (JSON.stringify(bv) === JSON.stringify(av))
82
+ continue;
83
+ if (bv !== undefined)
84
+ b[k] = bv;
85
+ if (av !== undefined)
86
+ a[k] = av;
87
+ }
88
+ return {
89
+ ...(Object.keys(b).length ? { before: maskForActivity(b) } : {}),
90
+ ...(Object.keys(a).length ? { after: maskForActivity(a) } : {}),
91
+ };
92
+ }
93
+ /**
94
+ * The actor behind a caller identity: owner credentials (dashboard session,
95
+ * API token, phone / portal relay, cloud) are the owner; an agent is itself;
96
+ * schedulers and anonymous local calls are the system.
97
+ *
98
+ * @param identity - What the caller-identity middleware decided
99
+ * @returns The actor
100
+ */
101
+ export function actorFromCaller(identity) {
102
+ switch (identity.kind) {
103
+ case 'owner':
104
+ case 'relay-owner':
105
+ case 'cloud':
106
+ return { type: 'owner', via: identity.via };
107
+ case 'agent':
108
+ return { type: 'agent', ...(identity.session ? { id: identity.session } : {}), via: identity.via };
109
+ case 'scheduler':
110
+ return { type: 'system', id: identity.sender ?? 'scheduler', via: identity.via };
111
+ default:
112
+ return { type: 'system', id: 'anonymous', via: identity.via };
113
+ }
114
+ }
115
+ /**
116
+ * The actor of an HTTP request. Never throws.
117
+ *
118
+ * @param req - Request
119
+ * @returns The actor
120
+ */
121
+ export function actorFromRequest(req) {
122
+ try {
123
+ return actorFromCaller(getCallerIdentity(req));
124
+ }
125
+ catch {
126
+ // A request the middleware cannot read (a bare test double) is still logged, as unknown.
127
+ return { type: 'system', id: 'unknown' };
128
+ }
129
+ }
130
+ /**
131
+ * The append-only activity log.
132
+ */
133
+ export class ActivityLogService {
134
+ dir;
135
+ fs;
136
+ now;
137
+ logger;
138
+ chain = Promise.resolve();
139
+ dirReady = false;
140
+ seq = 0;
141
+ /**
142
+ * @param options - Directory, file ops, clock, logger (all optional)
143
+ */
144
+ constructor(options = {}) {
145
+ this.dir = options.dir ?? path.join(getCrewlyHomePath(), ACTIVITY_LOG_CONSTANTS.DIR);
146
+ this.fs = options.fs ?? NODE_FS;
147
+ this.now = options.now ?? (() => new Date());
148
+ this.logger = options.logger ?? LoggerService.getInstance().createComponentLogger('ActivityLog');
149
+ }
150
+ /**
151
+ * Append one entry. Returns at once; the write is chained after earlier
152
+ * writes and a failure is logged, never thrown.
153
+ *
154
+ * @param input - The entry without id / timestamp
155
+ * @returns The entry as it will be written
156
+ */
157
+ record(input) {
158
+ const ts = input.ts ?? this.now().toISOString();
159
+ const entry = {
160
+ id: `${Date.parse(ts).toString(36)}-${(this.seq++).toString(36)}-${Math.random().toString(36).slice(2, 6)}`,
161
+ ts,
162
+ actor: input.actor,
163
+ action: input.action,
164
+ target: input.target,
165
+ ...(input.before ? { before: maskForActivity(input.before) } : {}),
166
+ ...(input.after ? { after: maskForActivity(input.after) } : {}),
167
+ ...(input.requestId ? { requestId: input.requestId } : {}),
168
+ ...(input.workItemId ? { workItemId: input.workItemId } : {}),
169
+ ...(input.note ? { note: maskForActivity(input.note) } : {}),
170
+ };
171
+ const file = this.fileFor(ts);
172
+ this.chain = this.chain
173
+ .then(async () => {
174
+ if (!this.dirReady) {
175
+ await this.fs.mkdir(this.dir, { recursive: true });
176
+ this.dirReady = true;
177
+ }
178
+ await this.fs.appendFile(file, `${JSON.stringify(entry)}\n`);
179
+ })
180
+ .catch((err) => {
181
+ this.dirReady = false;
182
+ this.logger.warn('Activity log write failed', { action: entry.action, error: err instanceof Error ? err.message : String(err) });
183
+ });
184
+ return entry;
185
+ }
186
+ /**
187
+ * Wait for every write handed in so far.
188
+ *
189
+ * @returns When the chain is idle
190
+ */
191
+ flush() {
192
+ return this.chain;
193
+ }
194
+ /**
195
+ * Read entries newest first.
196
+ *
197
+ * @param query - Filters and limit
198
+ * @returns Matching entries, newest first, at most `limit`
199
+ */
200
+ async list(query = {}) {
201
+ await this.flush();
202
+ const limit = Math.max(1, Math.min(ACTIVITY_LOG_CONSTANTS.MAX_LIMIT, Math.floor(query.limit ?? ACTIVITY_LOG_CONSTANTS.DEFAULT_LIMIT)));
203
+ const files = await this.monthlyFiles(query);
204
+ const out = [];
205
+ for (const file of files) {
206
+ let raw;
207
+ try {
208
+ raw = await this.fs.readFile(path.join(this.dir, file));
209
+ }
210
+ catch {
211
+ continue;
212
+ }
213
+ const lines = raw.split('\n');
214
+ for (let i = lines.length - 1; i >= 0 && out.length < limit; i--) {
215
+ const entry = parseLine(lines[i]);
216
+ if (entry && matches(entry, query))
217
+ out.push(entry);
218
+ }
219
+ if (out.length >= limit)
220
+ break;
221
+ }
222
+ return out;
223
+ }
224
+ /**
225
+ * The monthly files worth opening for a query, newest first, bounded by
226
+ * MAX_FILES_PER_READ and by the query's time window.
227
+ *
228
+ * @param query - Filters (since / until narrow the months)
229
+ * @returns File names
230
+ */
231
+ async monthlyFiles(query) {
232
+ let names;
233
+ try {
234
+ names = await this.fs.readdir(this.dir);
235
+ }
236
+ catch {
237
+ return [];
238
+ }
239
+ const sinceMonth = query.since ? monthOf(query.since) : null;
240
+ const untilMonth = query.until ? monthOf(query.until) : null;
241
+ return names
242
+ .filter((n) => n.endsWith(ACTIVITY_LOG_CONSTANTS.FILE_EXT))
243
+ .map((n) => n.slice(0, -ACTIVITY_LOG_CONSTANTS.FILE_EXT.length))
244
+ .filter((m) => /^\d{4}-\d{2}$/.test(m))
245
+ .filter((m) => (!sinceMonth || m >= sinceMonth) && (!untilMonth || m <= untilMonth))
246
+ .sort()
247
+ .reverse()
248
+ .slice(0, ACTIVITY_LOG_CONSTANTS.MAX_FILES_PER_READ)
249
+ .map((m) => `${m}${ACTIVITY_LOG_CONSTANTS.FILE_EXT}`);
250
+ }
251
+ /**
252
+ * The file an entry at a timestamp belongs to.
253
+ *
254
+ * @param ts - ISO timestamp
255
+ * @returns Absolute path
256
+ */
257
+ fileFor(ts) {
258
+ return path.join(this.dir, `${monthOf(ts) ?? 'unknown'}${ACTIVITY_LOG_CONSTANTS.FILE_EXT}`);
259
+ }
260
+ }
261
+ /**
262
+ * `YYYY-MM` of an ISO timestamp (UTC), or null when unparsable.
263
+ *
264
+ * @param ts - ISO timestamp
265
+ * @returns The month key
266
+ */
267
+ function monthOf(ts) {
268
+ const ms = Date.parse(ts);
269
+ if (Number.isNaN(ms))
270
+ return null;
271
+ return new Date(ms).toISOString().slice(0, 7);
272
+ }
273
+ /**
274
+ * Parse one log line; a blank or damaged line is skipped.
275
+ *
276
+ * @param line - Raw line
277
+ * @returns The entry or null
278
+ */
279
+ function parseLine(line) {
280
+ if (!line.trim())
281
+ return null;
282
+ try {
283
+ const v = JSON.parse(line);
284
+ return typeof v.id === 'string' && typeof v.ts === 'string' && typeof v.action === 'string' && v.actor && v.target ? v : null;
285
+ }
286
+ catch {
287
+ return null;
288
+ }
289
+ }
290
+ /**
291
+ * Whether an entry passes a query's filters. Times compare as instants, so
292
+ * `…T00:00:00Z` and `…T00:00:00.000Z` are the same moment.
293
+ *
294
+ * @param e - Entry
295
+ * @param q - Query
296
+ * @returns True when it matches
297
+ */
298
+ function matches(e, q) {
299
+ if (q.actorType && e.actor.type !== q.actorType)
300
+ return false;
301
+ if (q.actorId && e.actor.id !== q.actorId)
302
+ return false;
303
+ if (q.action && e.action !== q.action && !(q.action.endsWith('.') && e.action.startsWith(q.action)))
304
+ return false;
305
+ if (q.targetType && e.target.type !== q.targetType)
306
+ return false;
307
+ if (q.targetId && e.target.id !== q.targetId)
308
+ return false;
309
+ const ms = Date.parse(e.ts);
310
+ if (q.since && ms < Date.parse(q.since))
311
+ return false;
312
+ if (q.until && ms > Date.parse(q.until))
313
+ return false;
314
+ return true;
315
+ }
316
+ let instance = null;
317
+ /**
318
+ * The process-wide activity log.
319
+ *
320
+ * @returns The log (created on first use)
321
+ */
322
+ export function getActivityLog() {
323
+ if (!instance)
324
+ instance = new ActivityLogService();
325
+ return instance;
326
+ }
327
+ /**
328
+ * Replace the process-wide log (tests).
329
+ *
330
+ * @param log - Log, or null to rebuild the default lazily
331
+ */
332
+ export function setActivityLogForTesting(log) {
333
+ instance = log;
334
+ }
335
+ /**
336
+ * Append to the process-wide log without ever throwing. The one call writers
337
+ * make.
338
+ *
339
+ * @param input - The entry
340
+ */
341
+ export function recordActivity(input) {
342
+ try {
343
+ getActivityLog().record(input);
344
+ }
345
+ catch {
346
+ // A broken log never breaks the action it describes.
347
+ }
348
+ }
349
+ //# sourceMappingURL=activity-log.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/activity/activity-log.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAiD,MAAM,gDAAgD,CAAC;AAuElI,MAAM,OAAO,GAAkB;IAC9B,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAC1C,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IAC9D,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;CAClC,CAAC;AAWF,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElG;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,MAAM,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACzI,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChJ,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC9B,MAAkD,EAClD,KAAiD;IAEjD,MAAM,CAAC,GAA4B,EAAE,CAAC;IACtC,MAAM,CAAC,GAA4B,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAAE,SAAS;QACxD,IAAI,EAAE,KAAK,SAAS;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,EAAE,KAAK,SAAS;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IACD,OAAO;QACN,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,QAAwB;IACvD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,OAAO,CAAC;QACb,KAAK,aAAa,CAAC;QACnB,KAAK,OAAO;YACX,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC7C,KAAK,OAAO;YACX,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;QACpG,KAAK,WAAW;YACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,IAAI,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClF;YACC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IAChE,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAwB;IACxD,IAAI,CAAC;QACJ,OAAO,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACR,yFAAyF;QACzF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACb,GAAG,CAAS;IACZ,EAAE,CAAgB;IAClB,GAAG,CAAa;IAChB,MAAM,CAAkB;IACjC,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACzC,QAAQ,GAAG,KAAK,CAAC;IACjB,GAAG,GAAG,CAAC,CAAC;IAEhB;;OAEG;IACH,YAAY,UAA8B,EAAE;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAClG,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAyB;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,KAAK,GAAkB;YAC5B,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC3G,EAAE;YACF,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;aACrB,IAAI,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClI,CAAC,CAAC,CAAC;QACJ,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,QAAuB,EAAE;QACnC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACJ,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS;YACV,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;gBAAE,MAAM;QAChC,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,YAAY,CAAC,KAAoB;QAC9C,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACJ,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,OAAO,KAAK;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;aACnF,IAAI,EAAE;aACN,OAAO,EAAE;aACT,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,kBAAkB,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACK,OAAO,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;CACD;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,EAAU;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAY;IAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2B,CAAC;QACrD,OAAO,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;IAClJ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,OAAO,CAAC,CAAgB,EAAE,CAAgB;IAClD,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAClH,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,IAAI,QAAQ,GAA8B,IAAI,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC7B,IAAI,CAAC,QAAQ;QAAE,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACnD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAA8B;IACtE,QAAQ,GAAG,GAAG,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAyB;IACvD,IAAI,CAAC;QACJ,cAAc,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACR,qDAAqD;IACtD,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"team-budget-gate.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/budget/team-budget-gate.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-budget-gate.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/budget/team-budget-gate.service.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ import { StorageService } from '../core/storage.service.js';
28
28
  import { TokenUsageService } from '../monitoring/token-usage.service.js';
29
29
  import { MESSAGE_SOURCES, ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
30
30
  import { formatError } from '../../utils/format-error.js';
31
+ import { recordActivity } from '../activity/activity-log.service.js';
31
32
  // ---------------------------------------------------------------------------
32
33
  // Constants
33
34
  // ---------------------------------------------------------------------------
@@ -304,6 +305,14 @@ export class TeamBudgetGateService {
304
305
  if (this.notified.length > NOTIFY_DEDUP_CAPACITY)
305
306
  this.notified.shift();
306
307
  const content = this.formatEnvelope(check);
308
+ // Activity log (crewly#881 / #853): the budget line a team crossed, once per level per day.
309
+ recordActivity({
310
+ actor: { type: 'system', id: 'budget-gate' },
311
+ action: 'budget.exceeded',
312
+ target: { type: 'team', id: check.teamId, name: check.teamName },
313
+ after: { level: check.level, tokensToday: check.usage.tokensToday, usdThisMonth: check.usage.usdThisMonth, ...(check.usage.maxTokensPerDay !== undefined ? { maxTokensPerDay: check.usage.maxTokensPerDay } : {}), ...(check.usage.maxUsdPerMonth !== undefined ? { maxUsdPerMonth: check.usage.maxUsdPerMonth } : {}) },
314
+ ...(check.detail ? { note: check.detail } : {}),
315
+ });
307
316
  if (this.eventBus) {
308
317
  try {
309
318
  this.eventBus.publish({
@@ -1 +1 @@
1
- {"version":3,"file":"team-budget-gate.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/budget/team-budget-gate.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-budget-gate.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/budget/team-budget-gate.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Which local process is on the other end of a TCP connection, and does it
3
+ * belong to an agent? (#999, specs/2026-10-03-owner-auth.md §4)
4
+ *
5
+ * Agents run as the owner's OS user, so they can read `~/.crewly/api-token`
6
+ * and could ask for a dashboard session over loopback. File permissions
7
+ * cannot stop that. What does distinguish an agent is how it was started:
8
+ * every agent process descends from this backend (PTY shells, crewly-agent
9
+ * children, Codex daemons started from a PTY), runs on an agent PTY's
10
+ * terminal, or carries an agent's environment. The owner's browser, terminal,
11
+ * Vite dev server and Electron app have none of these.
12
+ *
13
+ * For a connection from this host, this service finds the client process
14
+ * (`lsof`, or `ss` on Linux) and checks those signals against one `ps`
15
+ * snapshot (the environment signal is Linux-only: macOS does not expose
16
+ * another process's environment). A lookup that cannot run (tool missing)
17
+ * or times out answers `unknown`, and the caller fails open with a warning
18
+ * (residual risk 3 in the spec). A lookup that ran but found no client
19
+ * process — it exited first, which an agent can arrange by writing the
20
+ * request over a raw socket — answers `gone`, and the caller fails CLOSED.
21
+ *
22
+ * A determined process can still shed all three signals (double-fork,
23
+ * `setsid`, `env -i`). That is the same-OS-user limit the spec documents.
24
+ *
25
+ * @module services/core/peer-process.service
26
+ */
27
+ import * as os from 'os';
28
+ /** One row of the process table. */
29
+ export interface PeerProcessEntry {
30
+ ppid: number;
31
+ /** Controlling terminal (`??` / `?` when none) */
32
+ tty: string;
33
+ }
34
+ /** The verdict on a connection's client process. */
35
+ export type PeerVerdict = {
36
+ kind: 'remote';
37
+ } | {
38
+ kind: 'self';
39
+ } | {
40
+ kind: 'agent';
41
+ pid: number;
42
+ signal: 'ancestry' | 'tty' | 'env';
43
+ session: string | null;
44
+ } | {
45
+ kind: 'not-agent';
46
+ pid: number;
47
+ }
48
+ /**
49
+ * The lookup ran but the client process is not there (it exited before it
50
+ * could be looked up, or no socket matched). Fails CLOSED: an agent can
51
+ * write a request over a raw socket and exit at once (#1010 review).
52
+ */
53
+ | {
54
+ kind: 'gone';
55
+ reason: string;
56
+ }
57
+ /** The lookup could not run: the tool is missing or it timed out. Fails open. */
58
+ | {
59
+ kind: 'unknown';
60
+ reason: string;
61
+ };
62
+ /** The parts of a socket the lookup needs. */
63
+ export interface PeerSocketLike {
64
+ remoteAddress?: string;
65
+ remotePort?: number;
66
+ localPort?: number;
67
+ }
68
+ /** Injectable collaborators (tests). */
69
+ export interface PeerProcessDeps {
70
+ /** Pid of the client end of `clientPort → serverPort`, or null */
71
+ findPeerPid?: (clientPort: number, serverPort: number) => Promise<number | null>;
72
+ /** pid → {ppid, tty} for every process */
73
+ readTable?: () => Promise<Map<number, PeerProcessEntry>>;
74
+ /** The environment of a process, or null when unreadable */
75
+ readEnv?: (pid: number) => Promise<Record<string, string> | null>;
76
+ /** PTY shell pid → session name for the live agent sessions */
77
+ listSessionPids?: () => Map<number, string>;
78
+ /** This backend's pid */
79
+ selfPid?: number;
80
+ /** Whether an address belongs to this host */
81
+ isHostAddress?: (address: string) => boolean;
82
+ /** Lookup budget */
83
+ timeoutMs?: number;
84
+ }
85
+ /**
86
+ * Whether an address belongs to this host: loopback, or any of its own
87
+ * interface addresses (an agent can connect to the machine's LAN IP too).
88
+ *
89
+ * @param address - Remote address of a connection
90
+ * @param interfaces - `os.networkInterfaces()` (tests)
91
+ * @returns True for a connection from this machine
92
+ */
93
+ export declare function isHostAddress(address: string, interfaces?: NodeJS.Dict<os.NetworkInterfaceInfo[]>): boolean;
94
+ /**
95
+ * Parse `lsof -nP -iTCP:<port> -Fpn` output: the pid whose socket's LOCAL
96
+ * end is `clientPort` and remote end is `serverPort`.
97
+ *
98
+ * @param output - lsof field output (`p<pid>` / `n<a>:<p>-><b>:<q>` lines)
99
+ * @param clientPort - The client's ephemeral port
100
+ * @param serverPort - This backend's port
101
+ * @returns The client pid, or null
102
+ */
103
+ export declare function parseLsofPeer(output: string, clientPort: number, serverPort: number): number | null;
104
+ /**
105
+ * Parse `ss -Htnp '( sport = :<clientPort> )'` output: the first pid listed
106
+ * for a connection to `serverPort`.
107
+ *
108
+ * @param output - ss output
109
+ * @param serverPort - This backend's port
110
+ * @returns The client pid, or null
111
+ */
112
+ export declare function parseSsPeer(output: string, serverPort: number): number | null;
113
+ /**
114
+ * Parse `ps -Ao pid=,ppid=,tty=` output.
115
+ *
116
+ * @param output - ps output
117
+ * @returns pid → entry
118
+ */
119
+ export declare function parsePsTable(output: string): Map<number, PeerProcessEntry>;
120
+ /**
121
+ * Decide whether a process is an agent's, from a process-table snapshot.
122
+ *
123
+ * @param pid - The client process
124
+ * @param table - pid → {ppid, tty}
125
+ * @param selfPid - This backend's pid
126
+ * @param sessionPids - PTY shell pid → session name
127
+ * @returns `agent` with the signal that matched, or null
128
+ */
129
+ export declare function agentSignalFromTable(pid: number, table: ReadonlyMap<number, PeerProcessEntry>, selfPid: number, sessionPids: ReadonlyMap<number, string>): {
130
+ signal: 'ancestry' | 'tty';
131
+ session: string | null;
132
+ } | null;
133
+ /**
134
+ * Whether a lookup error means "could not look" (fail open) rather than
135
+ * "looked and it is not there" (fail closed): the tool is missing, or it
136
+ * was killed for running past its budget.
137
+ *
138
+ * @param error - The error
139
+ * @returns True for a missing tool or a timeout
140
+ */
141
+ export declare function isLookupUnavailable(error: unknown): boolean;
142
+ /**
143
+ * Classifies the client process of local connections, once per socket.
144
+ */
145
+ export declare class PeerProcessService {
146
+ private readonly cache;
147
+ private readonly deps;
148
+ /**
149
+ * @param deps - Injectable collaborators
150
+ */
151
+ constructor(deps?: PeerProcessDeps);
152
+ /**
153
+ * Classify the client of a connection. Cached per socket object (a
154
+ * keep-alive dashboard or CLI pays for one lookup).
155
+ *
156
+ * @param socket - The request's socket
157
+ * @returns The verdict
158
+ */
159
+ classify(socket: PeerSocketLike | null | undefined): Promise<PeerVerdict>;
160
+ /**
161
+ * Uncached classification.
162
+ *
163
+ * @param socket - The request's socket
164
+ * @returns The verdict
165
+ */
166
+ private lookup;
167
+ }
168
+ //# sourceMappingURL=peer-process.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-process.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/core/peer-process.service.ts"],"names":[],"mappings":"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"}