@marinoscar/platform-api 0.1.0-next.18 → 0.1.0-next.19

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 (167) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ai/runtime/ai-limits.service.d.ts.map +1 -1
  3. package/dist/ai/runtime/ai-limits.service.js +8 -1
  4. package/dist/ai/runtime/ai-limits.service.js.map +1 -1
  5. package/dist/ai/usage/ai-usage-admin.controller.d.ts +6 -3
  6. package/dist/ai/usage/ai-usage-admin.controller.d.ts.map +1 -1
  7. package/dist/ai/usage/ai-usage-admin.controller.js +31 -17
  8. package/dist/ai/usage/ai-usage-admin.controller.js.map +1 -1
  9. package/dist/ai/usage/ai-usage.controller.d.ts +5 -2
  10. package/dist/ai/usage/ai-usage.controller.d.ts.map +1 -1
  11. package/dist/ai/usage/ai-usage.controller.js +18 -11
  12. package/dist/ai/usage/ai-usage.controller.js.map +1 -1
  13. package/dist/ai/usage/ai-usage.service.d.ts +19 -4
  14. package/dist/ai/usage/ai-usage.service.d.ts.map +1 -1
  15. package/dist/ai/usage/ai-usage.service.js +84 -43
  16. package/dist/ai/usage/ai-usage.service.js.map +1 -1
  17. package/dist/ai/usage/dto/ai-usage.dto.d.ts +8 -0
  18. package/dist/ai/usage/dto/ai-usage.dto.d.ts.map +1 -1
  19. package/dist/ai/usage/dto/ai-usage.dto.js +16 -5
  20. package/dist/ai/usage/dto/ai-usage.dto.js.map +1 -1
  21. package/dist/core/index.d.ts +2 -0
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +7 -2
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/core/timezone/request-time-zone.d.ts +61 -0
  26. package/dist/core/timezone/request-time-zone.d.ts.map +1 -0
  27. package/dist/core/timezone/request-time-zone.js +71 -0
  28. package/dist/core/timezone/request-time-zone.js.map +1 -0
  29. package/dist/email/email-settings.controller.d.ts +5 -2
  30. package/dist/email/email-settings.controller.d.ts.map +1 -1
  31. package/dist/email/email-settings.controller.js +11 -5
  32. package/dist/email/email-settings.controller.js.map +1 -1
  33. package/dist/email/email-test-send.service.d.ts +11 -1
  34. package/dist/email/email-test-send.service.d.ts.map +1 -1
  35. package/dist/email/email-test-send.service.js +17 -3
  36. package/dist/email/email-test-send.service.js.map +1 -1
  37. package/dist/email/index.d.ts +2 -2
  38. package/dist/email/index.d.ts.map +1 -1
  39. package/dist/email/index.js +3 -1
  40. package/dist/email/index.js.map +1 -1
  41. package/dist/email/templates/backup-failed.email.d.ts.map +1 -1
  42. package/dist/email/templates/backup-failed.email.js +9 -5
  43. package/dist/email/templates/backup-failed.email.js.map +1 -1
  44. package/dist/email/templates/format-date.d.ts +39 -0
  45. package/dist/email/templates/format-date.d.ts.map +1 -0
  46. package/dist/email/templates/format-date.js +103 -0
  47. package/dist/email/templates/format-date.js.map +1 -0
  48. package/dist/email/templates/index.d.ts +2 -0
  49. package/dist/email/templates/index.d.ts.map +1 -1
  50. package/dist/email/templates/index.js +4 -1
  51. package/dist/email/templates/index.js.map +1 -1
  52. package/dist/email/templates/job-failed.email.d.ts +1 -1
  53. package/dist/email/templates/job-failed.email.d.ts.map +1 -1
  54. package/dist/email/templates/job-failed.email.js +6 -6
  55. package/dist/email/templates/job-failed.email.js.map +1 -1
  56. package/dist/email/templates/node-offline.email.d.ts.map +1 -1
  57. package/dist/email/templates/node-offline.email.js +11 -7
  58. package/dist/email/templates/node-offline.email.js.map +1 -1
  59. package/dist/email/templates/render-context.d.ts +5 -0
  60. package/dist/email/templates/render-context.d.ts.map +1 -1
  61. package/dist/email/templates/render-context.js.map +1 -1
  62. package/dist/email/templates/restore-completed.email.d.ts.map +1 -1
  63. package/dist/email/templates/restore-completed.email.js +9 -5
  64. package/dist/email/templates/restore-completed.email.js.map +1 -1
  65. package/dist/email/templates/role-changed.email.d.ts +1 -1
  66. package/dist/email/templates/role-changed.email.d.ts.map +1 -1
  67. package/dist/email/templates/role-changed.email.js +6 -7
  68. package/dist/email/templates/role-changed.email.js.map +1 -1
  69. package/dist/email/templates/test-email.email.d.ts +1 -1
  70. package/dist/email/templates/test-email.email.d.ts.map +1 -1
  71. package/dist/email/templates/test-email.email.js +6 -11
  72. package/dist/email/templates/test-email.email.js.map +1 -1
  73. package/dist/exports/export-job.d.ts +1 -0
  74. package/dist/exports/export-job.d.ts.map +1 -1
  75. package/dist/exports/export-job.js +2 -0
  76. package/dist/exports/export-job.js.map +1 -1
  77. package/dist/exports/export.types.d.ts +8 -0
  78. package/dist/exports/export.types.d.ts.map +1 -1
  79. package/dist/exports/exports.controller.d.ts +4 -2
  80. package/dist/exports/exports.controller.d.ts.map +1 -1
  81. package/dist/exports/exports.controller.js +15 -6
  82. package/dist/exports/exports.controller.js.map +1 -1
  83. package/dist/exports/exports.service.d.ts +5 -0
  84. package/dist/exports/exports.service.d.ts.map +1 -1
  85. package/dist/exports/exports.service.js +3 -0
  86. package/dist/exports/exports.service.js.map +1 -1
  87. package/dist/exports/handlers/export-run.handler.d.ts.map +1 -1
  88. package/dist/exports/handlers/export-run.handler.js +4 -1
  89. package/dist/exports/handlers/export-run.handler.js.map +1 -1
  90. package/dist/exports/index.d.ts +1 -0
  91. package/dist/exports/index.d.ts.map +1 -1
  92. package/dist/exports/index.js +7 -2
  93. package/dist/exports/index.js.map +1 -1
  94. package/dist/exports/testing/conformance.d.ts.map +1 -1
  95. package/dist/exports/testing/conformance.js +1 -0
  96. package/dist/exports/testing/conformance.js.map +1 -1
  97. package/dist/host/http/cors-options.d.ts +5 -1
  98. package/dist/host/http/cors-options.d.ts.map +1 -1
  99. package/dist/host/http/cors-options.js.map +1 -1
  100. package/dist/identity/pat/pat.controller.d.ts +4 -3
  101. package/dist/identity/pat/pat.controller.d.ts.map +1 -1
  102. package/dist/identity/pat/pat.controller.js +19 -5
  103. package/dist/identity/pat/pat.controller.js.map +1 -1
  104. package/dist/identity/pat/pat.service.d.ts +21 -0
  105. package/dist/identity/pat/pat.service.d.ts.map +1 -1
  106. package/dist/identity/pat/pat.service.js +27 -10
  107. package/dist/identity/pat/pat.service.js.map +1 -1
  108. package/dist/notifications/channels/browser-notification.channel.js +1 -1
  109. package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
  110. package/dist/notifications/channels/browser-templates.d.ts +12 -1
  111. package/dist/notifications/channels/browser-templates.d.ts.map +1 -1
  112. package/dist/notifications/channels/browser-templates.js +5 -4
  113. package/dist/notifications/channels/browser-templates.js.map +1 -1
  114. package/dist/notifications/channels/email-notification.channel.d.ts.map +1 -1
  115. package/dist/notifications/channels/email-notification.channel.js +3 -3
  116. package/dist/notifications/channels/email-notification.channel.js.map +1 -1
  117. package/dist/notifications/channels/push-notification.channel.js +1 -1
  118. package/dist/notifications/channels/push-notification.channel.js.map +1 -1
  119. package/dist/notifications/index.d.ts +1 -1
  120. package/dist/notifications/index.d.ts.map +1 -1
  121. package/dist/notifications/notification.types.d.ts +15 -0
  122. package/dist/notifications/notification.types.d.ts.map +1 -1
  123. package/dist/notifications/notification.types.js.map +1 -1
  124. package/dist/notifications/notifications.service.d.ts.map +1 -1
  125. package/dist/notifications/notifications.service.js +8 -0
  126. package/dist/notifications/notifications.service.js.map +1 -1
  127. package/dist/notifications/push-config.controller.d.ts +5 -2
  128. package/dist/notifications/push-config.controller.d.ts.map +1 -1
  129. package/dist/notifications/push-config.controller.js +11 -5
  130. package/dist/notifications/push-config.controller.js.map +1 -1
  131. package/dist/notifications/push-test.service.d.ts +1 -1
  132. package/dist/notifications/push-test.service.d.ts.map +1 -1
  133. package/dist/notifications/push-test.service.js +6 -4
  134. package/dist/notifications/push-test.service.js.map +1 -1
  135. package/dist/settings/settings-resolver.d.ts +28 -1
  136. package/dist/settings/settings-resolver.d.ts.map +1 -1
  137. package/dist/settings/settings-resolver.js +41 -0
  138. package/dist/settings/settings-resolver.js.map +1 -1
  139. package/dist/settings/settings.module.d.ts.map +1 -1
  140. package/dist/settings/settings.module.js +9 -4
  141. package/dist/settings/settings.module.js.map +1 -1
  142. package/dist/settings/user-settings/user-settings.service.d.ts.map +1 -1
  143. package/dist/settings/user-settings/user-settings.service.js +2 -4
  144. package/dist/settings/user-settings/user-settings.service.js.map +1 -1
  145. package/dist/sharing/grants/grants.service.js +2 -2
  146. package/dist/sharing/grants/grants.service.js.map +1 -1
  147. package/dist/sharing/groups/group-invites.service.js +1 -1
  148. package/dist/sharing/groups/group-invites.service.js.map +1 -1
  149. package/dist/sharing/groups/sharing-effects.d.ts +2 -1
  150. package/dist/sharing/groups/sharing-effects.d.ts.map +1 -1
  151. package/dist/sharing/groups/sharing-effects.js +4 -4
  152. package/dist/sharing/groups/sharing-effects.js.map +1 -1
  153. package/dist/sharing/index.d.ts +1 -1
  154. package/dist/sharing/index.d.ts.map +1 -1
  155. package/dist/sharing/index.js.map +1 -1
  156. package/dist/sharing/notifications/group-invitation.templates.d.ts +23 -0
  157. package/dist/sharing/notifications/group-invitation.templates.d.ts.map +1 -1
  158. package/dist/sharing/notifications/group-invitation.templates.js +17 -2
  159. package/dist/sharing/notifications/group-invitation.templates.js.map +1 -1
  160. package/dist/sharing/notifications/shared-with-you.templates.d.ts +1 -1
  161. package/dist/sharing/notifications/shared-with-you.templates.d.ts.map +1 -1
  162. package/dist/sharing/notifications/shared-with-you.templates.js +3 -2
  163. package/dist/sharing/notifications/shared-with-you.templates.js.map +1 -1
  164. package/dist/sharing/ports.d.ts +15 -2
  165. package/dist/sharing/ports.d.ts.map +1 -1
  166. package/dist/sharing/ports.js.map +1 -1
  167. package/package.json +3 -3
