@carlonicora/nestjs-neo4jsonapi 1.117.0 → 1.119.0

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 (165) hide show
  1. package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts +30 -0
  2. package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts.map +1 -1
  3. package/dist/agents/contextualiser/contexts/notebook.context.d.ts +10 -0
  4. package/dist/agents/contextualiser/contexts/notebook.context.d.ts.map +1 -1
  5. package/dist/agents/contextualiser/contexts/notebook.context.js +2 -0
  6. package/dist/agents/contextualiser/contexts/notebook.context.js.map +1 -1
  7. package/dist/agents/contextualiser/contextualiser.module.d.ts.map +1 -1
  8. package/dist/agents/contextualiser/contextualiser.module.js +4 -2
  9. package/dist/agents/contextualiser/contextualiser.module.js.map +1 -1
  10. package/dist/agents/contextualiser/interfaces/contextualiser.response.interface.d.ts +2 -4
  11. package/dist/agents/contextualiser/interfaces/contextualiser.response.interface.d.ts.map +1 -1
  12. package/dist/agents/contextualiser/interfaces/retrieval.source.interface.d.ts +38 -0
  13. package/dist/agents/contextualiser/interfaces/retrieval.source.interface.d.ts.map +1 -0
  14. package/dist/agents/contextualiser/interfaces/retrieval.source.interface.js +8 -0
  15. package/dist/agents/contextualiser/interfaces/retrieval.source.interface.js.map +1 -0
  16. package/dist/agents/contextualiser/nodes/chunk.node.service.d.ts +3 -1
  17. package/dist/agents/contextualiser/nodes/chunk.node.service.d.ts.map +1 -1
  18. package/dist/agents/contextualiser/nodes/chunk.node.service.js +12 -2
  19. package/dist/agents/contextualiser/nodes/chunk.node.service.js.map +1 -1
  20. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.d.ts +4 -1
  21. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.d.ts.map +1 -1
  22. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js +59 -12
  23. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js.map +1 -1
  24. package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js +1 -1
  25. package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js.map +1 -1
  26. package/dist/agents/contextualiser/services/contextualiser.service.d.ts +11 -1
  27. package/dist/agents/contextualiser/services/contextualiser.service.d.ts.map +1 -1
  28. package/dist/agents/contextualiser/services/contextualiser.service.js +25 -4
  29. package/dist/agents/contextualiser/services/contextualiser.service.js.map +1 -1
  30. package/dist/agents/drift/drift.module.d.ts.map +1 -1
  31. package/dist/agents/drift/drift.module.js +9 -2
  32. package/dist/agents/drift/drift.module.js.map +1 -1
  33. package/dist/agents/graph.creator/interfaces/chunk.analysis.interface.d.ts +3 -0
  34. package/dist/agents/graph.creator/interfaces/chunk.analysis.interface.d.ts.map +1 -1
  35. package/dist/agents/graph.creator/services/graph.creator.service.d.ts +11 -0
  36. package/dist/agents/graph.creator/services/graph.creator.service.d.ts.map +1 -1
  37. package/dist/agents/graph.creator/services/graph.creator.service.js +12 -1
  38. package/dist/agents/graph.creator/services/graph.creator.service.js.map +1 -1
  39. package/dist/agents/index.d.ts +5 -1
  40. package/dist/agents/index.d.ts.map +1 -1
  41. package/dist/agents/index.js +4 -1
  42. package/dist/agents/index.js.map +1 -1
  43. package/dist/agents/prompts/index.d.ts +3 -1
  44. package/dist/agents/prompts/index.d.ts.map +1 -1
  45. package/dist/agents/prompts/index.js +8 -2
  46. package/dist/agents/prompts/index.js.map +1 -1
  47. package/dist/agents/responder/contexts/responder.context.d.ts +102 -0
  48. package/dist/agents/responder/contexts/responder.context.d.ts.map +1 -1
  49. package/dist/agents/responder/contexts/responder.context.js +2 -0
  50. package/dist/agents/responder/contexts/responder.context.js.map +1 -1
  51. package/dist/agents/responder/interfaces/responder.response.interface.d.ts +4 -0
  52. package/dist/agents/responder/interfaces/responder.response.interface.d.ts.map +1 -1
  53. package/dist/agents/responder/interfaces/unified.trace.interface.d.ts +13 -0
  54. package/dist/agents/responder/interfaces/unified.trace.interface.d.ts.map +1 -1
  55. package/dist/agents/responder/nodes/planner.node.service.d.ts +6 -2
  56. package/dist/agents/responder/nodes/planner.node.service.d.ts.map +1 -1
  57. package/dist/agents/responder/nodes/planner.node.service.js +10 -5
  58. package/dist/agents/responder/nodes/planner.node.service.js.map +1 -1
  59. package/dist/agents/responder/nodes/responder.answer.node.service.d.ts +6 -0
  60. package/dist/agents/responder/nodes/responder.answer.node.service.d.ts.map +1 -1
  61. package/dist/agents/responder/nodes/responder.answer.node.service.js +12 -1
  62. package/dist/agents/responder/nodes/responder.answer.node.service.js.map +1 -1
  63. package/dist/agents/responder/responder.module.d.ts.map +1 -1
  64. package/dist/agents/responder/responder.module.js +6 -2
  65. package/dist/agents/responder/responder.module.js.map +1 -1
  66. package/dist/agents/responder/services/responder.service.d.ts +20 -1
  67. package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
  68. package/dist/agents/responder/services/responder.service.js +61 -4
  69. package/dist/agents/responder/services/responder.service.js.map +1 -1
  70. package/dist/agents/summariser/services/summariser.service.d.ts +1 -0
  71. package/dist/agents/summariser/services/summariser.service.d.ts.map +1 -1
  72. package/dist/agents/summariser/services/summariser.service.js +20 -1
  73. package/dist/agents/summariser/services/summariser.service.js.map +1 -1
  74. package/dist/agents/summariser/utils/tldr.sanitizer.d.ts +18 -0
  75. package/dist/agents/summariser/utils/tldr.sanitizer.d.ts.map +1 -0
  76. package/dist/agents/summariser/utils/tldr.sanitizer.js +44 -0
  77. package/dist/agents/summariser/utils/tldr.sanitizer.js.map +1 -0
  78. package/dist/common/helpers/define-entity.d.ts +11 -1
  79. package/dist/common/helpers/define-entity.d.ts.map +1 -1
  80. package/dist/common/helpers/define-entity.js +7 -0
  81. package/dist/common/helpers/define-entity.js.map +1 -1
  82. package/dist/common/interfaces/agents/graph.creator.interface.d.ts +10 -4
  83. package/dist/common/interfaces/agents/graph.creator.interface.d.ts.map +1 -1
  84. package/dist/config/base.config.d.ts +6 -0
  85. package/dist/config/base.config.d.ts.map +1 -1
  86. package/dist/config/base.config.js +2 -0
  87. package/dist/config/base.config.js.map +1 -1
  88. package/dist/config/interfaces/base.config.interface.d.ts +4 -0
  89. package/dist/config/interfaces/base.config.interface.d.ts.map +1 -1
  90. package/dist/config/interfaces/config.prompts.interface.d.ts +1 -0
  91. package/dist/config/interfaces/config.prompts.interface.d.ts.map +1 -1
  92. package/dist/config/interfaces/config.responder.interface.d.ts +21 -0
  93. package/dist/config/interfaces/config.responder.interface.d.ts.map +1 -0
  94. package/dist/config/interfaces/config.responder.interface.js +3 -0
  95. package/dist/config/interfaces/config.responder.interface.js.map +1 -0
  96. package/dist/config/interfaces/config.summariser.interface.d.ts +21 -0
  97. package/dist/config/interfaces/config.summariser.interface.d.ts.map +1 -0
  98. package/dist/config/interfaces/config.summariser.interface.js +3 -0
  99. package/dist/config/interfaces/config.summariser.interface.js.map +1 -0
  100. package/dist/config/interfaces/index.d.ts +2 -0
  101. package/dist/config/interfaces/index.d.ts.map +1 -1
  102. package/dist/config/interfaces/index.js +2 -0
  103. package/dist/config/interfaces/index.js.map +1 -1
  104. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  105. package/dist/core/neo4j/abstracts/abstract.repository.js +6 -2
  106. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  107. package/dist/foundations/community/repositories/community.repository.d.ts.map +1 -1
  108. package/dist/foundations/community/repositories/community.repository.js +2 -1
  109. package/dist/foundations/community/repositories/community.repository.js.map +1 -1
  110. package/dist/foundations/notification/repositories/notification.repository.d.ts.map +1 -1
  111. package/dist/foundations/notification/repositories/notification.repository.js +2 -1
  112. package/dist/foundations/notification/repositories/notification.repository.js.map +1 -1
  113. package/dist/foundations/stripe-customer/repositories/stripe-customer.repository.js +1 -1
  114. package/dist/foundations/stripe-customer/repositories/stripe-customer.repository.js.map +1 -1
  115. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.d.ts.map +1 -1
  116. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.js +3 -2
  117. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.js.map +1 -1
  118. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.d.ts +27 -0
  119. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.d.ts.map +1 -0
  120. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.js +136 -0
  121. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.js.map +1 -0
  122. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.d.ts +26 -0
  123. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.d.ts.map +1 -0
  124. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.js +24 -0
  125. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.js.map +1 -0
  126. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.meta.d.ts +3 -0
  127. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.meta.d.ts.map +1 -0
  128. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.meta.js +10 -0
  129. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.meta.js.map +1 -0
  130. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.d.ts +24 -0
  131. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.d.ts.map +1 -0
  132. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.js +21 -0
  133. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.js.map +1 -0
  134. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.meta.d.ts +3 -0
  135. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.meta.d.ts.map +1 -0
  136. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.meta.js +10 -0
  137. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.meta.js.map +1 -0
  138. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.d.ts +22 -0
  139. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.d.ts.map +1 -0
  140. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.js +21 -0
  141. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.js.map +1 -0
  142. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.meta.d.ts +3 -0
  143. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.meta.d.ts.map +1 -0
  144. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.meta.js +10 -0
  145. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.meta.js.map +1 -0
  146. package/dist/foundations/tokenusage/index.d.ts +9 -0
  147. package/dist/foundations/tokenusage/index.d.ts.map +1 -1
  148. package/dist/foundations/tokenusage/index.js +19 -1
  149. package/dist/foundations/tokenusage/index.js.map +1 -1
  150. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.d.ts +73 -0
  151. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.d.ts.map +1 -0
  152. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js +342 -0
  153. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js.map +1 -0
  154. package/dist/foundations/tokenusage/repositories/tokenusage.repository.d.ts +21 -3
  155. package/dist/foundations/tokenusage/repositories/tokenusage.repository.d.ts.map +1 -1
  156. package/dist/foundations/tokenusage/repositories/tokenusage.repository.js +30 -5
  157. package/dist/foundations/tokenusage/repositories/tokenusage.repository.js.map +1 -1
  158. package/dist/foundations/tokenusage/services/tokenusage.admin.service.d.ts +50 -0
  159. package/dist/foundations/tokenusage/services/tokenusage.admin.service.d.ts.map +1 -0
  160. package/dist/foundations/tokenusage/services/tokenusage.admin.service.js +84 -0
  161. package/dist/foundations/tokenusage/services/tokenusage.admin.service.js.map +1 -0
  162. package/dist/foundations/tokenusage/tokenusage.module.d.ts.map +1 -1
  163. package/dist/foundations/tokenusage/tokenusage.module.js +21 -3
  164. package/dist/foundations/tokenusage/tokenusage.module.js.map +1 -1
  165. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ import { FastifyReply } from "fastify";
