@carlonicora/nestjs-neo4jsonapi 2.5.2 → 2.7.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 (88) hide show
  1. package/dist/config/base.config.d.ts.map +1 -1
  2. package/dist/config/base.config.js +1 -0
  3. package/dist/config/base.config.js.map +1 -1
  4. package/dist/config/interfaces/config.ai.interface.d.ts +15 -0
  5. package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
  6. package/dist/core/llm/services/audio.llm.service.d.ts +16 -8
  7. package/dist/core/llm/services/audio.llm.service.d.ts.map +1 -1
  8. package/dist/core/llm/services/audio.llm.service.js +41 -19
  9. package/dist/core/llm/services/audio.llm.service.js.map +1 -1
  10. package/dist/foundations/tokenusage/common/tokenusage.target-labels.d.ts +89 -0
  11. package/dist/foundations/tokenusage/common/tokenusage.target-labels.d.ts.map +1 -0
  12. package/dist/foundations/tokenusage/common/tokenusage.target-labels.js +79 -0
  13. package/dist/foundations/tokenusage/common/tokenusage.target-labels.js.map +1 -0
  14. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.d.ts +1 -1
  15. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.d.ts.map +1 -1
  16. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.js +8 -3
  17. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.js.map +1 -1
  18. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.d.ts +35 -0
  19. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.d.ts.map +1 -0
  20. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.js +133 -0
  21. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.js.map +1 -0
  22. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.d.ts +2 -7
  23. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.d.ts.map +1 -1
  24. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.js +2 -6
  25. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.js.map +1 -1
  26. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.d.ts +2 -7
  27. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.d.ts.map +1 -1
  28. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.js +2 -6
  29. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.js.map +1 -1
  30. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.d.ts +2 -7
  31. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.d.ts.map +1 -1
  32. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.js +2 -6
  33. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.js.map +1 -1
  34. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.d.ts +20 -0
  35. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.d.ts.map +1 -0
  36. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.js +17 -0
  37. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.js.map +1 -0
  38. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.d.ts +3 -0
  39. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.d.ts.map +1 -0
  40. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.js +10 -0
  41. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.js.map +1 -0
  42. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.d.ts +19 -0
  43. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.d.ts.map +1 -0
  44. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.js +16 -0
  45. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.js.map +1 -0
  46. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.d.ts +3 -0
  47. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.d.ts.map +1 -0
  48. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.js +10 -0
  49. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.js.map +1 -0
  50. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.d.ts +17 -0
  51. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.d.ts.map +1 -0
  52. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.js +17 -0
  53. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.js.map +1 -0
  54. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.d.ts +3 -0
  55. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.d.ts.map +1 -0
  56. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.js +10 -0
  57. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.js.map +1 -0
  58. package/dist/foundations/tokenusage/entities/usage-metric.fields.d.ts +48 -0
  59. package/dist/foundations/tokenusage/entities/usage-metric.fields.d.ts.map +1 -0
  60. package/dist/foundations/tokenusage/entities/usage-metric.fields.js +24 -0
  61. package/dist/foundations/tokenusage/entities/usage-metric.fields.js.map +1 -0
  62. package/dist/foundations/tokenusage/index.d.ts +11 -0
  63. package/dist/foundations/tokenusage/index.d.ts.map +1 -1
  64. package/dist/foundations/tokenusage/index.js +24 -1
  65. package/dist/foundations/tokenusage/index.js.map +1 -1
  66. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.d.ts +13 -2
  67. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.d.ts.map +1 -1
  68. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js +43 -2
  69. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js.map +1 -1
  70. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.d.ts +104 -0
  71. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.d.ts.map +1 -0
  72. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.js +286 -0
  73. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.js.map +1 -0
  74. package/dist/foundations/tokenusage/services/tokenusage.admin.service.d.ts +3 -1
  75. package/dist/foundations/tokenusage/services/tokenusage.admin.service.d.ts.map +1 -1
  76. package/dist/foundations/tokenusage/services/tokenusage.admin.service.js +1 -0
  77. package/dist/foundations/tokenusage/services/tokenusage.admin.service.js.map +1 -1
  78. package/dist/foundations/tokenusage/services/tokenusage.report.service.d.ts +43 -0
  79. package/dist/foundations/tokenusage/services/tokenusage.report.service.d.ts.map +1 -0
  80. package/dist/foundations/tokenusage/services/tokenusage.report.service.js +73 -0
  81. package/dist/foundations/tokenusage/services/tokenusage.report.service.js.map +1 -0
  82. package/dist/foundations/tokenusage/tokenusage.module.d.ts.map +1 -1
  83. package/dist/foundations/tokenusage/tokenusage.module.js +16 -2
  84. package/dist/foundations/tokenusage/tokenusage.module.js.map +1 -1
  85. package/dist/foundations/user/repositories/user.repository.d.ts.map +1 -1
  86. package/dist/foundations/user/repositories/user.repository.js +5 -1
  87. package/dist/foundations/user/repositories/user.repository.js.map +1 -1
  88. package/package.json +1 -1