@@ -24,6 +24,7 @@ const operation_registry_1 = require("../core/operation-registry");
24
24
  const ai_feature_registry_1 = require("../features/ai-feature.registry");
25
25
  const provider_registry_1 = require("../core/provider-registry");
26
26
  const ai_usage_dto_1 = require("./dto/ai-usage.dto");
27
+ const timezone_1 = require("@marinoscar/platform-contract/timezone");
27
28
  // =============================================================================
28
29
  // AiUsageService — aggregates over `ai_usage_events` (issue #443, epic #420)
29
30
  // =============================================================================
@@ -41,10 +42,18 @@ const ai_usage_dto_1 = require("./dto/ai-usage.dto");
41
42
  // admin report and the `(user_id, created_at)` index for a user's own.
42
43
  //
43
44
  // ⚠ THE GROUP KEY IS A FIXED SQL FRAGMENT PICKED FROM `GROUP_KEY_SQL` BY AN
44
- // ENUM THE DTO VALIDATED — never text from the request. It must also contain
45
- // no bound parameter: it appears three times in each statement, and Postgres
46
- // only matches `GROUPING(expr)` / `SELECT expr` to `GROUP BY expr` when the
47
- // three are textually the same expression.
45
+ // ENUM THE DTO VALIDATED — never text from the request. The `day` key carries
46
+ // the report's time zone as a BOUND parameter (`AT TIME ZONE $n`), and a
47
+ // parameter repeated in `GROUPING(expr)` / `SELECT expr` / `GROUP BY expr`
48
+ // becomes three different placeholders that Postgres will not match. So the key
49
+ // is computed ONCE, in the derived table `src` (`gkey`), and every statement
50
+ // groups by the plain column.
51
+ //
52
+ // DAYS ARE CALENDAR DAYS IN THE REPORT'S TIME ZONE (the caller's `tz`, else
53
+ // their profile zone, else UTC), echoed back as `timeZone`. `from`/`to` are
54
+ // local midnights converted to instants, so a day may be 23 or 25 hours long.
55
+ // The AI DAILY LIMITS are not this: they reset at UTC midnight on purpose (see
56
+ // the limits service).
48
57
  //
49
58
  // Every count/sum is cast at the database (`::int`, `::float8`): `count(*)` is
50
59
  // `bigint` and `sum(int)` is `bigint`/`numeric`, which Prisma returns as a JS
@@ -58,8 +67,8 @@ const DAY_MS = 24 * 60 * 60 * 1000;
58
67
  exports.AI_USAGE_NO_USER_KEY = 'system';
59
68
  /** Stable reason code for an unusable range (in `details.reason`). */
60
69
  exports.AI_USAGE_RANGE_INVALID = 'AI_USAGE_RANGE_INVALID';