2
+ import { TokenUsageAdminService } from "../services/tokenusage.admin.service";
3
+ /**
4
+ * Platform-wide token-usage reporting. Every route is administrator-only:
5
+ * JwtAuthGuard._validateRoles enforces @Roles and always admits the
6
+ * Administrator role, so a non-administrator receives 401.
7
+ *
8
+ * Mounted at /tokenusages/administration/* — no overlap with the consuming
9
+ * app's own /tokenusages, /tokenusages/summary and /tokenusages/aggregated
10
+ * routes, so importing TokenUsageModule cannot duplicate a Fastify route.
11
+ *
12
+ * Enum-valued query params are validated against a closed allowlist here rather
13
+ * than in a DTO: DTOs are body validation for POST/PUT/PATCH, and GET filters
14
+ * use bare @Query() params. The allowlist matters — the repository interpolates
15
+ * granularity and dimension into Cypher (they select a clause, they are not
16
+ * values), so an unvalidated string would be an injection vector.
17
+ */
18
+ export declare class TokenUsageAdminController {
19
+ private readonly service;
20
+ constructor(service: TokenUsageAdminService);
21
+ getSummary(reply: FastifyReply, from?: string, to?: string, companyId?: string): Promise<void>;
22
+ getTimeline(reply: FastifyReply, from?: string, to?: string, granularity?: string, stackBy?: string, companyId?: string): Promise<void>;
23
+ getBreakdown(reply: FastifyReply, from?: string, to?: string, dimension?: string, scope?: string, companyId?: string, limit?: string): Promise<void>;
24
+ private _oneOf;
25
+ private _range;
26
+ }
27
+ //# sourceMappingURL=tokenusage.admin.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.admin.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/controllers/tokenusage.admin.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAU9E;;;;;;;;;;;;;;GAcG;AACH,qBAEa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAItD,UAAU,CACP,KAAK,EAAE,YAAY,EACX,IAAI,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,MAAM,EACJ,SAAS,CAAC,EAAE,MAAM;IAQlC,WAAW,CACR,KAAK,EAAE,YAAY,EACX,IAAI,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,MAAM,EACF,WAAW,CAAC,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM;IAelC,YAAY,CACT,KAAK,EAAE,YAAY,EACX,IAAI,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,MAAM,EACJ,SAAS,CAAC,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM;IAkBhC,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,MAAM;CAWf"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TokenUsageAdminController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const system_roles_1 = require("../../../common/constants/system.roles");
18
+ const roles_decorator_1 = require("../../../common/decorators/roles.decorator");
19
+ const jwt_auth_guard_1 = require("../../../common/guards/jwt.auth.guard");
20
+ const tokenusage_meta_1 = require("../entities/tokenusage.meta");
21
+ const tokenusage_admin_service_1 = require("../services/tokenusage.admin.service");
22
+ const GRANULARITIES = ["day", "week", "month"];
23
+ const STACK_BY = ["scope", "type", "company"];
24
+ const DIMENSIONS = ["company", "user", "operation"];
25
+ const SCOPES = ["customer", "platform"];
26
+ const DEFAULT_WINDOW_DAYS = 30;
27
+ const ONE_DAY_MS = 24 * 60 * 60 * 1000;
28
+ /**
29
+ * Platform-wide token-usage reporting. Every route is administrator-only:
30
+ * JwtAuthGuard._validateRoles enforces @Roles and always admits the
31
+ * Administrator role, so a non-administrator receives 401.
32
+ *
33
+ * Mounted at /tokenusages/administration/* — no overlap with the consuming
34
+ * app's own /tokenusages, /tokenusages/summary and /tokenusages/aggregated
35
+ * routes, so importing TokenUsageModule cannot duplicate a Fastify route.
36
+ *
37
+ * Enum-valued query params are validated against a closed allowlist here rather
38
+ * than in a DTO: DTOs are body validation for POST/PUT/PATCH, and GET filters
39
+ * use bare @Query() params. The allowlist matters — the repository interpolates
40
+ * granularity and dimension into Cypher (they select a clause, they are not
41
+ * values), so an unvalidated string would be an injection vector.
42
+ */
43
+ let TokenUsageAdminController = class TokenUsageAdminController {
44
+ constructor(service) {
45
+ this.service = service;
46
+ }
47
+ async getSummary(reply, from, to, companyId) {
48
+ const range = this._range(from, to);
49
+ reply.send(await this.service.getSummary({ ...range, companyId }));
50
+ }
51
+ async getTimeline(reply, from, to, granularity, stackBy, companyId) {
52
+ const range = this._range(from, to);
53
+ reply.send(await this.service.getTimeline({
54
+ ...range,
55
+ granularity: this._oneOf(granularity, GRANULARITIES, "day"),
56
+ stackBy: this._oneOf(stackBy, STACK_BY, "scope"),
57
+ companyId,
58
+ }));
59
+ }
60
+ async getBreakdown(reply, from, to, dimension, scope, companyId, limit) {
61
+ const range = this._range(from, to);
62
+ const parsedLimit = limit === undefined ? 10 : Number(limit);
63
+ if (!Number.isInteger(parsedLimit) || parsedLimit < 1 || parsedLimit > 100)
64
+ throw new common_1.BadRequestException("limit must be an integer between 1 and 100");
65
+ reply.send(await this.service.getBreakdown({
66
+ ...range,
67
+ dimension: this._oneOf(dimension, DIMENSIONS, "company"),
68
+ scope: this._oneOf(scope, SCOPES, "customer"),
69
+ companyId,
70
+ limit: parsedLimit,
71
+ }));
72
+ }
73
+ _oneOf(value, allowed, fallback) {
74
+ if (value === undefined)
75
+ return fallback;
76
+ if (!allowed.includes(value))
77
+ throw new common_1.BadRequestException(`Expected one of ${allowed.join(", ")}, received "${value}"`);
78
+ return value;
79
+ }
80
+ _range(from, to) {
81
+ const toDate = to ? new Date(to) : new Date();
82
+ if (Number.isNaN(toDate.getTime()))
83
+ throw new common_1.BadRequestException("`to` is not a valid date");
84
+ const fromDate = from ? new Date(from) : new Date(toDate.getTime() - DEFAULT_WINDOW_DAYS * ONE_DAY_MS);
85
+ if (Number.isNaN(fromDate.getTime()))
86
+ throw new common_1.BadRequestException("`from` is not a valid date");
87
+ if (fromDate > toDate)
88
+ throw new common_1.BadRequestException("`from` must not be later than `to`");
89
+ return { from: fromDate.toISOString(), to: toDate.toISOString() };
90
+ }
91
+ };
92
+ exports.TokenUsageAdminController = TokenUsageAdminController;
93
+ __decorate([
94
+ (0, common_1.Get)(`${tokenusage_meta_1.tokenUsageMeta.endpoint}/administration/summary`),
95
+ (0, roles_decorator_1.Roles)(system_roles_1.SystemRoles.Administrator),
96
+ __param(0, (0, common_1.Res)()),
97
+ __param(1, (0, common_1.Query)("from")),
98
+ __param(2, (0, common_1.Query)("to")),
99
+ __param(3, (0, common_1.Query)("companyId")),
100
+ __metadata("design:type", Function),
101
+ __metadata("design:paramtypes", [Object, String, String, String]),
102
+ __metadata("design:returntype", Promise)
103
+ ], TokenUsageAdminController.prototype, "getSummary", null);
104
+ __decorate([
105
+ (0, common_1.Get)(`${tokenusage_meta_1.tokenUsageMeta.endpoint}/administration/timeline`),
106
+ (0, roles_decorator_1.Roles)(system_roles_1.SystemRoles.Administrator),
107
+ __param(0, (0, common_1.Res)()),
108
+ __param(1, (0, common_1.Query)("from")),
109
+ __param(2, (0, common_1.Query)("to")),
110
+ __param(3, (0, common_1.Query)("granularity")),
111
+ __param(4, (0, common_1.Query)("stackBy")),
112
+ __param(5, (0, common_1.Query)("companyId")),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [Object, String, String, String, String, String]),
115
+ __metadata("design:returntype", Promise)
116
+ ], TokenUsageAdminController.prototype, "getTimeline", null);
117
+ __decorate([
118
+ (0, common_1.Get)(`${tokenusage_meta_1.tokenUsageMeta.endpoint}/administration/breakdown`),
119
+ (0, roles_decorator_1.Roles)(system_roles_1.SystemRoles.Administrator),
120
+ __param(0, (0, common_1.Res)()),
121
+ __param(1, (0, common_1.Query)("from")),
122
+ __param(2, (0, common_1.Query)("to")),
123
+ __param(3, (0, common_1.Query)("dimension")),
124
+ __param(4, (0, common_1.Query)("scope")),
125
+ __param(5, (0, common_1.Query)("companyId")),
126
+ __param(6, (0, common_1.Query)("limit")),
127
+ __metadata("design:type", Function),
128
+ __metadata("design:paramtypes", [Object, String, String, String, String, String, String]),
129
+ __metadata("design:returntype", Promise)
130
+ ], TokenUsageAdminController.prototype, "getBreakdown", null);
131
+ exports.TokenUsageAdminController = TokenUsageAdminController = __decorate([
132
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
133
+ (0, common_1.Controller)(),
134
+ __metadata("design:paramtypes", [tokenusage_admin_service_1.TokenUsageAdminService])
135
+ ], TokenUsageAdminController);
136
+ //# sourceMappingURL=tokenusage.admin.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.admin.controller.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/controllers/tokenusage.admin.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Entity } from "../../../common/abstracts/entity";
2
+ /**
3
+ * One ranked row of a breakdown. The same shape serves all three dimensions —
4
+ * company, user and operation — which is why the three "by-X" endpoints
5
+ * collapse into a single `breakdown?dimension=` route.
6
+ *
7
+ * `activeUsers` / `monthlyCredits` / `availableMonthlyCredits` are populated
8
+ * only for `dimension=company`; they are absent on user and operation rows.
9
+ *
10
+ * NOT a Neo4j node — serialisation shape only (see the summary descriptor).
11
+ */
12
+ export type TokenUsageAdminBreakdownEntity = Entity & {
13
+ label: string;
14
+ sublabel?: string;
15
+ cost: number;
16
+ credits: number;
17
+ tokensIn: number;
18
+ tokensOut: number;
19
+ cached: number;
20
+ calls: number;
21
+ activeUsers?: number;
22
+ monthlyCredits?: number;
23
+ availableMonthlyCredits?: number;
24
+ };
25
+ export declare const TokenUsageAdminBreakdownDescriptor: import("../../..").EntityDescriptor<TokenUsageAdminBreakdownEntity, {}>;
26
+ //# sourceMappingURL=tokenusage-admin-breakdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-breakdown.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-breakdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAI1D;;;;;;;;;GASG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,kCAAkC,yEAoB7C,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenUsageAdminBreakdownDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const tokenusage_admin_breakdown_meta_1 = require("./tokenusage-admin-breakdown.meta");
6
+ exports.TokenUsageAdminBreakdownDescriptor = (0, define_entity_1.defineEntity)()({
7
+ ...tokenusage_admin_breakdown_meta_1.tokenUsageAdminBreakdownMeta,
8
+ isCompanyScoped: false,
9
+ fields: {
10
+ label: { type: "string", required: true },
11
+ sublabel: { type: "string" },
12
+ cost: { type: "number", required: true },
13
+ credits: { type: "number", required: true },
14
+ tokensIn: { type: "number", required: true },
15
+ tokensOut: { type: "number", required: true },
16
+ cached: { type: "number", required: true },
17
+ calls: { type: "number", required: true },
18
+ activeUsers: { type: "number" },
19
+ monthlyCredits: { type: "number" },
20
+ availableMonthlyCredits: { type: "number" },
21
+ },
22
+ relationships: {},
23
+ });
24
+ //# sourceMappingURL=tokenusage-admin-breakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-breakdown.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-breakdown.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,uFAAiF;AA0BpE,QAAA,kCAAkC,GAAG,IAAA,4BAAY,GAAkC,CAAC;IAC/F,GAAG,8DAA4B;IAE/B,eAAe,EAAE,KAAK;IAEtB,MAAM,EAAE;QACN,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,uBAAuB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5C;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
+ export declare const tokenUsageAdminBreakdownMeta: DataMeta;
3
+ //# sourceMappingURL=tokenusage-admin-breakdown.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-breakdown.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-breakdown.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E,eAAO,MAAM,4BAA4B,EAAE,QAK1C,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenUsageAdminBreakdownMeta = void 0;
4
+ exports.tokenUsageAdminBreakdownMeta = {
5
+ type: "tokenusage-admin-breakdowns",
6
+ endpoint: "tokenusages/administration/breakdown",
7
+ nodeName: "tokenUsageAdminBreakdown",
8
+ labelName: "TokenUsageAdminBreakdown",
9
+ };
10
+ //# sourceMappingURL=tokenusage-admin-breakdown.meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-breakdown.meta.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-breakdown.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,4BAA4B,GAAa;IACpD,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,sCAAsC;IAChD,QAAQ,EAAE,0BAA0B;IACpC,SAAS,EAAE,0BAA0B;CACtC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Entity } from "../../../common/abstracts/entity";
2
+ /**
3
+ * One row of the admin summary: a cost centre observed over one time window.
4
+ *
5
+ * Six rows are returned per request — scope ("customer" | "platform" | "total")
6
+ * crossed with window ("current" | "previous") — which is what lets the KPI
7
+ * tiles render both the value and its delta without a second call.
8
+ *
9
+ * NOT a Neo4j node: there is no TokenUsageAdminSummary label and no repository
10
+ * for this descriptor. It is a serialisation shape only, exactly like
11
+ * `ReferralStatsDescriptor`.
12
+ */
13
+ export type TokenUsageAdminSummaryEntity = Entity & {
14
+ scope: string;
15
+ window: string;
16
+ cost: number;
17
+ credits: number;
18
+ tokensIn: number;
19
+ tokensOut: number;
20
+ cached: number;
21
+ calls: number;
22
+ };
23
+ export declare const TokenUsageAdminSummaryDescriptor: import("../../..").EntityDescriptor<TokenUsageAdminSummaryEntity, {}>;
24
+ //# sourceMappingURL=tokenusage-admin-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-summary.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAI1D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,gCAAgC,uEAiB3C,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenUsageAdminSummaryDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const tokenusage_admin_summary_meta_1 = require("./tokenusage-admin-summary.meta");
6
+ exports.TokenUsageAdminSummaryDescriptor = (0, define_entity_1.defineEntity)()({
7
+ ...tokenusage_admin_summary_meta_1.tokenUsageAdminSummaryMeta,
8
+ isCompanyScoped: false,
9
+ fields: {
10
+ scope: { type: "string", required: true },
11
+ window: { type: "string", required: true },
12
+ cost: { type: "number", required: true },
13
+ credits: { type: "number", required: true },
14
+ tokensIn: { type: "number", required: true },
15
+ tokensOut: { type: "number", required: true },
16
+ cached: { type: "number", required: true },
17
+ calls: { type: "number", required: true },
18
+ },
19
+ relationships: {},
20
+ });
21
+ //# sourceMappingURL=tokenusage-admin-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-summary.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-summary.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,mFAA6E;AAwBhE,QAAA,gCAAgC,GAAG,IAAA,4BAAY,GAAgC,CAAC;IAC3F,GAAG,0DAA0B;IAE7B,eAAe,EAAE,KAAK;IAEtB,MAAM,EAAE;QACN,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC1C;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
+ export declare const tokenUsageAdminSummaryMeta: DataMeta;
3
+ //# sourceMappingURL=tokenusage-admin-summary.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-summary.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-summary.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E,eAAO,MAAM,0BAA0B,EAAE,QAKxC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenUsageAdminSummaryMeta = void 0;
4
+ exports.tokenUsageAdminSummaryMeta = {
5
+ type: "tokenusage-admin-summaries",
6
+ endpoint: "tokenusages/administration/summary",
7
+ nodeName: "tokenUsageAdminSummary",
8
+ labelName: "TokenUsageAdminSummary",
9
+ };
10
+ //# sourceMappingURL=tokenusage-admin-summary.meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-summary.meta.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-summary.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAa;IAClD,IAAI,EAAE,4BAA4B;IAClC,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ,EAAE,wBAAwB;IAClC,SAAS,EAAE,wBAAwB;CACpC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Entity } from "../../../common/abstracts/entity";
2
+ /**
3
+ * One (bucket, series) cell of the usage-over-time chart. Rows are flat; the
4
+ * frontend pivots them into stacked columns.
5
+ *
6
+ * `bucket` is a calendar day/week/month start with no time component, so it is
7
+ * `type: "date"` — never `"string"`. See references/date-handling.md rule 1.
8
+ *
9
+ * NOT a Neo4j node — serialisation shape only (see the summary descriptor).
10
+ */
11
+ export type TokenUsageAdminTimelineEntity = Entity & {
12
+ bucket: string;
13
+ series: string;
14
+ cost: number;
15
+ credits: number;
16
+ tokensIn: number;
17
+ tokensOut: number;
18
+ cached: number;
19
+ calls: number;
20
+ };
21
+ export declare const TokenUsageAdminTimelineDescriptor: import("../../..").EntityDescriptor<TokenUsageAdminTimelineEntity, {}>;
22
+ //# sourceMappingURL=tokenusage-admin-timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-timeline.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAI1D;;;;;;;;GAQG;AACH,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,iCAAiC,wEAiB5C,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenUsageAdminTimelineDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const tokenusage_admin_timeline_meta_1 = require("./tokenusage-admin-timeline.meta");
6
+ exports.TokenUsageAdminTimelineDescriptor = (0, define_entity_1.defineEntity)()({
7
+ ...tokenusage_admin_timeline_meta_1.tokenUsageAdminTimelineMeta,
8
+ isCompanyScoped: false,
9
+ fields: {
10
+ bucket: { type: "date", required: true },
11
+ series: { type: "string", required: true },
12
+ cost: { type: "number", required: true },
13
+ credits: { type: "number", required: true },
14
+ tokensIn: { type: "number", required: true },
15
+ tokensOut: { type: "number", required: true },
16
+ cached: { type: "number", required: true },
17
+ calls: { type: "number", required: true },
18
+ },
19
+ relationships: {},
20
+ });
21
+ //# sourceMappingURL=tokenusage-admin-timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-timeline.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-timeline.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,qFAA+E;AAsBlE,QAAA,iCAAiC,GAAG,IAAA,4BAAY,GAAiC,CAAC;IAC7F,GAAG,4DAA2B;IAE9B,eAAe,EAAE,KAAK;IAEtB,MAAM,EAAE;QACN,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC1C;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
+ export declare const tokenUsageAdminTimelineMeta: DataMeta;
3
+ //# sourceMappingURL=tokenusage-admin-timeline.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-timeline.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-timeline.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E,eAAO,MAAM,2BAA2B,EAAE,QAKzC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenUsageAdminTimelineMeta = void 0;
4
+ exports.tokenUsageAdminTimelineMeta = {
5
+ type: "tokenusage-admin-timelines",
6
+ endpoint: "tokenusages/administration/timeline",
7
+ nodeName: "tokenUsageAdminTimeline",
8
+ labelName: "TokenUsageAdminTimeline",
9
+ };
10
+ //# sourceMappingURL=tokenusage-admin-timeline.meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-admin-timeline.meta.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-timeline.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAa;IACnD,IAAI,EAAE,4BAA4B;IAClC,QAAQ,EAAE,qCAAqC;IAC/C,QAAQ,EAAE,yBAAyB;IACnC,SAAS,EAAE,yBAAyB;CACrC,CAAC"}
@@ -5,4 +5,13 @@ export { TOKEN_USAGE_RECORDED_EVENT, TokenUsageRecordedPayload } from "./events/
5
5
  export { TokenUsageAggregated, TokenUsageRepository, TokenUsageSummary } from "./repositories/tokenusage.repository";