@@ -0,0 +1,35 @@
1
+ import { FastifyReply } from "fastify";
2
+ import { TokenUsageReportService } from "../services/tokenusage.report.service";
3
+ /**
4
+ * Self-service token-usage reporting: the caller's own company only.
5
+ *
6
+ * NO @Roles decorator anywhere — any authenticated user may read their own
7
+ * company's usage. Scoping is the repository's job (buildDefaultMatch injects
8
+ * the CLS company), and no route here accepts a companyId, so there is nothing
9
+ * for a caller to point at somebody else's data.
10
+ *
11
+ * `metric` is allowlisted to credits and tokens: COST IS DELIBERATELY ABSENT.
12
+ * Customers are billed in credits, and exposing the platform's monetary cost
13
+ * would leak margin — enforcing that only in the UI would leave it one query
14
+ * string away, so the boundary refuses it.
15
+ *
16
+ * Mounted at /tokenusages/reports/* — no overlap with /tokenusages,
17
+ * /tokenusages/summary, /tokenusages/aggregated (a consuming app's own routes)
18
+ * or /tokenusages/administration/*, so importing TokenUsageModule cannot
19
+ * duplicate a Fastify route.
20
+ *
21
+ * Enum query params are validated against closed allowlists here rather than in
22
+ * a DTO: DTOs are body validation for POST/PUT/PATCH, and GET filters use bare
23
+ * @Query params. The allowlist matters — granularity and dimension select a
24
+ * Cypher clause, they are not bound values.
25
+ */
26
+ export declare class TokenUsageReportController {
27
+ private readonly service;
28
+ constructor(service: TokenUsageReportService);
29
+ getSummary(reply: FastifyReply, from?: string, to?: string): Promise<void>;
30
+ getTimeline(reply: FastifyReply, from?: string, to?: string, granularity?: string): Promise<void>;
31
+ getBreakdown(reply: FastifyReply, from?: string, to?: string, dimension?: string, targetLabel?: string, metric?: string, limit?: string): Promise<void>;
32
+ private _oneOf;
33
+ private _range;
34
+ }
35
+ //# sourceMappingURL=tokenusage.report.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.report.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/controllers/tokenusage.report.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAShF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAEa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,uBAAuB;IAGvD,UAAU,CAAQ,KAAK,EAAE,YAAY,EAAiB,IAAI,CAAC,EAAE,MAAM,EAAe,EAAE,CAAC,EAAE,MAAM;IAK7F,WAAW,CACR,KAAK,EAAE,YAAY,EACX,IAAI,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,MAAM,EACF,WAAW,CAAC,EAAE,MAAM;IActC,YAAY,CACT,KAAK,EAAE,YAAY,EACX,IAAI,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,MAAM,EACJ,SAAS,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACzB,MAAM,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM;IAiBhC,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,MAAM;CAWf"}
@@ -0,0 +1,133 @@
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.TokenUsageReportController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const jwt_auth_guard_1 = require("../../../common/guards/jwt.auth.guard");
18
+ const tokenusage_meta_1 = require("../entities/tokenusage.meta");
19
+ const tokenusage_report_service_1 = require("../services/tokenusage.report.service");
20
+ const GRANULARITIES = ["day", "week", "month"];
21
+ const DIMENSIONS = ["operation", "target"];
22
+ const METRICS = ["credits", "tokens"];
23
+ const DEFAULT_WINDOW_DAYS = 30;
24
+ const ONE_DAY_MS = 24 * 60 * 60 * 1000;
25
+ /**
26
+ * Self-service token-usage reporting: the caller's own company only.
27
+ *
28
+ * NO @Roles decorator anywhere — any authenticated user may read their own
29
+ * company's usage. Scoping is the repository's job (buildDefaultMatch injects
30
+ * the CLS company), and no route here accepts a companyId, so there is nothing
31
+ * for a caller to point at somebody else's data.
32
+ *
33
+ * `metric` is allowlisted to credits and tokens: COST IS DELIBERATELY ABSENT.
34
+ * Customers are billed in credits, and exposing the platform's monetary cost
35
+ * would leak margin — enforcing that only in the UI would leave it one query
36
+ * string away, so the boundary refuses it.
37
+ *
38
+ * Mounted at /tokenusages/reports/* — no overlap with /tokenusages,
39
+ * /tokenusages/summary, /tokenusages/aggregated (a consuming app's own routes)
40
+ * or /tokenusages/administration/*, so importing TokenUsageModule cannot
41
+ * duplicate a Fastify route.
42
+ *
43
+ * Enum query params are validated against closed allowlists here rather than in
44
+ * a DTO: DTOs are body validation for POST/PUT/PATCH, and GET filters use bare
45
+ * @Query params. The allowlist matters — granularity and dimension select a
46
+ * Cypher clause, they are not bound values.
47
+ */
48
+ let TokenUsageReportController = class TokenUsageReportController {
49
+ constructor(service) {
50
+ this.service = service;
51
+ }
52
+ async getSummary(reply, from, to) {
53
+ reply.send(await this.service.getSummary(this._range(from, to)));
54
+ }
55
+ async getTimeline(reply, from, to, granularity) {
56
+ reply.send(await this.service.getTimeline({
57
+ ...this._range(from, to),
58
+ granularity: this._oneOf(granularity, GRANULARITIES, "day"),
59
+ // Pinned, not accepted: scope and company stacking are meaningless
60
+ // inside a single tenant, so "type" is the only series this surface has.
61
+ stackBy: "type",
62
+ }));
63
+ }
64
+ async getBreakdown(reply, from, to, dimension, targetLabel, metric, limit) {
65
+ const parsedLimit = limit === undefined ? 10 : Number(limit);
66
+ if (!Number.isInteger(parsedLimit) || parsedLimit < 1 || parsedLimit > 100)
67
+ throw new common_1.BadRequestException("limit must be an integer between 1 and 100");
68
+ reply.send(await this.service.getBreakdown({
69
+ ...this._range(from, to),
70
+ dimension: this._oneOf(dimension, DIMENSIONS, "operation"),
71
+ targetLabel,
72
+ metric: this._oneOf(metric, METRICS, "credits"),
73
+ limit: parsedLimit,
74
+ }));
75
+ }
76
+ _oneOf(value, allowed, fallback) {
77
+ if (value === undefined)
78
+ return fallback;
79
+ if (!allowed.includes(value))
80
+ throw new common_1.BadRequestException(`Expected one of ${allowed.join(", ")}, received "${value}"`);
81
+ return value;
82
+ }
83
+ _range(from, to) {
84
+ const toDate = to ? new Date(to) : new Date();
85
+ if (Number.isNaN(toDate.getTime()))
86
+ throw new common_1.BadRequestException("`to` is not a valid date");
87
+ const fromDate = from ? new Date(from) : new Date(toDate.getTime() - DEFAULT_WINDOW_DAYS * ONE_DAY_MS);
88
+ if (Number.isNaN(fromDate.getTime()))
89
+ throw new common_1.BadRequestException("`from` is not a valid date");
90
+ if (fromDate > toDate)
91
+ throw new common_1.BadRequestException("`from` must not be later than `to`");
92
+ return { from: fromDate.toISOString(), to: toDate.toISOString() };
93
+ }
94
+ };
95
+ exports.TokenUsageReportController = TokenUsageReportController;
96
+ __decorate([
97
+ (0, common_1.Get)(`${tokenusage_meta_1.tokenUsageMeta.endpoint}/reports/summary`),
98
+ __param(0, (0, common_1.Res)()),
99
+ __param(1, (0, common_1.Query)("from")),
100
+ __param(2, (0, common_1.Query)("to")),
101
+ __metadata("design:type", Function),
102
+ __metadata("design:paramtypes", [Object, String, String]),
103
+ __metadata("design:returntype", Promise)
104
+ ], TokenUsageReportController.prototype, "getSummary", null);
105
+ __decorate([
106
+ (0, common_1.Get)(`${tokenusage_meta_1.tokenUsageMeta.endpoint}/reports/timeline`),
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
+ __metadata("design:type", Function),
112
+ __metadata("design:paramtypes", [Object, String, String, String]),
113
+ __metadata("design:returntype", Promise)
114
+ ], TokenUsageReportController.prototype, "getTimeline", null);
115
+ __decorate([
116
+ (0, common_1.Get)(`${tokenusage_meta_1.tokenUsageMeta.endpoint}/reports/breakdown`),
117
+ __param(0, (0, common_1.Res)()),
118
+ __param(1, (0, common_1.Query)("from")),
119
+ __param(2, (0, common_1.Query)("to")),
120
+ __param(3, (0, common_1.Query)("dimension")),
121
+ __param(4, (0, common_1.Query)("targetLabel")),
122
+ __param(5, (0, common_1.Query)("metric")),
123
+ __param(6, (0, common_1.Query)("limit")),
124
+ __metadata("design:type", Function),
125
+ __metadata("design:paramtypes", [Object, String, String, String, String, String, String]),
126
+ __metadata("design:returntype", Promise)
127
+ ], TokenUsageReportController.prototype, "getBreakdown", null);
128
+ exports.TokenUsageReportController = TokenUsageReportController = __decorate([
129
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
130
+ (0, common_1.Controller)(),
131
+ __metadata("design:paramtypes", [tokenusage_report_service_1.TokenUsageReportService])
132
+ ], TokenUsageReportController);
133
+ //# sourceMappingURL=tokenusage.report.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.report.controller.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/controllers/tokenusage.report.controller.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Entity } from "../../../common/abstracts/entity";
2
+ import { UsageMetrics } from "./usage-metric.fields";
2
3
  /**
3
4
  * One ranked row of a breakdown. The same shape serves all three dimensions —
4
5
  * company, user and operation — which is why the three "by-X" endpoints
@@ -12,15 +13,9 @@ import { Entity } from "../../../common/abstracts/entity";
12
13
  export type TokenUsageAdminBreakdownEntity = Entity & {
13
14
  label: string;
14
15
  sublabel?: string;
15
- cost: number;
16
- credits: number;
17
- tokensIn: number;
18
- tokensOut: number;
19
- cached: number;
20
- calls: number;
21
16
  activeUsers?: number;
22
17
  monthlyCredits?: number;
23
18
  availableMonthlyCredits?: number;
24
- };
19
+ } & UsageMetrics;
25
20
  export declare const TokenUsageAdminBreakdownDescriptor: import("../../..").EntityDescriptor<TokenUsageAdminBreakdownEntity, {}>;
26
21
  //# sourceMappingURL=tokenusage-admin-breakdown.d.ts.map
@@ -1 +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"}
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;AAG1D,OAAO,EAAqB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;;GASG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG,YAAY,CAAC;AAEjB,eAAO,MAAM,kCAAkC,yEAe7C,CAAC"}
@@ -3,18 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TokenUsageAdminBreakdownDescriptor = void 0;
4
4
  const define_entity_1 = require("../../../common/helpers/define-entity");
5
5
  const tokenusage_admin_breakdown_meta_1 = require("./tokenusage-admin-breakdown.meta");
6
+ const usage_metric_fields_1 = require("./usage-metric.fields");
6
7
  exports.TokenUsageAdminBreakdownDescriptor = (0, define_entity_1.defineEntity)()({
7
8
  ...tokenusage_admin_breakdown_meta_1.tokenUsageAdminBreakdownMeta,
8
9
  isCompanyScoped: false,
9
10
  fields: {
10
11
  label: { type: "string", required: true },
11
12
  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 },
13
+ ...usage_metric_fields_1.usageMetricFields,
18
14
  activeUsers: { type: "number" },
19
15
  monthlyCredits: { type: "number" },
20
16
  availableMonthlyCredits: { type: "number" },
@@ -1 +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"}
1
+ {"version":3,"file":"tokenusage-admin-breakdown.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-breakdown.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,uFAAiF;AACjF,+DAAwE;AAoB3D,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,GAAG,uCAAiB;QACpB,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"}
@@ -1,4 +1,5 @@
1
1
  import { Entity } from "../../../common/abstracts/entity";
2
+ import { UsageMetrics } from "./usage-metric.fields";
2
3
  /**
3
4
  * One row of the admin summary: a cost centre observed over one time window.
4
5
  *
@@ -13,12 +14,6 @@ import { Entity } from "../../../common/abstracts/entity";
13
14
  export type TokenUsageAdminSummaryEntity = Entity & {
14
15
  scope: string;
15
16
  window: string;
16
- cost: number;
17
- credits: number;
18
- tokensIn: number;
19
- tokensOut: number;
20
- cached: number;
21
- calls: number;
22
- };
17
+ } & UsageMetrics;
23
18
  export declare const TokenUsageAdminSummaryDescriptor: import("../../..").EntityDescriptor<TokenUsageAdminSummaryEntity, {}>;
24
19
  //# sourceMappingURL=tokenusage-admin-summary.d.ts.map
@@ -1 +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"}
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;AAG1D,OAAO,EAAqB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,eAAO,MAAM,gCAAgC,uEAY3C,CAAC"}
@@ -3,18 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TokenUsageAdminSummaryDescriptor = void 0;
4
4
  const define_entity_1 = require("../../../common/helpers/define-entity");
5
5
  const tokenusage_admin_summary_meta_1 = require("./tokenusage-admin-summary.meta");
6
+ const usage_metric_fields_1 = require("./usage-metric.fields");
6
7
  exports.TokenUsageAdminSummaryDescriptor = (0, define_entity_1.defineEntity)()({
7
8
  ...tokenusage_admin_summary_meta_1.tokenUsageAdminSummaryMeta,
8
9
  isCompanyScoped: false,
9
10
  fields: {
10
11
  scope: { type: "string", required: true },
11
12
  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 },
13
+ ...usage_metric_fields_1.usageMetricFields,
18
14
  },
19
15
  relationships: {},
20
16
  });
@@ -1 +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"}
1
+ {"version":3,"file":"tokenusage-admin-summary.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-admin-summary.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,mFAA6E;AAC7E,+DAAwE;AAkB3D,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,GAAG,uCAAiB;KACrB;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Entity } from "../../../common/abstracts/entity";
2
+ import { UsageMetrics } from "./usage-metric.fields";
2
3
  /**
3
4
  * One (bucket, series) cell of the usage-over-time chart. Rows are flat; the
4
5
  * frontend pivots them into stacked columns.
@@ -11,12 +12,6 @@ import { Entity } from "../../../common/abstracts/entity";
11
12
  export type TokenUsageAdminTimelineEntity = Entity & {
12
13
  bucket: string;
13
14
  series: string;
14
- cost: number;
15
- credits: number;
16
- tokensIn: number;
17
- tokensOut: number;
18
- cached: number;
19
- calls: number;
20
- };
15
+ } & UsageMetrics;
21
16
  export declare const TokenUsageAdminTimelineDescriptor: import("../../..").EntityDescriptor<TokenUsageAdminTimelineEntity, {}>;
22
17
  //# sourceMappingURL=tokenusage-admin-timeline.d.ts.map
@@ -1 +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"}
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;AAG1D,OAAO,EAAqB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,eAAO,MAAM,iCAAiC,wEAY5C,CAAC"}
@@ -3,18 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TokenUsageAdminTimelineDescriptor = void 0;
4
4
  const define_entity_1 = require("../../../common/helpers/define-entity");
5
5
  const tokenusage_admin_timeline_meta_1 = require("./tokenusage-admin-timeline.meta");
6
+ const usage_metric_fields_1 = require("./usage-metric.fields");
6
7
  exports.TokenUsageAdminTimelineDescriptor = (0, define_entity_1.defineEntity)()({
7
8
  ...tokenusage_admin_timeline_meta_1.tokenUsageAdminTimelineMeta,
8
9
  isCompanyScoped: false,
9
10
  fields: {
10
11
  bucket: { type: "date", required: true },
11
12
  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 },
13
+ ...usage_metric_fields_1.usageMetricFields,
18
14
  },
19
15
  relationships: {},
20
16
  });
@@ -1 +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"}
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;AAC/E,+DAAwE;AAgB3D,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,GAAG,uCAAiB;KACrB;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Entity } from "../../../common/abstracts/entity";
2
+ import { UsageMetrics } from "./usage-metric.fields";
3
+ /**
4
+ * One ranked row of a self-service breakdown. The same shape serves both
5
+ * dimensions — operation and target — which is why the two "by-X" panels
6
+ * collapse into a single `breakdown?dimension=` route.
7
+ *
8
+ * Deliberately WITHOUT the administrative breakdown's activeUsers /
9
+ * monthlyCredits / availableMonthlyCredits: those exist for the company
10
+ * dimension only, and the self-service page reads the caller's own balances from
11
+ * CurrentUserContext instead.
12
+ *
13
+ * NOT a Neo4j node — serialisation shape only.
14
+ */
15
+ export type TokenUsageReportBreakdownEntity = Entity & {
16
+ label: string;
17
+ sublabel?: string;
18
+ } & UsageMetrics;
19
+ export declare const TokenUsageReportBreakdownDescriptor: import("../../..").EntityDescriptor<TokenUsageReportBreakdownEntity, {}>;
20
+ //# sourceMappingURL=tokenusage-report-breakdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-breakdown.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-breakdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG1D,OAAO,EAAqB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,+BAA+B,GAAG,MAAM,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,YAAY,CAAC;AAEjB,eAAO,MAAM,mCAAmC,0EAY9C,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenUsageReportBreakdownDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const tokenusage_report_breakdown_meta_1 = require("./tokenusage-report-breakdown.meta");
6
+ const usage_metric_fields_1 = require("./usage-metric.fields");
7
+ exports.TokenUsageReportBreakdownDescriptor = (0, define_entity_1.defineEntity)()({
8
+ ...tokenusage_report_breakdown_meta_1.tokenUsageReportBreakdownMeta,
9
+ isCompanyScoped: false,
10
+ fields: {
11
+ label: { type: "string", required: true },
12
+ sublabel: { type: "string" },
13
+ ...usage_metric_fields_1.usageMetricFields,
14
+ },
15
+ relationships: {},
16
+ });
17
+ //# sourceMappingURL=tokenusage-report-breakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-breakdown.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-breakdown.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,yFAAmF;AACnF,+DAAwE;AAmB3D,QAAA,mCAAmC,GAAG,IAAA,4BAAY,GAAmC,CAAC;IACjG,GAAG,gEAA6B;IAEhC,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,GAAG,uCAAiB;KACrB;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
+ export declare const tokenUsageReportBreakdownMeta: DataMeta;
3
+ //# sourceMappingURL=tokenusage-report-breakdown.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-breakdown.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E,eAAO,MAAM,6BAA6B,EAAE,QAK3C,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenUsageReportBreakdownMeta = void 0;
4
+ exports.tokenUsageReportBreakdownMeta = {
5
+ type: "tokenusage-report-breakdowns",
6
+ endpoint: "tokenusages/reports/breakdown",
7
+ nodeName: "tokenUsageReportBreakdown",
8
+ labelName: "TokenUsageReportBreakdown",
9
+ };
10
+ //# sourceMappingURL=tokenusage-report-breakdown.meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-breakdown.meta.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,6BAA6B,GAAa;IACrD,IAAI,EAAE,8BAA8B;IACpC,QAAQ,EAAE,+BAA+B;IACzC,QAAQ,EAAE,2BAA2B;IACrC,SAAS,EAAE,2BAA2B;CACvC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Entity } from "../../../common/abstracts/entity";
2
+ import { UsageMetrics } from "./usage-metric.fields";
3
+ /**
4
+ * One row of the self-service summary: the caller's own company observed over
5
+ * one time window.
6
+ *
7
+ * TWO rows are returned per request — window "current" and "previous" — which is
8
+ * what lets the KPI tile render both the value and its delta without a second
9
+ * call. There is no `scope` field: the administrative customer/platform split is
10
+ * meaningless inside a single tenant.
11
+ *
12
+ * NOT a Neo4j node: there is no TokenUsageReportSummary label. It is a
13
+ * serialisation shape only, exactly like TokenUsageAdminSummaryDescriptor.
14
+ */
15
+ export type TokenUsageReportSummaryEntity = Entity & {
16
+ window: string;
17
+ } & UsageMetrics;
18
+ export declare const TokenUsageReportSummaryDescriptor: import("../../..").EntityDescriptor<TokenUsageReportSummaryEntity, {}>;
19
+ //# sourceMappingURL=tokenusage-report-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-summary.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG1D,OAAO,EAAqB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,eAAO,MAAM,iCAAiC,wEAW5C,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenUsageReportSummaryDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const tokenusage_report_summary_meta_1 = require("./tokenusage-report-summary.meta");
6
+ const usage_metric_fields_1 = require("./usage-metric.fields");
7
+ exports.TokenUsageReportSummaryDescriptor = (0, define_entity_1.defineEntity)()({
8
+ ...tokenusage_report_summary_meta_1.tokenUsageReportSummaryMeta,
9
+ isCompanyScoped: false,
10
+ fields: {
11
+ window: { type: "string", required: true },
12
+ ...usage_metric_fields_1.usageMetricFields,
13
+ },
14
+ relationships: {},
15
+ });
16
+ //# sourceMappingURL=tokenusage-report-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-summary.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-summary.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,qFAA+E;AAC/E,+DAAwE;AAkB3D,QAAA,iCAAiC,GAAG,IAAA,4BAAY,GAAiC,CAAC;IAC7F,GAAG,4DAA2B;IAE9B,eAAe,EAAE,KAAK;IAEtB,MAAM,EAAE;QACN,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,GAAG,uCAAiB;KACrB;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
+ export declare const tokenUsageReportSummaryMeta: DataMeta;
3
+ //# sourceMappingURL=tokenusage-report-summary.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-summary.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-summary.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.tokenUsageReportSummaryMeta = void 0;
4
+ exports.tokenUsageReportSummaryMeta = {
5
+ type: "tokenusage-report-summaries",
6
+ endpoint: "tokenusages/reports/summary",
7
+ nodeName: "tokenUsageReportSummary",
8
+ labelName: "TokenUsageReportSummary",
9
+ };
10
+ //# sourceMappingURL=tokenusage-report-summary.meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-summary.meta.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-summary.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAa;IACnD,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,6BAA6B;IACvC,QAAQ,EAAE,yBAAyB;IACnC,SAAS,EAAE,yBAAyB;CACrC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Entity } from "../../../common/abstracts/entity";
2
+ import { UsageMetrics } from "./usage-metric.fields";
3
+ /**
4
+ * One (bucket, series) cell of the self-service usage-over-time chart. Rows are
5
+ * flat; the frontend pivots them into stacked columns.
6
+ *
7
+ * `bucket` is a calendar day with no time component, so it is `type: "date"` —
8
+ * never `"string"`. See references/date-handling.md rule 1.
9
+ *
10
+ * NOT a Neo4j node — serialisation shape only.
11
+ */
12
+ export type TokenUsageReportTimelineEntity = Entity & {
13
+ bucket: string;
14
+ series: string;
15
+ } & UsageMetrics;
16
+ export declare const TokenUsageReportTimelineDescriptor: import("../../..").EntityDescriptor<TokenUsageReportTimelineEntity, {}>;
17
+ //# sourceMappingURL=tokenusage-report-timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-timeline.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG1D,OAAO,EAAqB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,eAAO,MAAM,kCAAkC,yEAY7C,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenUsageReportTimelineDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const tokenusage_report_timeline_meta_1 = require("./tokenusage-report-timeline.meta");
6
+ const usage_metric_fields_1 = require("./usage-metric.fields");
7
+ exports.TokenUsageReportTimelineDescriptor = (0, define_entity_1.defineEntity)()({
8
+ ...tokenusage_report_timeline_meta_1.tokenUsageReportTimelineMeta,
9
+ isCompanyScoped: false,
10
+ fields: {
11
+ bucket: { type: "date", required: true },
12
+ series: { type: "string", required: true },
13
+ ...usage_metric_fields_1.usageMetricFields,
14
+ },
15
+ relationships: {},
16
+ });
17
+ //# sourceMappingURL=tokenusage-report-timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-timeline.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-timeline.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AACrE,uFAAiF;AACjF,+DAAwE;AAgB3D,QAAA,kCAAkC,GAAG,IAAA,4BAAY,GAAkC,CAAC;IAC/F,GAAG,8DAA4B;IAE/B,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,GAAG,uCAAiB;KACrB;IAED,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
+ export declare const tokenUsageReportTimelineMeta: DataMeta;
3
+ //# sourceMappingURL=tokenusage-report-timeline.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-timeline.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-timeline.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.tokenUsageReportTimelineMeta = void 0;
4
+ exports.tokenUsageReportTimelineMeta = {
5
+ type: "tokenusage-report-timelines",
6
+ endpoint: "tokenusages/reports/timeline",
7
+ nodeName: "tokenUsageReportTimeline",
8
+ labelName: "TokenUsageReportTimeline",
9
+ };
10
+ //# sourceMappingURL=tokenusage-report-timeline.meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage-report-timeline.meta.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/entities/tokenusage-report-timeline.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,4BAA4B,GAAa;IACpD,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,8BAA8B;IACxC,QAAQ,EAAE,0BAA0B;IACpC,SAAS,EAAE,0BAA0B;CACtC,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The six metric fields every token-usage reporting resource exposes.
3
+ *
4
+ * Declared once and spread into all six descriptors (three administrative,
5
+ * three self-service) so the two surfaces cannot drift apart. Spreading a shared
6
+ * `fields` object is an established pattern in this codebase — a consuming app's
7
+ * ExtendedTokenUsageDescriptor already does `fields: { ...TokenUsageDescriptor.fields }`.
8
+ *
9
+ * The `as const` is per FIELD, not on the whole object: it pins `type` to a
10
+ * string literal (which defineEntity needs to infer the entity shape) while
11
+ * leaving each field object mutable, which a whole-object `as const` would not.
12
+ */
13
+ export declare const usageMetricFields: {
14
+ cost: {
15
+ type: "number";
16
+ required: boolean;
17
+ };
18
+ credits: {
19
+ type: "number";
20
+ required: boolean;
21
+ };
22
+ tokensIn: {
23
+ type: "number";
24
+ required: boolean;
25
+ };
26
+ tokensOut: {
27
+ type: "number";
28
+ required: boolean;
29
+ };
30
+ cached: {
31
+ type: "number";
32
+ required: boolean;
33
+ };
34
+ calls: {
35
+ type: "number";
36
+ required: boolean;
37
+ };
38
+ };
39
+ /** The metric half of every reporting entity type. */
40
+ export type UsageMetrics = {
41
+ cost: number;
42
+ credits: number;
43
+ tokensIn: number;
44
+ tokensOut: number;
45
+ cached: number;
46
+ calls: number;
47
+ };
48
+ //# sourceMappingURL=usage-metric.fields.d.ts.map