70
+ /** The group key fragments. `day` is built per report (it binds the zone), see {@link groupKeySql}. */
61
71
  const GROUP_KEY_SQL = {
62
- day: prisma_1.Prisma.raw(`to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD')`),
63
72
  user: prisma_1.Prisma.raw(`user_id::text`),
64
73
  model: prisma_1.Prisma.raw(`provider || ':' || model_id`),
65
74
  provider: prisma_1.Prisma.raw(`provider`),
@@ -113,10 +122,12 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
113
122
  * every organization's through the system client.
114
123
  */
115
124
  async report(query, now = new Date(), orgId) {
116
- const range = resolveAiUsageRange(query.from, query.to, now);
117
- const key = GROUP_KEY_SQL[query.groupBy];
118
- const where = whereSql(range, query);
119
125
  const db = orgId ? this.prisma.forOrg(orgId) : this.system.asSystem('admin-aggregate');
126
+ // A zone Intl accepts but Postgres does not know would make `AT TIME ZONE` fail: fall back to UTC.
127
+ const timeZone = await this.databaseKnowsZone(db, query.timeZone);
128
+ const range = resolveAiUsageRange(query.from, query.to, now, timeZone);
129
+ const key = prisma_1.Prisma.raw('gkey');
130
+ const src = sourceSql(groupKeySql(query.groupBy, range.timeZone), whereSql(range, query));
120
131
  const [rows, unitRows] = await Promise.all([
121
132
  db.$queryRaw(prisma_1.Prisma.sql `
122
133
  SELECT
@@ -131,8 +142,7 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
131
142
  (count(*) FILTER (WHERE key_source = 'org'))::int AS org_requests,
132
143
  coalesce(sum(input_tokens) FILTER (WHERE key_source = 'org'), 0)::float8 AS org_input_tokens,
133
144
  coalesce(sum(output_tokens) FILTER (WHERE key_source = 'org'), 0)::float8 AS org_output_tokens
134
- FROM ai_usage_events
135
- ${where}
145
+ FROM ${src}
136
146
  GROUP BY GROUPING SETS ((${key}), ())
137
147
  `),
138
148
  // `CASE` rather than a WHERE on `jsonb_typeof`: `jsonb_each` raises on a
@@ -144,12 +154,11 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
144
154
  ${key} AS key,
145
155
  u.unit AS unit,
146
156
  sum((u.amount)::numeric)::float8 AS amount
147
- FROM ai_usage_events,
157
+ FROM ${src},
148
158
  LATERAL jsonb_each(
149
159
  CASE WHEN jsonb_typeof(units) = 'object' THEN units ELSE '{}'::jsonb END
150
160
  ) AS u(unit, amount)
151
- ${where}
152
- AND jsonb_typeof(u.amount) = 'number'
161
+ WHERE jsonb_typeof(u.amount) = 'number'
153
162
  GROUP BY GROUPING SETS ((${key}, u.unit), (u.unit))
154
163
  `),
155
164
  ]);
@@ -177,7 +186,7 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
177
186
  }
178
187
  const priced = query.withCost === true && this.pricing !== undefined;
179
188
  if (priced) {
180
- const costs = await this.costs(db, key, where);
189
+ const costs = await this.costs(db, key, src);
181
190
  totals = { ...totals, cost: costs.total };
182
191
  for (const group of groups)
183
192
  group.bucket = { ...group.bucket, cost: costs.byKey.get(group.key) ?? null };
@@ -187,12 +196,32 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
187
196
  : await this.labelled(query.groupBy, groups);
188
197
  return {
189
198
  range: { from: range.from, to: range.to },
199
+ timeZone: range.timeZone,
190
200
  groupBy: query.groupBy,
191
201
  ...(query.withCost === true ? { priced } : {}),
192
202
  totals,
193
203
  series,
194
204
  };
195
205
  }
206
+ /** Per-zone answers of `pg_timezone_names`, kept for the life of the process. */
207
+ knownZones = new Map();
208
+ /**
209
+ * The zone to bucket in: `requested` when Postgres knows it (checked once per
210
+ * zone against `pg_timezone_names`, then cached), else UTC. UTC is never queried.
211
+ */
212
+ async databaseKnowsZone(db, requested) {
213
+ if (!requested || requested === timezone_1.DEFAULT_SERVER_TIME_ZONE)
214
+ return timezone_1.DEFAULT_SERVER_TIME_ZONE;
215
+ let known = this.knownZones.get(requested);
216
+ if (known === undefined) {
217
+ const rows = await db.$queryRaw(prisma_1.Prisma.sql `SELECT 1 FROM pg_timezone_names WHERE name = ${requested} LIMIT 1`);
218
+ known = Array.isArray(rows) && rows.length > 0;
219
+ this.knownZones.set(requested, known);
220
+ if (!known)
221
+ this.logger.warn(`Postgres does not know the time zone "${requested}"; the usage report falls back to UTC`);
222
+ }
223
+ return known ? requested : timezone_1.DEFAULT_SERVER_TIME_ZONE;
224
+ }
196
225
  /** Non-day groups, labelled, most requests first (ties by key, so the order is stable). */
197
226
  async labelled(groupBy, groups) {
198
227
  const emails = groupBy === 'user' ? await this.emailsFor(groups) : new Map();
@@ -243,7 +272,7 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
243
272
  * do not here, but `day` and `user` reports are different cuts of the same
244
273
  * slices).
245
274
  */
246
- async costs(db, key, where) {
275
+ async costs(db, key, src) {
247
276
  const pricing = this.pricing;
248
277
  const [rows, unitRows] = await Promise.all([
249
278
  db.$queryRaw(prisma_1.Prisma.sql `
@@ -257,8 +286,7 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
257
286
  coalesce(sum(output_tokens), 0)::float8 AS output_tokens,
258
287
  coalesce(sum(reasoning_tokens), 0)::float8 AS reasoning_tokens,
259
288
  coalesce(sum(cached_input_tokens), 0)::float8 AS cached_input_tokens
260
- FROM ai_usage_events
261
- ${where}
289
+ FROM ${src}
262
290
  GROUP BY ${key}, provider, model_id, operation
263
291
  `),
264
292
  db.$queryRaw(prisma_1.Prisma.sql `
@@ -269,12 +297,11 @@ let AiUsageService = AiUsageService_1 = class AiUsageService {
269
297
  operation,
270
298
  u.unit AS unit,
271
299
  sum((u.amount)::numeric)::float8 AS amount
272
- FROM ai_usage_events,
300
+ FROM ${src},
273
301
  LATERAL jsonb_each(
274
302
  CASE WHEN jsonb_typeof(units) = 'object' THEN units ELSE '{}'::jsonb END
275
303
  ) AS u(unit, amount)
276
- ${where}
277
- AND jsonb_typeof(u.amount) = 'number'
304
+ WHERE jsonb_typeof(u.amount) = 'number'
278
305
  GROUP BY ${key}, provider, model_id, operation, u.unit
279
306
  `),
280
307
  ]);
@@ -360,6 +387,19 @@ exports.AiUsageService = AiUsageService = AiUsageService_1 = __decorate([
360
387
  __param(3, (0, common_1.Inject)(ports_1.AI_PRICING)),
361
388
  __metadata("design:paramtypes", [Object, provider_registry_1.AiProviderRegistry, Object, Object])
362
389
  ], AiUsageService);
390
+ /**
391
+ * The group key expression. `day` is the calendar day in `timeZone`, bound as a
392
+ * parameter (the key is evaluated once, in {@link sourceSql}).
393
+ */
394
+ function groupKeySql(groupBy, timeZone) {
395
+ return groupBy === 'day'
396
+ ? prisma_1.Prisma.sql `to_char(created_at AT TIME ZONE ${timeZone}::text, 'YYYY-MM-DD')`
397
+ : GROUP_KEY_SQL[groupBy];
398
+ }
399
+ /** The filtered rows with the group key computed once as `gkey`. */
400
+ function sourceSql(key, where) {
401
+ return prisma_1.Prisma.sql `(SELECT *, ${key} AS gkey FROM ai_usage_events ${where}) AS src`;
402
+ }
363
403
  function whereSql(range, query) {
364
404
  const clauses = [
365
405
  prisma_1.Prisma.sql `created_at >= ${range.start}::timestamptz`,
@@ -381,45 +421,46 @@ function whereSql(range, query) {
381
421
  * The window a report covers. Pure, so the defaults and bounds are unit
382
422
  * testable without a database.
383
423
  *
384
- * Defaults: `to` = today (UTC); `from` = `to` minus 29 days (30 days
385
- * inclusive). Refused with 400 `AI_USAGE_RANGE_INVALID` when `from` is after
424
+ * Days are CALENDAR DAYS IN `timeZone`. Defaults: `to` = today there; `from` =
425
+ * `to` minus 29 days (30 days inclusive). `start` is local midnight of `from`
426
+ * and `end` local midnight after `to`, as instants, so a DST day is 23 or 25
427
+ * hours long. Refused with 400 `AI_USAGE_RANGE_INVALID` when `from` is after
386
428
  * `to` or the span exceeds `MAX_AI_USAGE_RANGE_DAYS` — refused, not clamped:
387
429
  * a caller who asked for a year and silently got a quarter would compare the
388
430
  * wrong numbers (the job-insights argument).
389
431
  */
390
- function resolveAiUsageRange(from, to, now) {
391
- const toDay = to ? parseDay(to) : startOfUtcDay(now);
392
- const fromDay = from ? parseDay(from) : new Date(toDay.getTime() - (ai_usage_dto_1.DEFAULT_AI_USAGE_RANGE_DAYS - 1) * DAY_MS);
393
- if (fromDay.getTime() > toDay.getTime()) {
432
+ function resolveAiUsageRange(from, to, now, timeZone = timezone_1.DEFAULT_SERVER_TIME_ZONE) {
433
+ const toDay = to ? checkedDay(to) : (0, timezone_1.zonedDateKey)(now, timeZone);
434
+ const fromDay = from ? checkedDay(from) : (0, timezone_1.addDaysToDateKey)(toDay, -(ai_usage_dto_1.DEFAULT_AI_USAGE_RANGE_DAYS - 1));
435
+ if (fromDay > toDay) {
394
436
  throw rangeError('`from` must not be after `to`.');
395
437
  }
396
- const days = Math.round((toDay.getTime() - fromDay.getTime()) / DAY_MS) + 1;
438
+ const days = Math.round((dayNumber(toDay) - dayNumber(fromDay))) + 1;
397
439
  if (days > ai_usage_dto_1.MAX_AI_USAGE_RANGE_DAYS) {
398
440
  throw rangeError(`The range covers ${days} days; at most ${ai_usage_dto_1.MAX_AI_USAGE_RANGE_DAYS} are allowed.`);
399
441
  }
400
442
  return {
401
- from: isoDay(fromDay),
402
- to: isoDay(toDay),
403
- start: fromDay,
404
- end: new Date(toDay.getTime() + DAY_MS),
443
+ from: fromDay,
444
+ to: toDay,
445
+ start: (0, timezone_1.zonedDayStart)(fromDay, timeZone),
446
+ end: (0, timezone_1.zonedDayStart)((0, timezone_1.addDaysToDateKey)(toDay, 1), timeZone),
447
+ timeZone,
405
448
  };
406
449
  }
407
- function parseDay(day) {
450
+ /** Whole days since the epoch of a `YYYY-MM-DD` (zone-free calendar arithmetic). */
451
+ function dayNumber(day) {
452
+ return Date.parse(`${day}T00:00:00.000Z`) / DAY_MS;
453
+ }
454
+ function checkedDay(day) {
408
455
  const parsed = new Date(`${day}T00:00:00.000Z`);
409
- if (Number.isNaN(parsed.getTime()) || isoDay(parsed) !== day) {
456
+ if (Number.isNaN(parsed.getTime()) || parsed.toISOString().slice(0, 10) !== day) {
410
457
  throw rangeError(`"${day}" is not a valid date (YYYY-MM-DD).`);
411
458
  }
412
- return parsed;
459
+ return day;
413
460
  }
414
461
  function rangeError(message) {
415
462
  return new common_1.BadRequestException({ message, details: { reason: exports.AI_USAGE_RANGE_INVALID } });
416
463
  }
417
- function startOfUtcDay(date) {
418
- return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
419
- }
420
- function isoDay(date) {
421
- return date.toISOString().slice(0, 10);
422
- }
423
464
  function emptyBucket() {
424
465
  return {
425
466
  requests: 0,
@@ -448,12 +489,12 @@ function toBucket(row, units) {
448
489
  orgKeyOutputTokens: Number(row.org_output_tokens),
449
490
  };
450
491
  }
451
- /** Every day of the range, in order, with a zero bucket where nothing was recorded. */
492
+ /** Every calendar day of the range, in order, with a zero bucket where nothing was recorded. */
452
493
  function zeroFilledDays(range, groups) {
453
494
  const byDay = new Map(groups.map((g) => [g.key, g.bucket]));
454
495
  const series = [];
455
- for (let t = range.start.getTime(); t < range.end.getTime(); t += DAY_MS) {
456
- const day = isoDay(new Date(t));
496
+ // Stepped on the calendar (never by 24 hours), so a DST day cannot skip or repeat a key.
497
+ for (let day = range.from; day <= range.to; day = (0, timezone_1.addDaysToDateKey)(day, 1)) {
457
498
  series.push({ key: day, label: day, ...(byDay.get(day) ?? emptyBucket()) });
458
499
  }
459
500
  return series;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-usage.service.js","sourceRoot":"","sources":["../../../src/ai/usage/ai-usage.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-usage.service.js","sourceRoot":"","sources":["../../../src/ai/usage/ai-usage.service.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export type AiUsageGroupBy = (typeof AI_USAGE_ADMIN_GROUP_BY)[number];
13
13
  export declare const aiUsageMeQuerySchema: z.ZodObject<{
14
14
  from: z.ZodOptional<z.ZodISODate>;
15
15
  to: z.ZodOptional<z.ZodISODate>;
16
+ tz: z.ZodOptional<z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>;
16
17
  groupBy: z.ZodDefault<z.ZodEnum<{
17
18
  model: "model";
18
19
  day: "day";
@@ -21,6 +22,7 @@ export declare const aiUsageMeQuerySchema: z.ZodObject<{
21
22
  export declare const aiUsageAdminQuerySchema: z.ZodObject<{
22
23
  from: z.ZodOptional<z.ZodISODate>;
23
24
  to: z.ZodOptional<z.ZodISODate>;
25
+ tz: z.ZodOptional<z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>;
24
26
  groupBy: z.ZodDefault<z.ZodEnum<{
25
27
  org: "org";
26
28
  user: "user";
@@ -44,6 +46,7 @@ export declare const aiUsageAdminQuerySchema: z.ZodObject<{
44
46
  export declare const aiUsageOrgQuerySchema: z.ZodObject<{
45
47
  from: z.ZodOptional<z.ZodISODate>;
46
48
  to: z.ZodOptional<z.ZodISODate>;
49
+ tz: z.ZodOptional<z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>;
47
50
  groupBy: z.ZodDefault<z.ZodEnum<{
48
51
  user: "user";
49
52
  model: "model";
@@ -61,6 +64,7 @@ export declare const aiUsageOrgQuerySchema: z.ZodObject<{
61
64
  declare const AiUsageOrgQueryDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
62
65
  from: z.ZodOptional<z.ZodISODate>;
63
66
  to: z.ZodOptional<z.ZodISODate>;
67
+ tz: z.ZodOptional<z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>;
64
68
  groupBy: z.ZodDefault<z.ZodEnum<{
65
69
  user: "user";
66
70
  model: "model";
@@ -81,6 +85,7 @@ export type AiUsageOrgQuery = z.output<typeof aiUsageOrgQuerySchema>;
81
85
  declare const AiUsageMeQueryDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
82
86
  from: z.ZodOptional<z.ZodISODate>;
83
87
  to: z.ZodOptional<z.ZodISODate>;
88
+ tz: z.ZodOptional<z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>;
84
89
  groupBy: z.ZodDefault<z.ZodEnum<{
85
90
  model: "model";
86
91
  day: "day";
@@ -91,6 +96,7 @@ export declare class AiUsageMeQueryDto extends AiUsageMeQueryDto_base {
91
96
  declare const AiUsageAdminQueryDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
92
97
  from: z.ZodOptional<z.ZodISODate>;
93
98
  to: z.ZodOptional<z.ZodISODate>;
99
+ tz: z.ZodOptional<z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>;
94
100
  groupBy: z.ZodDefault<z.ZodEnum<{
95
101
  org: "org";
96
102
  user: "user";
@@ -160,6 +166,7 @@ export declare const aiUsageReportSchema: z.ZodObject<{
160
166
  from: z.ZodISODate;
161
167
  to: z.ZodISODate;
162
168
  }, z.core.$strip>;
169
+ timeZone: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
163
170
  groupBy: z.ZodEnum<{
164
171
  org: "org";
165
172
  user: "user";
@@ -211,6 +218,7 @@ declare const AiUsageReportDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
211
218
  from: z.ZodISODate;
212
219
  to: z.ZodISODate;
213
220
  }, z.core.$strip>;
221
+ timeZone: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
214
222
  groupBy: z.ZodEnum<{
215
223
  org: "org";
216
224
  user: "user";
@@ -1 +1 @@
1
- {"version":3,"file":"ai-usage.dto.d.ts","sourceRoot":"","sources":["../../../../src/ai/usage/dto/ai-usage.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,+CAA+C;AAC/C,eAAO,MAAM,uBAAuB,2FAU1B,CAAC;AAEX,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,oFAAqF,CAAC;AAExH,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,2BAA4B,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAItE,eAAO,MAAM,oBAAoB;;;;;;;iBAM/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;iBAclC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;iBAShC,CAAC;;;;;;;;;;;;;;;;;;AAEH,qBAAa,kBAAmB,SAAQ,uBAAmC;CAAG;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;;;;;;;;;AAErE,qBAAa,iBAAkB,SAAQ,sBAAkC;CAAG;;;;;;;;;;;;;;;;;;;;AAC5E,qBAAa,oBAAqB,SAAQ,yBAAqC;CAAG;AAElF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAYzE;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;iBAqB9B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;iBAclC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qBAAa,gBAAiB,SAAQ,qBAAiC;CAAG;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"ai-usage.dto.d.ts","sourceRoot":"","sources":["../../../../src/ai/usage/dto/ai-usage.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,+CAA+C;AAC/C,eAAO,MAAM,uBAAuB,2FAU1B,CAAC;AAEX,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,oFAAqF,CAAC;AAExH,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,2BAA4B,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAItE,eAAO,MAAM,oBAAoB;;;;;;;;iBAQ/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;iBAgBlC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;iBAWhC,CAAC;;;;;;;;;;;;;;;;;;;AAEH,qBAAa,kBAAmB,SAAQ,uBAAmC;CAAG;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;;;;;;;;;;AAErE,qBAAa,iBAAkB,SAAQ,sBAAkC;CAAG;;;;;;;;;;;;;;;;;;;;;AAC5E,qBAAa,oBAAqB,SAAQ,yBAAqC;CAAG;AAElF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAYzE;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;iBAqB9B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;iBAclC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qBAAa,gBAAiB,SAAQ,qBAAiC;CAAG;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AiUsageReportDto = exports.aiUsageReportSchema = exports.aiUsageSeriesItemSchema = exports.aiUsageBucketSchema = exports.AiUsageAdminQueryDto = exports.AiUsageMeQueryDto = exports.AiUsageOrgQueryDto = exports.aiUsageOrgQuerySchema = exports.aiUsageAdminQuerySchema = exports.aiUsageMeQuerySchema = exports.AI_USAGE_ME_GROUP_BY = exports.AI_USAGE_ORG_GROUP_BY = exports.AI_USAGE_ADMIN_GROUP_BY = exports.DEFAULT_AI_USAGE_RANGE_DAYS = exports.MAX_AI_USAGE_RANGE_DAYS = void 0;
4
4
  const ai_1 = require("@marinoscar/platform-contract/ai");
5
+ const settings_1 = require("@marinoscar/platform-contract/settings");
5
6
  const nestjs_zod_1 = require("nestjs-zod");
6
7
  const zod_1 = require("zod");
7
8
  // =============================================================================
@@ -15,8 +16,10 @@ const zod_1 = require("zod");
15
16
  // renders either. Aggregated in SQL over `ai_usage_events` (the `created_at`
16
17
  // and `(user_id, created_at)` indexes); see `ai-usage.service.ts`.
17
18
  //
18
- // DATES ARE UTC CALENDAR DAYS, BOTH ENDS INCLUSIVE. `from=2026-09-01&to=
19
- // 2026-09-30` is thirty whole UTC days. Default: the last 30 days ending today;
19
+ // DATES ARE CALENDAR DAYS IN THE REPORT'S TIME ZONE, BOTH ENDS INCLUSIVE.
20
+ // `tz` (an IANA id) defaults to the caller's `profile.timezone`, then the
21
+ // `X-Time-Zone` header, then UTC; the report echoes the zone used as
22
+ // `timeZone`. `from=2026-09-01&to=2026-09-30` is thirty whole days there. Default: the last 30 days ending today;
20
23
  // the span is at most `MAX_AI_USAGE_RANGE_DAYS` (the job-insights bound).
21
24
  // =============================================================================
22
25
  /** Largest window a report may cover, in days (inclusive). Same bound as job insights. */
@@ -41,15 +44,19 @@ exports.AI_USAGE_ORG_GROUP_BY = ['day', 'user', 'model', 'provider', 'keySource'
41
44
  exports.AI_USAGE_ME_GROUP_BY = ['day', 'model'];
42
45
  const isoDay = zod_1.z.iso.date();
43
46
  exports.aiUsageMeQuerySchema = zod_1.z.object({
44
- /** First UTC day included (`YYYY-MM-DD`). Default: 29 days before `to`. */
47
+ /** First day included (`YYYY-MM-DD`, in `tz`). Default: 29 days before `to`. */
45
48
  from: isoDay.optional(),
46
- /** Last UTC day included (`YYYY-MM-DD`). Default: today (UTC). */
49
+ /** Last day included (`YYYY-MM-DD`, in `tz`). Default: today in `tz`. */
47
50
  to: isoDay.optional(),
51
+ /** IANA time zone the days are cut in. Default: your profile zone, then `X-Time-Zone`, then UTC. */
52
+ tz: settings_1.timeZoneIdSchema.optional(),
48
53
  groupBy: zod_1.z.enum(exports.AI_USAGE_ME_GROUP_BY).default('day'),
49
54
  });
50
55
  exports.aiUsageAdminQuerySchema = zod_1.z.object({
51
56
  from: isoDay.optional(),
52
57
  to: isoDay.optional(),
58
+ /** IANA time zone the days are cut in. Default: the caller's profile zone, then `X-Time-Zone`, then UTC. */
59
+ tz: settings_1.timeZoneIdSchema.optional(),
53
60
  groupBy: zod_1.z.enum(exports.AI_USAGE_ADMIN_GROUP_BY).default('day'),
54
61
  /** Only this user's events. */
55
62
  userId: zod_1.z.uuid().optional(),
@@ -69,6 +76,8 @@ exports.aiUsageAdminQuerySchema = zod_1.z.object({
69
76
  exports.aiUsageOrgQuerySchema = zod_1.z.object({
70
77
  from: isoDay.optional(),
71
78
  to: isoDay.optional(),
79
+ /** IANA time zone the days are cut in. Default: the caller's profile zone, then `X-Time-Zone`, then UTC. */
80
+ tz: settings_1.timeZoneIdSchema.optional(),
72
81
  groupBy: zod_1.z.enum(exports.AI_USAGE_ORG_GROUP_BY).default('day'),
73
82
  userId: zod_1.z.uuid().optional(),
74
83
  provider: zod_1.z.string().min(1).max(64).optional(),
@@ -141,8 +150,10 @@ exports.aiUsageSeriesItemSchema = exports.aiUsageBucketSchema.extend({
141
150
  label: zod_1.z.string(),
142
151
  });
143
152
  exports.aiUsageReportSchema = zod_1.z.object({
144
- /** The window actually reported, UTC days, both inclusive. */
153
+ /** The window actually reported: calendar days in `timeZone`, both inclusive. */
145
154
  range: zod_1.z.object({ from: isoDay, to: isoDay }),
155
+ /** The IANA zone the days were cut in (the request's `tz`, else the caller's zone, else `UTC`). */
156
+ timeZone: settings_1.timeZoneIdSchema,
146
157
  groupBy: zod_1.z.enum(exports.AI_USAGE_ADMIN_GROUP_BY),
147
158
  /** Whether a pricing port is bound, so buckets carry a `cost` (PP-14.17). */
148
159
  priced: zod_1.z.boolean().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"ai-usage.dto.js","sourceRoot":"","sources":["../../../../src/ai/usage/dto/ai-usage.dto.ts"],"names":[],"mappings":";;;AAAA,yDAAwF;AACxF,2CAA0C;AAC1C,6BAAwB;AAExB,gFAAgF;AAChF,wEAAwE;AACxE,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,mEAAmE;AACnE,EAAE;AACF,yEAAyE;AACzE,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF,0FAA0F;AAC7E,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,gFAAgF;AACnE,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAE9C,+CAA+C;AAClC,QAAA,uBAAuB,GAAG;IACrC,KAAK;IACL,MAAM;IACN,OAAO;IACP,UAAU;IACV,WAAW;IACX,KAAK;IACL,mFAAmF;IACnF,SAAS;IACT,WAAW;CACH,CAAC;AAEX,gGAAgG;AACnF,QAAA,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAExH,iFAAiF;AACpE,QAAA,oBAAoB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAC;AAI9D,MAAM,MAAM,GAAG,OAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAEf,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;IACvB,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,OAAC,CAAC,IAAI,CAAC,4BAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACrD,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,OAAC,CAAC,IAAI,CAAC,+BAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACvD,+BAA+B;IAC/B,MAAM,EAAE,OAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC3B,8CAA8C;IAC9C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,4DAA4D;IAC5D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,+EAA+E;IAC/E,KAAK,EAAE,OAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC1B,2FAA2F;IAC3F,OAAO,EAAE,sBAAiB,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,OAAC,CAAC,IAAI,CAAC,6BAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD,MAAM,EAAE,OAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,qEAAqE;IACrE,OAAO,EAAE,sBAAiB,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAa,kBAAmB,SAAQ,IAAA,yBAAY,EAAC,6BAAqB,CAAC;CAAG;AAA9E,gDAA8E;AAG9E,MAAa,iBAAkB,SAAQ,IAAA,yBAAY,EAAC,4BAAoB,CAAC;CAAG;AAA5E,8CAA4E;AAC5E,MAAa,oBAAqB,SAAQ,IAAA,yBAAY,EAAC,+BAAuB,CAAC;CAAG;AAAlF,oDAAkF;AAKlF,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAErD;;;;;;;;;GASG;AACU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;IACxB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC7B,KAAK,EAAE,WAAW;IAClB,sEAAsE;IACtE,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAChC,qDAAqD;IACrD,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC7B,sDAAsD;IACtD,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC9B;;;;;OAKG;IACH,IAAI,EAAE,sBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,2BAAmB,CAAC,MAAM,CAAC;IAChE;;;;;;OAMG;IACH,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf;;;OAGG;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,8DAA8D;IAC9D,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAC7C,OAAO,EAAE,OAAC,CAAC,IAAI,CAAC,+BAAuB,CAAC;IACxC,6EAA6E;IAC7E,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,2BAAmB;IAC3B;;;;OAIG;IACH,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAuB,CAAC;CACzC,CAAC,CAAC;AAEH,MAAa,gBAAiB,SAAQ,IAAA,yBAAY,EAAC,2BAAmB,CAAC;CAAG;AAA1E,4CAA0E"}
1
+ {"version":3,"file":"ai-usage.dto.js","sourceRoot":"","sources":["../../../../src/ai/usage/dto/ai-usage.dto.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ export * from './registry/index';
2
2
  export { RegistryFreezeService } from './registry/registry-freeze.service';
3
3
  export * from './pluggable/index';
4
4
  export * from './host/index';
5
+ export { REQUEST_TIME_ZONE_RESOLVER, chooseTimeZone, readRequestTimeZoneHeader, resolveRequestTimeZoneWith, } from './timezone/request-time-zone';
6
+ export type { RequestTimeZoneResolver, RequestWithHeaders } from './timezone/request-time-zone';
5
7
  export { buildPermissionCatalog, catalogGrants, composePermissionCatalog, grantPermissions, permissionIds, permissionRegistry, registerPermissions, registerRoles, roleGrantRegistry, roleIds, roleRegistry, } from './permissions/index';
6
8
  export type { CatalogGrant, DeclarationList, Declarations, IdentifiedDeclaration, PermissionCatalog, PermissionCatalogDeclarations, PermissionCatalogEntry, PermissionCatalogSource, PermissionDeclaration, PermissionDeclarationMap, PermissionScope, RoleDeclaration, RoleDeclarationMap, RoleGrantDeclaration, RoleGrantEntry, } from './permissions/index';
7
9
  export type { BuiltinCredentialKind, BuiltinPrincipalKind, CredentialKindDef, GroupMembership, NodePrincipal, OrgMembership, Principal, PrincipalKindDef, Scope, SystemActor, TenancyMode, UserPrincipal, } from './principal/index';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
22
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.ownerFieldOf = exports.forUser = exports.asSystem = exports.ScopedAccessError = exports.openApiTags = exports.openApiTagGroups = exports.OPENAPI_TAG_NAME_PATTERN = exports.verifyEncryptionKeyAtStartup = exports.userCredentialPurpose = exports.orgCredentialPurpose = exports.isCanonicalUuid = exports.encryptSecret = exports.deriveSigningKey = exports.decryptSecret = exports.assertEncryptionKeyConfigured = exports.USER_CREDENTIAL_DOMAIN_PREFIX = exports.ORG_CREDENTIAL_DOMAIN_PREFIX = exports.ErrorDto = exports.DatabaseSeedException = exports.hasVerbatimErrorBody = exports.withVerbatimErrorBody = exports.registerErrorCode = exports.isErrorCodeForStatus = exports.errorCodeRegistry = exports.defaultErrorCodeForStatus = exports.FALLBACK_ERROR_CODE = exports.ERROR_CODE_PATTERN = exports.BUILTIN_ERROR_CODES = exports.HttpExceptionFilter = exports.HTTP_EXCEPTION_FILTER_OPTIONS = exports.requireCredentialKind = exports.registerPrincipalKind = exports.registerCredentialKind = exports.principalKindRegistry = exports.isCredentialKind = exports.credentialKindRegistry = exports.UnknownCredentialKindError = exports.KIND_ID_PATTERN = exports.roleRegistry = exports.roleIds = exports.roleGrantRegistry = exports.registerRoles = exports.registerPermissions = exports.permissionRegistry = exports.permissionIds = exports.grantPermissions = exports.composePermissionCatalog = exports.catalogGrants = exports.buildPermissionCatalog = exports.RegistryFreezeService = void 0;
26
- exports.buildDatabaseUrl = exports.ApiDataResponse = exports.AllowDuringMaintenance = exports.ALLOW_DURING_MAINTENANCE_KEY = exports.systemScopeExtension = exports.systemAccessReasonRegistry = exports.runInScope = exports.runInOrg = exports.runAsSystem = exports.registerSystemAccessReason = exports.registerModelOwnership = exports.orgScopeExtension = exports.orgFieldOf = exports.orgColumnOf = exports.modelsOfKind = exports.modelOwnershipRegistry = exports.isSystemAccessReason = exports.forSystem = exports.forScope = exports.forOrg = exports.SYSTEM_ACCESS_REASON_ID_PATTERN = exports.SYSTEM_ACCESS_REASONS = exports.RLS_SETTINGS = exports.BUILTIN_SYSTEM_ACCESS_REASONS = exports.userScopeExtension = exports.userOwnedModelRegistry = exports.registerUserOwnedModels = exports.ownerRelationOf = void 0;
25
+ exports.openApiTags = exports.openApiTagGroups = exports.OPENAPI_TAG_NAME_PATTERN = exports.verifyEncryptionKeyAtStartup = exports.userCredentialPurpose = exports.orgCredentialPurpose = exports.isCanonicalUuid = exports.encryptSecret = exports.deriveSigningKey = exports.decryptSecret = exports.assertEncryptionKeyConfigured = exports.USER_CREDENTIAL_DOMAIN_PREFIX = exports.ORG_CREDENTIAL_DOMAIN_PREFIX = exports.ErrorDto = exports.DatabaseSeedException = exports.hasVerbatimErrorBody = exports.withVerbatimErrorBody = exports.registerErrorCode = exports.isErrorCodeForStatus = exports.errorCodeRegistry = exports.defaultErrorCodeForStatus = exports.FALLBACK_ERROR_CODE = exports.ERROR_CODE_PATTERN = exports.BUILTIN_ERROR_CODES = exports.HttpExceptionFilter = exports.HTTP_EXCEPTION_FILTER_OPTIONS = exports.requireCredentialKind = exports.registerPrincipalKind = exports.registerCredentialKind = exports.principalKindRegistry = exports.isCredentialKind = exports.credentialKindRegistry = exports.UnknownCredentialKindError = exports.KIND_ID_PATTERN = exports.roleRegistry = exports.roleIds = exports.roleGrantRegistry = exports.registerRoles = exports.registerPermissions = exports.permissionRegistry = exports.permissionIds = exports.grantPermissions = exports.composePermissionCatalog = exports.catalogGrants = exports.buildPermissionCatalog = exports.resolveRequestTimeZoneWith = exports.readRequestTimeZoneHeader = exports.chooseTimeZone = exports.REQUEST_TIME_ZONE_RESOLVER = exports.RegistryFreezeService = void 0;
26
+ exports.buildDatabaseUrl = exports.ApiDataResponse = exports.AllowDuringMaintenance = exports.ALLOW_DURING_MAINTENANCE_KEY = exports.systemScopeExtension = exports.systemAccessReasonRegistry = exports.runInScope = exports.runInOrg = exports.runAsSystem = exports.registerSystemAccessReason = exports.registerModelOwnership = exports.orgScopeExtension = exports.orgFieldOf = exports.orgColumnOf = exports.modelsOfKind = exports.modelOwnershipRegistry = exports.isSystemAccessReason = exports.forSystem = exports.forScope = exports.forOrg = exports.SYSTEM_ACCESS_REASON_ID_PATTERN = exports.SYSTEM_ACCESS_REASONS = exports.RLS_SETTINGS = exports.BUILTIN_SYSTEM_ACCESS_REASONS = exports.userScopeExtension = exports.userOwnedModelRegistry = exports.registerUserOwnedModels = exports.ownerRelationOf = exports.ownerFieldOf = exports.forUser = exports.asSystem = exports.ScopedAccessError = void 0;
27
27
  __exportStar(require("./registry/index"), exports);
28
28
  var registry_freeze_service_1 = require("./registry/registry-freeze.service");
29
29
  Object.defineProperty(exports, "RegistryFreezeService", { enumerable: true, get: function () { return registry_freeze_service_1.RegistryFreezeService; } });
@@ -36,6 +36,11 @@ __exportStar(require("./pluggable/index"), exports);
36
36
  // DI-time ports (`AUDIT_SINK`, `SYSTEM_SETTINGS_STORE`, `PLATFORM_PRISMA`) and
37
37
  // `PlatformHostModule`, which binds them. Every packaged slice reuses them.
38
38
  __exportStar(require("./host/index"), exports);
39
+ var request_time_zone_1 = require("./timezone/request-time-zone");
40
+ Object.defineProperty(exports, "REQUEST_TIME_ZONE_RESOLVER", { enumerable: true, get: function () { return request_time_zone_1.REQUEST_TIME_ZONE_RESOLVER; } });
41
+ Object.defineProperty(exports, "chooseTimeZone", { enumerable: true, get: function () { return request_time_zone_1.chooseTimeZone; } });
42
+ Object.defineProperty(exports, "readRequestTimeZoneHeader", { enumerable: true, get: function () { return request_time_zone_1.readRequestTimeZoneHeader; } });
43
+ Object.defineProperty(exports, "resolveRequestTimeZoneWith", { enumerable: true, get: function () { return request_time_zone_1.resolveRequestTimeZoneWith; } });
39
44
  // Roles and permissions (issue #676, packaged by #866): the role and
40
45
  // permission registries every slice declares into, the declaration types, and
41
46
  // the seed catalog built from them. Framework-free, like the registry
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAChF,0DAA0D;;;;;;;;;;;;;;;;;;AAE1D,mDAAiC;AACjC,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAE9B,sEAAsE;AACtE,4EAA4E;AAC5E,8EAA8E;AAC9E,0FAA0F;AAC1F,oDAAkC;AAElC,2EAA2E;AAC3E,+EAA+E;AAC/E,4EAA4E;AAC5E,+CAA6B;AAE7B,qEAAqE;AACrE,8EAA8E;AAC9E,sEAAsE;AACtE,iEAAiE;AACjE,uCAAuC;AACvC,6CAY6B;AAX3B,+GAAA,sBAAsB,OAAA;AACtB,sGAAA,aAAa,OAAA;AACb,iHAAA,wBAAwB,OAAA;AACxB,yGAAA,gBAAgB,OAAA;AAChB,sGAAA,aAAa,OAAA;AACb,2GAAA,kBAAkB,OAAA;AAClB,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,gGAAA,OAAO,OAAA;AACP,qGAAA,YAAY,OAAA;AAoCd,2CAS2B;AARzB,wGAAA,eAAe,OAAA;AACf,mHAAA,0BAA0B,OAAA;AAC1B,+GAAA,sBAAsB,OAAA;AACtB,yGAAA,gBAAgB,OAAA;AAChB,8GAAA,qBAAqB,OAAA;AACrB,+GAAA,sBAAsB,OAAA;AACtB,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AAyEvB,sEAAsE;AACtE,mEAAmE;AACnE,wEAAoG;AAA3F,sIAAA,6BAA6B,OAAA;AAAE,4HAAA,mBAAmB,OAAA;AAE3D,mFAAmF;AACnF,oDAQ8B;AAP5B,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,wHAAA,yBAAyB,OAAA;AACzB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AACpB,gHAAA,iBAAiB,OAAA;AAGnB,wFAAqG;AAA5F,sIAAA,qBAAqB,OAAA;AAAE,qIAAA,oBAAoB,OAAA;AACpD,4EAAyE;AAAhE,gIAAA,qBAAqB,OAAA;AAC9B,gDAA8C;AAArC,qGAAA,QAAQ,OAAA;AAEjB,uEAAuE;AACvE,+EAA+E;AAC/E,0DAA0D;AAC1D,kEAAkE;AAClE,wDAUgC;AAT9B,6HAAA,4BAA4B,OAAA;AAC5B,8HAAA,6BAA6B,OAAA;AAC7B,8HAAA,6BAA6B,OAAA;AAC7B,8GAAA,aAAa,OAAA;AACb,iHAAA,gBAAgB,OAAA;AAChB,8GAAA,aAAa,OAAA;AACb,gHAAA,eAAe,OAAA;AACf,qHAAA,oBAAoB,OAAA;AACpB,sHAAA,qBAAqB,OAAA;AAEvB,sFAAqF;AAA5E,4IAAA,4BAA4B,OAAA;AAErC,0EAA0E;AAC1E,wEAAwE;AACxE,uEAIwC;AAHtC,gIAAA,wBAAwB,OAAA;AACxB,wHAAA,gBAAgB,OAAA;AAChB,mHAAA,WAAW,OAAA;AAIb,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,0DAA0D;AAC1D,6CAS6B;AAR3B,0GAAA,iBAAiB,OAAA;AACjB,iGAAA,QAAQ,OAAA;AACR,gGAAA,OAAO,OAAA;AACP,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,gHAAA,uBAAuB,OAAA;AACvB,+GAAA,sBAAsB,OAAA;AACtB,2GAAA,kBAAkB,OAAA;AAWpB,6EAA6E;AAC7E,4EAA4E;AAC5E,4DAA4D;AAC5D,6CAqB6B;AApB3B,sHAAA,6BAA6B,OAAA;AAC7B,qGAAA,YAAY,OAAA;AACZ,8GAAA,qBAAqB,OAAA;AACrB,wHAAA,+BAA+B,OAAA;AAC/B,+FAAA,MAAM,OAAA;AACN,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,6GAAA,oBAAoB,OAAA;AACpB,+GAAA,sBAAsB,OAAA;AACtB,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AACV,0GAAA,iBAAiB,OAAA;AACjB,+GAAA,sBAAsB,OAAA;AACtB,mHAAA,0BAA0B,OAAA;AAC1B,oGAAA,WAAW,OAAA;AACX,iGAAA,QAAQ,OAAA;AACR,mGAAA,UAAU,OAAA;AACV,mHAAA,0BAA0B,OAAA;AAC1B,6GAAA,oBAAoB,OAAA;AAgBtB,6EAA6E;AAC7E,2EAA2E;AAC3E,iDAAiD;AACjD,uGAAwH;AAA/G,kJAAA,4BAA4B,OAAA;AAAE,4IAAA,sBAAsB,OAAA;AAC7D,qFAAwE;AAA/D,8HAAA,eAAe,OAAA;AAGxB,8EAA8E;AAC9E,uEAAuE;AACvE,+CAAkD;AAAzC,gHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The minimal request shape the header reader needs (a Fastify request fits).
3
+ *
4
+ * @stability experimental
5
+ */
6
+ export interface RequestWithHeaders {
7
+ /** The request headers, lower-cased names as Node and Fastify deliver them. */
8
+ readonly headers: Readonly<Record<string, string | string[] | undefined>>;
9
+ }
10
+ /**
11
+ * Injection token of the request time zone resolver. Provided globally by
12
+ * `SettingsModule`; inject it `@Optional()` from a slice that cannot import settings.
13
+ *
14
+ * @stability experimental
15
+ */
16
+ export declare const REQUEST_TIME_ZONE_RESOLVER: unique symbol;
17
+ /**
18
+ * Resolves the zone for a request: profile, then header, then UTC.
19
+ *
20
+ * @stability experimental
21
+ */
22
+ export interface RequestTimeZoneResolver {
23
+ /**
24
+ * @param request - the incoming request (its `X-Time-Zone` header is the second choice).
25
+ * @param userId - the requester, when signed in.
26
+ * @returns a valid IANA zone id; never throws.
27
+ */
28
+ resolveRequestTimeZone(request: RequestWithHeaders | undefined, userId?: string | null): Promise<string>;
29
+ }
30
+ /**
31
+ * The valid `X-Time-Zone` header of a request, or `null` when absent or not an IANA zone.
32
+ *
33
+ * @param request - the request, or `undefined`.
34
+ * @returns the zone id, or `null`.
35
+ *
36
+ * @stability experimental
37
+ */
38
+ export declare function readRequestTimeZoneHeader(request: RequestWithHeaders | undefined): string | null;
39
+ /**
40
+ * The pure ordering: stored profile zone, then header zone, then `UTC`.
41
+ *
42
+ * @param profileZone - the stored `profile.timezone`, if any.
43
+ * @param headerZone - the validated `X-Time-Zone`, if any.
44
+ * @returns the zone to use.
45
+ *
46
+ * @stability experimental
47
+ */
48
+ export declare function chooseTimeZone(profileZone: string | null | undefined, headerZone: string | null | undefined): string;
49
+ /**
50
+ * Resolves a request's zone through an optional resolver. With no resolver
51
+ * (no settings slice mounted) the header and then `UTC` decide.
52
+ *
53
+ * @param resolver - the injected {@link RequestTimeZoneResolver}, if any.
54
+ * @param request - the incoming request.
55
+ * @param userId - the requester.
56
+ * @returns a valid IANA zone id.
57
+ *
58
+ * @stability experimental
59
+ */
60
+ export declare function resolveRequestTimeZoneWith(resolver: RequestTimeZoneResolver | undefined | null, request: RequestWithHeaders | undefined, userId?: string | null): Promise<string>;
61
+ //# sourceMappingURL=request-time-zone.d.ts.map