6
6
  export { TokenUsageService } from "./services/tokenusage.service";
7
7
  export { TokenUsageModule } from "./tokenusage.module";
8
+ export { TokenUsageAdminBreakdownDescriptor, TokenUsageAdminBreakdownEntity, } from "./entities/tokenusage-admin-breakdown";
9
+ export { tokenUsageAdminBreakdownMeta } from "./entities/tokenusage-admin-breakdown.meta";
10
+ export { TokenUsageAdminSummaryDescriptor, TokenUsageAdminSummaryEntity } from "./entities/tokenusage-admin-summary";
11
+ export { tokenUsageAdminSummaryMeta } from "./entities/tokenusage-admin-summary.meta";
12
+ export { TokenUsageAdminTimelineDescriptor, TokenUsageAdminTimelineEntity } from "./entities/tokenusage-admin-timeline";
13
+ export { tokenUsageAdminTimelineMeta } from "./entities/tokenusage-admin-timeline.meta";
14
+ export { TokenUsageAdminRepository } from "./repositories/tokenusage.admin.repository";
15
+ export { TokenUsageAdminService } from "./services/tokenusage.admin.service";
16
+ export { TokenUsageAdminController } from "./controllers/tokenusage.admin.controller";
8
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/tokenusage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACrH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/tokenusage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACrH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,kCAAkC,EAClC,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,gCAAgC,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACrH,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACxH,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TokenUsageModule = exports.TokenUsageService = exports.TokenUsageRepository = exports.TOKEN_USAGE_RECORDED_EVENT = exports.TokenUsageType = exports.tokenUsageMeta = exports.TokenUsageDescriptor = void 0;
3
+ exports.TokenUsageAdminController = exports.TokenUsageAdminService = exports.TokenUsageAdminRepository = exports.tokenUsageAdminTimelineMeta = exports.TokenUsageAdminTimelineDescriptor = exports.tokenUsageAdminSummaryMeta = exports.TokenUsageAdminSummaryDescriptor = exports.tokenUsageAdminBreakdownMeta = exports.TokenUsageAdminBreakdownDescriptor = exports.TokenUsageModule = exports.TokenUsageService = exports.TokenUsageRepository = exports.TOKEN_USAGE_RECORDED_EVENT = exports.TokenUsageType = exports.tokenUsageMeta = exports.TokenUsageDescriptor = void 0;
4
4
  var tokenusage_1 = require("./entities/tokenusage");
5
5
  Object.defineProperty(exports, "TokenUsageDescriptor", { enumerable: true, get: function () { return tokenusage_1.TokenUsageDescriptor; } });
6
6
  var tokenusage_meta_1 = require("./entities/tokenusage.meta");
@@ -15,4 +15,22 @@ var tokenusage_service_1 = require("./services/tokenusage.service");
15
15
  Object.defineProperty(exports, "TokenUsageService", { enumerable: true, get: function () { return tokenusage_service_1.TokenUsageService; } });
16
16
  var tokenusage_module_1 = require("./tokenusage.module");
17
17
  Object.defineProperty(exports, "TokenUsageModule", { enumerable: true, get: function () { return tokenusage_module_1.TokenUsageModule; } });
18
+ var tokenusage_admin_breakdown_1 = require("./entities/tokenusage-admin-breakdown");
19
+ Object.defineProperty(exports, "TokenUsageAdminBreakdownDescriptor", { enumerable: true, get: function () { return tokenusage_admin_breakdown_1.TokenUsageAdminBreakdownDescriptor; } });
20
+ var tokenusage_admin_breakdown_meta_1 = require("./entities/tokenusage-admin-breakdown.meta");
21
+ Object.defineProperty(exports, "tokenUsageAdminBreakdownMeta", { enumerable: true, get: function () { return tokenusage_admin_breakdown_meta_1.tokenUsageAdminBreakdownMeta; } });
22
+ var tokenusage_admin_summary_1 = require("./entities/tokenusage-admin-summary");
23
+ Object.defineProperty(exports, "TokenUsageAdminSummaryDescriptor", { enumerable: true, get: function () { return tokenusage_admin_summary_1.TokenUsageAdminSummaryDescriptor; } });
24
+ var tokenusage_admin_summary_meta_1 = require("./entities/tokenusage-admin-summary.meta");
25
+ Object.defineProperty(exports, "tokenUsageAdminSummaryMeta", { enumerable: true, get: function () { return tokenusage_admin_summary_meta_1.tokenUsageAdminSummaryMeta; } });
26
+ var tokenusage_admin_timeline_1 = require("./entities/tokenusage-admin-timeline");
27
+ Object.defineProperty(exports, "TokenUsageAdminTimelineDescriptor", { enumerable: true, get: function () { return tokenusage_admin_timeline_1.TokenUsageAdminTimelineDescriptor; } });
28
+ var tokenusage_admin_timeline_meta_1 = require("./entities/tokenusage-admin-timeline.meta");
29
+ Object.defineProperty(exports, "tokenUsageAdminTimelineMeta", { enumerable: true, get: function () { return tokenusage_admin_timeline_meta_1.tokenUsageAdminTimelineMeta; } });
30
+ var tokenusage_admin_repository_1 = require("./repositories/tokenusage.admin.repository");
31
+ Object.defineProperty(exports, "TokenUsageAdminRepository", { enumerable: true, get: function () { return tokenusage_admin_repository_1.TokenUsageAdminRepository; } });
32
+ var tokenusage_admin_service_1 = require("./services/tokenusage.admin.service");
33
+ Object.defineProperty(exports, "TokenUsageAdminService", { enumerable: true, get: function () { return tokenusage_admin_service_1.TokenUsageAdminService; } });
34
+ var tokenusage_admin_controller_1 = require("./controllers/tokenusage.admin.controller");
35
+ Object.defineProperty(exports, "TokenUsageAdminController", { enumerable: true, get: function () { return tokenusage_admin_controller_1.TokenUsageAdminController; } });
18
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/tokenusage/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyE;AAApD,kHAAA,oBAAoB,OAAA;AACzC,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,gEAAmG;AAA1F,+HAAA,0BAA0B,OAAA;AACnC,8EAAqH;AAAtF,6HAAA,oBAAoB,OAAA;AACnD,oEAAkE;AAAzD,uHAAA,iBAAiB,OAAA;AAC1B,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/tokenusage/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyE;AAApD,kHAAA,oBAAoB,OAAA;AACzC,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,gEAAmG;AAA1F,+HAAA,0BAA0B,OAAA;AACnC,8EAAqH;AAAtF,6HAAA,oBAAoB,OAAA;AACnD,oEAAkE;AAAzD,uHAAA,iBAAiB,OAAA;AAC1B,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,oFAG+C;AAF7C,gJAAA,kCAAkC,OAAA;AAGpC,8FAA0F;AAAjF,+IAAA,4BAA4B,OAAA;AACrC,gFAAqH;AAA5G,4IAAA,gCAAgC,OAAA;AACzC,0FAAsF;AAA7E,2IAAA,0BAA0B,OAAA;AACnC,kFAAwH;AAA/G,8IAAA,iCAAiC,OAAA;AAC1C,4FAAwF;AAA/E,6IAAA,2BAA2B,OAAA;AACpC,0FAAuF;AAA9E,wIAAA,yBAAyB,OAAA;AAClC,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAC/B,yFAAsF;AAA7E,wIAAA,yBAAyB,OAAA"}
@@ -0,0 +1,73 @@
1
+ import { ClsService } from "nestjs-cls";
2
+ import { AbstractRepository } from "../../../core/neo4j/abstracts/abstract.repository";
3
+ import { Neo4jService } from "../../../core/neo4j/services/neo4j.service";
4
+ import { SecurityService } from "../../../core/security/services/security.service";
5
+ import { TokenUsageAdminBreakdownEntity } from "../entities/tokenusage-admin-breakdown";
6
+ import { TokenUsageAdminSummaryEntity } from "../entities/tokenusage-admin-summary";
7
+ import { TokenUsageAdminTimelineEntity } from "../entities/tokenusage-admin-timeline";
8
+ import { TokenUsage, TokenUsageDescriptor } from "../entities/tokenusage";
9
+ /**
10
+ * Cross-tenant reporting queries behind /tokenusages/administration/*.
11
+ *
12
+ * Extends AbstractRepository for the shared Neo4j/security/CLS plumbing and the
13
+ * descriptor typing; none of the inherited finders are used, for the reasons in
14
+ * the file header, and it deliberately does NOT override onModuleInit — the
15
+ * :TokenUsage indexes belong to TokenUsageRepository.
16
+ *
17
+ * EVERY traversal constrains its target label — `->(:Company)`, `->(:User)`.
18
+ * The write bug fixed in tokenusage.repository.ts left 12,237 label-less nodes
19
+ * on exactly these two relationships; an unconstrained match returns them.
20
+ */
21
+ export declare class TokenUsageAdminRepository extends AbstractRepository<TokenUsage, typeof TokenUsageDescriptor.relationships> {
22
+ protected readonly descriptor: import("../../..").EntityDescriptor<TokenUsage, {}>;
23
+ constructor(neo4j: Neo4jService, securityService: SecurityService, clsService: ClsService);
24
+ /**
25
+ * Six rows: {customer, platform, total} × {current, previous}. The previous
26
+ * window is the equal-length span immediately preceding `from`, which is what
27
+ * the KPI tiles' deltas are computed against.
28
+ */
29
+ findSummary(params: {
30
+ from: string;
31
+ to: string;
32
+ companyId?: string;
33
+ }): Promise<TokenUsageAdminSummaryEntity[]>;
34
+ findTimeline(params: {
35
+ from: string;
36
+ to: string;
37
+ granularity: "day" | "week" | "month";
38
+ stackBy: "scope" | "type" | "company";
39
+ companyId?: string;
40
+ }): Promise<TokenUsageAdminTimelineEntity[]>;
41
+ /**
42
+ * Ranked rows, descending by cost, truncated to `limit` with the exact
43
+ * remainder folded into a single "other" row. The full ordered set is fetched
44
+ * and sliced in JS so the remainder is exact rather than a second query's
45
+ * approximation. Above ~1000 companies, move the LIMIT into Cypher and take
46
+ * the remainder from findSummary() instead.
47
+ */
48
+ findBreakdown(params: {
49
+ from: string;
50
+ to: string;
51
+ dimension: "company" | "user" | "operation";
52
+ scope: "customer" | "platform";
53
+ companyId?: string;
54
+ limit: number;
55
+ }): Promise<TokenUsageAdminBreakdownEntity[]>;
56
+ /** Scalar rollup split by cost centre for one window. */
57
+ private _scopeTotals;
58
+ /**
59
+ * Guarantees both cost centres are present (zero-filled when a window has no
60
+ * rows) and appends their sum as the "total" scope, so the tiles never have to
61
+ * branch on a missing row.
62
+ */
63
+ private _withTotal;
64
+ /** The equal-length span immediately preceding `from`. */
65
+ private _previousWindow;
66
+ /**
67
+ * Resolves a granularity to the `date.truncate` unit it may emit. Throws
68
+ * rather than interpolating anything the table does not know about.
69
+ */
70
+ private _truncationUnit;
71
+ private _metrics;
72
+ }
73
+ //# sourceMappingURL=tokenusage.admin.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.admin.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/repositories/tokenusage.admin.repository.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAEL,6BAA6B,EAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAuC1E;;;;;;;;;;;GAWG;AACH,qBACa,yBAA0B,SAAQ,kBAAkB,CAC/D,UAAU,EACV,OAAO,oBAAoB,CAAC,aAAa,CAC1C;IACC,SAAS,CAAC,QAAQ,CAAC,UAAU,sDAAwB;gBAEzC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU;IAIzF;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAW9G,YAAY,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;QACtC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,6BAA6B,EAAE,CAAC;IA+D5C;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;QAC5C,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;IAqH7C,yDAAyD;YAC3C,YAAY;IAkC1B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA8BlB,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAOvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ;CAUjB"}