@proofhound/core 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/common/contracts/index.d.ts +1 -0
- package/dist/server/common/contracts/index.d.ts.map +1 -1
- package/dist/server/common/contracts/index.js +1 -0
- package/dist/server/common/contracts/index.js.map +1 -1
- package/dist/server/common/contracts/local-contracts.module.d.ts.map +1 -1
- package/dist/server/common/contracts/local-contracts.module.js +3 -0
- package/dist/server/common/contracts/local-contracts.module.js.map +1 -1
- package/dist/server/common/contracts/usage-metering.hook.d.ts +33 -0
- package/dist/server/common/contracts/usage-metering.hook.d.ts.map +1 -0
- package/dist/server/common/contracts/usage-metering.hook.js +43 -0
- package/dist/server/common/contracts/usage-metering.hook.js.map +1 -0
- package/dist/server/infrastructure/llm/run-result-writer.d.ts +4 -1
- package/dist/server/infrastructure/llm/run-result-writer.d.ts.map +1 -1
- package/dist/server/infrastructure/llm/run-result-writer.js +63 -11
- package/dist/server/infrastructure/llm/run-result-writer.js.map +1 -1
- package/dist/server/modules/dataset/dataset-import.service.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset-import.service.js +7 -0
- package/dist/server/modules/dataset/dataset-import.service.js.map +1 -1
- package/dist/server/modules/dataset/dataset.service.d.ts +13 -1
- package/dist/server/modules/dataset/dataset.service.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset.service.js +85 -2
- package/dist/server/modules/dataset/dataset.service.js.map +1 -1
- package/dist/server/modules/model/model.service.d.ts +5 -1
- package/dist/server/modules/model/model.service.d.ts.map +1 -1
- package/dist/server/modules/model/model.service.js +65 -3
- package/dist/server/modules/model/model.service.js.map +1 -1
- package/dist/server/modules/release-line/release-line.service.d.ts +4 -1
- package/dist/server/modules/release-line/release-line.service.d.ts.map +1 -1
- package/dist/server/modules/release-line/release-line.service.js +83 -3
- package/dist/server/modules/release-line/release-line.service.js.map +1 -1
- package/dist/server/modules/release-line/release-runner.service.d.ts +4 -1
- package/dist/server/modules/release-line/release-runner.service.d.ts.map +1 -1
- package/dist/server/modules/release-line/release-runner.service.js +35 -2
- package/dist/server/modules/release-line/release-runner.service.js.map +1 -1
- package/dist/worker/consumers/llm.consumer.d.ts +4 -1
- package/dist/worker/consumers/llm.consumer.d.ts.map +1 -1
- package/dist/worker/consumers/llm.consumer.js +38 -3
- package/dist/worker/consumers/llm.consumer.js.map +1 -1
- package/dist/worker/consumers/probe.consumer.d.ts +4 -1
- package/dist/worker/consumers/probe.consumer.d.ts.map +1 -1
- package/dist/worker/consumers/probe.consumer.js +35 -3
- package/dist/worker/consumers/probe.consumer.js.map +1 -1
- package/dist/worker/runners/llm-runner.d.ts +3 -1
- package/dist/worker/runners/llm-runner.d.ts.map +1 -1
- package/dist/worker/runners/llm-runner.js +102 -55
- package/dist/worker/runners/llm-runner.js.map +1 -1
- package/dist/worker/runners/probe-runner.d.ts +9 -2
- package/dist/worker/runners/probe-runner.d.ts.map +1 -1
- package/dist/worker/runners/probe-runner.js +46 -2
- package/dist/worker/runners/probe-runner.js.map +1 -1
- package/dist/worker/runners/run-result-writer.d.ts +4 -1
- package/dist/worker/runners/run-result-writer.d.ts.map +1 -1
- package/dist/worker/runners/run-result-writer.js +60 -10
- package/dist/worker/runners/run-result-writer.js.map +1 -1
- package/package.json +13 -13
|
@@ -8,6 +8,7 @@ export * from './token.service';
|
|
|
8
8
|
export * from './limiter-key.strategy';
|
|
9
9
|
export * from './runtime-limits.provider';
|
|
10
10
|
export * from './quota-policy.hook';
|
|
11
|
+
export * from './usage-metering.hook';
|
|
11
12
|
export * from './workflow-authorization.hook';
|
|
12
13
|
export * from './http-actor.guard';
|
|
13
14
|
export * from './local-project-context.resolver';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/index.ts"],"names":[],"mappings":"AAGA,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oEAAoE,CAAC;AACnH,cAAc,sDAAsD,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/index.ts"],"names":[],"mappings":"AAGA,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oEAAoE,CAAC;AACnH,cAAc,sDAAsD,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -27,6 +27,7 @@ __exportStar(require("./token.service"), exports);
|
|
|
27
27
|
__exportStar(require("./limiter-key.strategy"), exports);
|
|
28
28
|
__exportStar(require("./runtime-limits.provider"), exports);
|
|
29
29
|
__exportStar(require("./quota-policy.hook"), exports);
|
|
30
|
+
__exportStar(require("./usage-metering.hook"), exports);
|
|
30
31
|
__exportStar(require("./workflow-authorization.hook"), exports);
|
|
31
32
|
__exportStar(require("./http-actor.guard"), exports);
|
|
32
33
|
__exportStar(require("./local-project-context.resolver"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/index.ts"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,6CAA6C;;;;;;;;;;;;;;;;;AAE7C,0CAAwB;AACxB,6DAA2C;AAC3C,2DAAyC;AACzC,sDAAoC;AACpC,2DAAyC;AACzC,+DAA6C;AAC7C,kDAAgC;AAChC,yDAAuC;AACvC,4DAA0C;AAC1C,sDAAoC;AACpC,gEAA8C;AAC9C,qDAAmC;AACnC,mEAAiD;AACjD,iEAA+C;AAC/C,4DAA0C;AAC1C,iEAA+C;AAC/C,8DAA4C;AAC5C,mEAAsE;AAA7D,kHAAA,iBAAiB,OAAA;AAC1B,uEAAqD;AACrD,uHAAmH;AAA1G,iJAAA,6BAA6B,OAAA;AACtC,uFAAqE;AACrE,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/index.ts"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,6CAA6C;;;;;;;;;;;;;;;;;AAE7C,0CAAwB;AACxB,6DAA2C;AAC3C,2DAAyC;AACzC,sDAAoC;AACpC,2DAAyC;AACzC,+DAA6C;AAC7C,kDAAgC;AAChC,yDAAuC;AACvC,4DAA0C;AAC1C,sDAAoC;AACpC,wDAAsC;AACtC,gEAA8C;AAC9C,qDAAmC;AACnC,mEAAiD;AACjD,iEAA+C;AAC/C,4DAA0C;AAC1C,iEAA+C;AAC/C,8DAA4C;AAC5C,mEAAsE;AAA7D,kHAAA,iBAAiB,OAAA;AAC1B,uEAAqD;AACrD,uHAAmH;AAA1G,iJAAA,6BAA6B,OAAA;AACtC,uFAAqE;AACrE,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-contracts.module.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/local-contracts.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-contracts.module.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/local-contracts.module.ts"],"names":[],"mappings":"AAkCA,qBAkCa,oBAAoB;CAAG"}
|
|
@@ -37,6 +37,7 @@ const project_context_resolver_1 = require("./project-context.resolver");
|
|
|
37
37
|
const quota_policy_hook_1 = require("./quota-policy.hook");
|
|
38
38
|
const runtime_limits_provider_1 = require("./runtime-limits.provider");
|
|
39
39
|
const token_service_2 = require("./token.service");
|
|
40
|
+
const usage_metering_hook_1 = require("./usage-metering.hook");
|
|
40
41
|
const workflow_authorization_hook_1 = require("./workflow-authorization.hook");
|
|
41
42
|
let LocalContractsModule = class LocalContractsModule {
|
|
42
43
|
};
|
|
@@ -58,6 +59,7 @@ exports.LocalContractsModule = LocalContractsModule = __decorate([
|
|
|
58
59
|
{ provide: limiter_key_strategy_1.LimiterKeyStrategy, useClass: limiter_key_strategy_1.LocalLimiterKeyStrategy },
|
|
59
60
|
{ provide: runtime_limits_provider_1.RuntimeLimitsProvider, useClass: runtime_limits_provider_1.LocalRuntimeLimitsProvider },
|
|
60
61
|
{ provide: quota_policy_hook_1.QuotaPolicyHook, useClass: quota_policy_hook_1.LocalQuotaPolicyHook },
|
|
62
|
+
{ provide: usage_metering_hook_1.UsageMeteringHook, useClass: usage_metering_hook_1.NoopUsageMeteringHook },
|
|
61
63
|
{ provide: workflow_authorization_hook_1.WorkflowAuthorizationHook, useClass: workflow_authorization_hook_1.LocalWorkflowAuthorizationHook },
|
|
62
64
|
],
|
|
63
65
|
exports: [
|
|
@@ -70,6 +72,7 @@ exports.LocalContractsModule = LocalContractsModule = __decorate([
|
|
|
70
72
|
limiter_key_strategy_1.LimiterKeyStrategy,
|
|
71
73
|
runtime_limits_provider_1.RuntimeLimitsProvider,
|
|
72
74
|
quota_policy_hook_1.QuotaPolicyHook,
|
|
75
|
+
usage_metering_hook_1.UsageMeteringHook,
|
|
73
76
|
workflow_authorization_hook_1.WorkflowAuthorizationHook,
|
|
74
77
|
local_user_token_verifier_1.LocalUserTokenVerifier,
|
|
75
78
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-contracts.module.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/local-contracts.module.ts"],"names":[],"mappings":";AAAA,gGAAgG;AAChG,sCAAsC;AACtC,sDAAsD;AACtD,EAAE;AACF,oGAAoG;AACpG,oGAAoG;AACpG,+FAA+F;AAC/F,EAAE;AACF,iGAAiG;;;;;;;;;AAEjG,2CAAgD;AAChD,wEAAoE;AACpE,8EAA0E;AAC1E,yHAAmH;AACnH,6FAAyF;AACzF,2EAAuE;AACvE,qEAAsE;AACtE,qEAAgE;AAChE,qEAAgE;AAChE,6EAAwE;AACxE,iEAAqF;AACrF,iFAA2E;AAC3E,iFAA2E;AAC3E,uEAAiE;AACjE,qFAA+E;AAC/E,2EAAqE;AACrE,2DAAsD;AACtD,yEAAoE;AACpE,2DAA4E;AAC5E,uEAA8F;AAC9F,mDAA+C;AAC/C,+EAA0G;
|
|
1
|
+
{"version":3,"file":"local-contracts.module.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/local-contracts.module.ts"],"names":[],"mappings":";AAAA,gGAAgG;AAChG,sCAAsC;AACtC,sDAAsD;AACtD,EAAE;AACF,oGAAoG;AACpG,oGAAoG;AACpG,+FAA+F;AAC/F,EAAE;AACF,iGAAiG;;;;;;;;;AAEjG,2CAAgD;AAChD,wEAAoE;AACpE,8EAA0E;AAC1E,yHAAmH;AACnH,6FAAyF;AACzF,2EAAuE;AACvE,qEAAsE;AACtE,qEAAgE;AAChE,qEAAgE;AAChE,6EAAwE;AACxE,iEAAqF;AACrF,iFAA2E;AAC3E,iFAA2E;AAC3E,uEAAiE;AACjE,qFAA+E;AAC/E,2EAAqE;AACrE,2DAAsD;AACtD,yEAAoE;AACpE,2DAA4E;AAC5E,uEAA8F;AAC9F,mDAA+C;AAC/C,+DAAiF;AACjF,+EAA0G;AAoCnG,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oDAAoB;+BAApB,oBAAoB;IAlChC,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,EAAE,gCAAc,CAAC;QACvC,SAAS,EAAE;YACT,sCAAiB;YACjB,kCAAe;YACf,kDAAsB;YACtB,EAAE,OAAO,EAAE,iDAAsB,EAAE,QAAQ,EAAE,4DAA2B,EAAE;YAC1E,EAAE,OAAO,EAAE,6CAAoB,EAAE,QAAQ,EAAE,wDAAyB,EAAE;YACtE,EAAE,OAAO,EAAE,mCAAe,EAAE,QAAQ,EAAE,8CAAoB,EAAE;YAC5D,EAAE,OAAO,EAAE,qDAAwB,EAAE,QAAQ,EAAE,gEAA6B,EAAE;YAC9E,EAAE,OAAO,EAAE,4BAAY,EAAE,QAAQ,EAAE,iCAAiB,EAAE;YACtD,EAAE,OAAO,EAAE,6CAAoB,EAAE,QAAQ,EAAE,wDAAyB,EAAE;YACtE,EAAE,OAAO,EAAE,yCAAkB,EAAE,QAAQ,EAAE,8CAAuB,EAAE;YAClE,EAAE,OAAO,EAAE,+CAAqB,EAAE,QAAQ,EAAE,oDAA0B,EAAE;YACxE,EAAE,OAAO,EAAE,mCAAe,EAAE,QAAQ,EAAE,wCAAoB,EAAE;YAC5D,EAAE,OAAO,EAAE,uCAAiB,EAAE,QAAQ,EAAE,2CAAqB,EAAE;YAC/D,EAAE,OAAO,EAAE,uDAAyB,EAAE,QAAQ,EAAE,4DAA8B,EAAE;SACjF;QACD,OAAO,EAAE;YACP,iDAAsB;YACtB,6CAAoB;YACpB,mCAAe;YACf,qDAAwB;YACxB,4BAAY;YACZ,6CAAoB;YACpB,yCAAkB;YAClB,+CAAqB;YACrB,mCAAe;YACf,uCAAiB;YACjB,uDAAyB;YACzB,kDAAsB;SACvB;KACF,CAAC;GACW,oBAAoB,CAAG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type UsageMeteringDimension = 'project' | 'job' | 'run_result' | 'release' | 'storage' | 'concurrency' | 'model';
|
|
2
|
+
export type UsageMeteringSource = 'server' | 'worker' | 'workflow' | 'release-runner';
|
|
3
|
+
export interface UsageMeteringEvent {
|
|
4
|
+
idempotencyKey: string;
|
|
5
|
+
dimension: UsageMeteringDimension;
|
|
6
|
+
eventType: string;
|
|
7
|
+
projectId: string;
|
|
8
|
+
actorId?: string | null;
|
|
9
|
+
occurredAt: Date;
|
|
10
|
+
source: UsageMeteringSource;
|
|
11
|
+
payload?: Record<string, unknown>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Observation-only usage event hook.
|
|
15
|
+
*
|
|
16
|
+
* Implementations run on request, worker, and release-runner hot paths, so
|
|
17
|
+
* record() must stay bounded/O(1): append an idempotent event and optionally
|
|
18
|
+
* mark a coarse dirty key. It must not synchronously aggregate run_results,
|
|
19
|
+
* storage, release, or other detail tables, nor rebuild usage read models.
|
|
20
|
+
* Expensive recompute and rollups belong in async batched reconcile jobs.
|
|
21
|
+
*/
|
|
22
|
+
export declare abstract class UsageMeteringHook {
|
|
23
|
+
abstract record(event: UsageMeteringEvent): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export declare class NoopUsageMeteringHook extends UsageMeteringHook {
|
|
26
|
+
record(_event: UsageMeteringEvent): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export interface UsageMeteringLogger {
|
|
29
|
+
warn?(payload: Record<string, unknown>, message: string): void;
|
|
30
|
+
error?(payload: Record<string, unknown>, message: string): void;
|
|
31
|
+
}
|
|
32
|
+
export declare function safeRecordUsageEvent(hook: UsageMeteringHook, event: UsageMeteringEvent, logger?: UsageMeteringLogger): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=usage-metering.hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-metering.hook.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/usage-metering.hook.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;AAExH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,sBAAsB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,8BAAsB,iBAAiB;IACrC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC1D;AAED,qBAAa,qBAAsB,SAAQ,iBAAiB;IACpD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjE;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,kBAAkB,EACzB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoopUsageMeteringHook = exports.UsageMeteringHook = void 0;
|
|
4
|
+
exports.safeRecordUsageEvent = safeRecordUsageEvent;
|
|
5
|
+
/**
|
|
6
|
+
* Observation-only usage event hook.
|
|
7
|
+
*
|
|
8
|
+
* Implementations run on request, worker, and release-runner hot paths, so
|
|
9
|
+
* record() must stay bounded/O(1): append an idempotent event and optionally
|
|
10
|
+
* mark a coarse dirty key. It must not synchronously aggregate run_results,
|
|
11
|
+
* storage, release, or other detail tables, nor rebuild usage read models.
|
|
12
|
+
* Expensive recompute and rollups belong in async batched reconcile jobs.
|
|
13
|
+
*/
|
|
14
|
+
class UsageMeteringHook {
|
|
15
|
+
}
|
|
16
|
+
exports.UsageMeteringHook = UsageMeteringHook;
|
|
17
|
+
class NoopUsageMeteringHook extends UsageMeteringHook {
|
|
18
|
+
async record(_event) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.NoopUsageMeteringHook = NoopUsageMeteringHook;
|
|
23
|
+
async function safeRecordUsageEvent(hook, event, logger) {
|
|
24
|
+
try {
|
|
25
|
+
await hook.record(event);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
const payload = {
|
|
29
|
+
error: error.message,
|
|
30
|
+
idempotencyKey: event.idempotencyKey,
|
|
31
|
+
eventType: event.eventType,
|
|
32
|
+
projectId: event.projectId,
|
|
33
|
+
dimension: event.dimension,
|
|
34
|
+
};
|
|
35
|
+
if (logger?.warn) {
|
|
36
|
+
logger.warn(payload, 'usage_metering_record_failed');
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
logger?.error?.(payload, 'usage_metering_record_failed');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=usage-metering.hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-metering.hook.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/usage-metering.hook.ts"],"names":[],"mappings":";;;AAuCA,oDAqBC;AA7CD;;;;;;;;GAQG;AACH,MAAsB,iBAAiB;CAEtC;AAFD,8CAEC;AAED,MAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,KAAK,CAAC,MAAM,CAAC,MAA0B;QACrC,OAAO;IACT,CAAC;CACF;AAJD,sDAIC;AAOM,KAAK,UAAU,oBAAoB,CACxC,IAAuB,EACvB,KAAyB,EACzB,MAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG;YACd,KAAK,EAAG,KAAe,CAAC,OAAO;YAC/B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;QACF,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { DbClient } from '@proofhound/db';
|
|
2
2
|
import type { LLMRunResultRecord, LLMRunResultWriter } from '@proofhound/llm-client';
|
|
3
3
|
import { QuotaPolicyHook } from '../../common/contracts/quota-policy.hook';
|
|
4
|
+
import { UsageMeteringHook } from '../../common/contracts/usage-metering.hook';
|
|
4
5
|
export declare class DrizzleRunResultWriter implements LLMRunResultWriter {
|
|
5
6
|
private readonly db;
|
|
6
7
|
private readonly quotaPolicy;
|
|
7
|
-
|
|
8
|
+
private readonly usageMetering?;
|
|
9
|
+
private readonly logger;
|
|
10
|
+
constructor(db: DbClient, quotaPolicy: QuotaPolicyHook, usageMetering?: UsageMeteringHook | undefined);
|
|
8
11
|
writeRunResult(record: LLMRunResultRecord): Promise<void>;
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=run-result-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-result-writer.d.ts","sourceRoot":"","sources":["../../../../src/server/infrastructure/llm/run-result-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-result-writer.d.ts","sourceRoot":"","sources":["../../../../src/server/infrastructure/llm/run-result-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAwB,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAOrG,qBACa,sBAAuB,YAAW,kBAAkB;IAIpC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAChB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAL7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmE;gBAG9C,EAAE,EAAE,QAAQ,EACrC,WAAW,EAAE,eAAe,EAChB,aAAa,CAAC,EAAE,iBAAiB,YAAA;IAG1D,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CA0FhE"}
|
|
@@ -16,16 +16,20 @@ exports.DrizzleRunResultWriter = void 0;
|
|
|
16
16
|
const node_buffer_1 = require("node:buffer");
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const drizzle_orm_1 = require("drizzle-orm");
|
|
19
|
+
const logger_1 = require("@proofhound/logger");
|
|
19
20
|
const quota_policy_hook_1 = require("../../common/contracts/quota-policy.hook");
|
|
21
|
+
const usage_metering_hook_1 = require("../../common/contracts/usage-metering.hook");
|
|
20
22
|
const database_constants_1 = require("../../../shared/database/database.constants");
|
|
21
|
-
// ph_runs.run_results is monthly-partitioned by created_at, so
|
|
22
|
-
//
|
|
23
|
+
// ph_runs.run_results is monthly-partitioned by created_at, so UNIQUE(id) cannot live on that table.
|
|
24
|
+
// Reserve id in unpartitioned ph_runs.run_result_ids first, then insert into the partitioned fact table:
|
|
23
25
|
// - DBOS workflow retry / replay never writes a duplicate row for the same runResultId
|
|
24
26
|
// - Behaviorally equivalent to apps/worker/src/runners/run-result-writer.ts (the dual implementation will be reconciled when extracted into a package)
|
|
25
27
|
let DrizzleRunResultWriter = class DrizzleRunResultWriter {
|
|
26
|
-
constructor(db, quotaPolicy) {
|
|
28
|
+
constructor(db, quotaPolicy, usageMetering) {
|
|
27
29
|
this.db = db;
|
|
28
30
|
this.quotaPolicy = quotaPolicy;
|
|
31
|
+
this.usageMetering = usageMetering;
|
|
32
|
+
this.logger = (0, logger_1.createLogger)('server.run-result-writer', { service: 'server' });
|
|
29
33
|
}
|
|
30
34
|
async writeRunResult(record) {
|
|
31
35
|
const sampleId = record.sampleId ?? null;
|
|
@@ -53,17 +57,23 @@ let DrizzleRunResultWriter = class DrizzleRunResultWriter {
|
|
|
53
57
|
project: { projectId: record.projectId, source: 'local' },
|
|
54
58
|
source: 'run_result',
|
|
55
59
|
});
|
|
56
|
-
await this.db.execute((0, drizzle_orm_1.sql) `
|
|
60
|
+
const insertResult = await this.db.execute((0, drizzle_orm_1.sql) `
|
|
61
|
+
WITH reserved_run_result AS (
|
|
62
|
+
INSERT INTO ph_runs.run_result_ids (id)
|
|
63
|
+
VALUES (${record.id}::uuid)
|
|
64
|
+
ON CONFLICT (id) DO NOTHING
|
|
65
|
+
RETURNING id, created_at
|
|
66
|
+
)
|
|
57
67
|
INSERT INTO ph_runs.run_results (
|
|
58
68
|
id, project_id, source, source_id, release_variant_id, prompt_version_id, model_id,
|
|
59
69
|
sample_id, external_id, rendered_prompt, input_variables,
|
|
60
70
|
raw_response, parsed_output, decision_output, expected_output, is_correct, judgment_status,
|
|
61
71
|
status, error_class, error_message,
|
|
62
72
|
latency_ms, input_tokens, output_tokens, cost_estimate, attempt,
|
|
63
|
-
dbos_workflow_id, bullmq_job_id, round_index
|
|
73
|
+
dbos_workflow_id, bullmq_job_id, round_index, created_at
|
|
64
74
|
)
|
|
65
75
|
SELECT
|
|
66
|
-
|
|
76
|
+
reserved_run_result.id, ${record.projectId}::uuid, ${record.source},
|
|
67
77
|
${record.sourceId}::uuid, ${releaseVariantId}::uuid, ${record.promptVersionId}::uuid, ${record.modelId}::uuid,
|
|
68
78
|
${sampleId}::uuid, ${externalId},
|
|
69
79
|
${JSON.stringify(record.renderedPrompt)}::jsonb,
|
|
@@ -74,18 +84,45 @@ let DrizzleRunResultWriter = class DrizzleRunResultWriter {
|
|
|
74
84
|
${record.status}, ${errorClass}, ${errorMessage},
|
|
75
85
|
${latencyMs}, ${inputTokens}, ${outputTokens},
|
|
76
86
|
${costEstimate}, ${attempt},
|
|
77
|
-
${dbosWorkflowId}, ${bullmqJobId}, ${roundIndex}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
${dbosWorkflowId}, ${bullmqJobId}, ${roundIndex},
|
|
88
|
+
reserved_run_result.created_at
|
|
89
|
+
FROM reserved_run_result
|
|
90
|
+
RETURNING id, created_at
|
|
81
91
|
`);
|
|
92
|
+
const insertedRows = unwrapRows(insertResult);
|
|
93
|
+
if (insertedRows.length > 0 && this.usageMetering) {
|
|
94
|
+
const occurredAt = coerceDate(insertedRows[0]?.created_at);
|
|
95
|
+
await (0, usage_metering_hook_1.safeRecordUsageEvent)(this.usageMetering, {
|
|
96
|
+
idempotencyKey: `run_result:${record.id}:created`,
|
|
97
|
+
dimension: 'run_result',
|
|
98
|
+
eventType: 'run_result.created',
|
|
99
|
+
projectId: record.projectId,
|
|
100
|
+
occurredAt,
|
|
101
|
+
source: 'workflow',
|
|
102
|
+
payload: {
|
|
103
|
+
runResultId: record.id,
|
|
104
|
+
source: record.source,
|
|
105
|
+
sourceId: record.sourceId,
|
|
106
|
+
promptVersionId: record.promptVersionId,
|
|
107
|
+
modelId: record.modelId,
|
|
108
|
+
status: record.status,
|
|
109
|
+
inputTokens,
|
|
110
|
+
outputTokens,
|
|
111
|
+
costEstimate,
|
|
112
|
+
latencyMs,
|
|
113
|
+
createdAt: occurredAt.toISOString(),
|
|
114
|
+
},
|
|
115
|
+
}, this.logger);
|
|
116
|
+
}
|
|
82
117
|
}
|
|
83
118
|
};
|
|
84
119
|
exports.DrizzleRunResultWriter = DrizzleRunResultWriter;
|
|
85
120
|
exports.DrizzleRunResultWriter = DrizzleRunResultWriter = __decorate([
|
|
86
121
|
(0, common_1.Injectable)(),
|
|
87
122
|
__param(0, (0, common_1.Inject)(database_constants_1.DATABASE_CLIENT)),
|
|
88
|
-
|
|
123
|
+
__param(2, (0, common_1.Optional)()),
|
|
124
|
+
__metadata("design:paramtypes", [Object, quota_policy_hook_1.QuotaPolicyHook,
|
|
125
|
+
usage_metering_hook_1.UsageMeteringHook])
|
|
89
126
|
], DrizzleRunResultWriter);
|
|
90
127
|
function estimateRunResultBytes(record) {
|
|
91
128
|
return (utf8Bytes(record.renderedPrompt) +
|
|
@@ -100,4 +137,19 @@ function estimateRunResultBytes(record) {
|
|
|
100
137
|
function utf8Bytes(value) {
|
|
101
138
|
return node_buffer_1.Buffer.byteLength(typeof value === 'string' ? value : JSON.stringify(value ?? null), 'utf8');
|
|
102
139
|
}
|
|
140
|
+
function unwrapRows(result) {
|
|
141
|
+
if (Array.isArray(result))
|
|
142
|
+
return result;
|
|
143
|
+
if (result && typeof result === 'object' && 'rows' in result) {
|
|
144
|
+
return (result.rows ?? []);
|
|
145
|
+
}
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
function coerceDate(value) {
|
|
149
|
+
if (value instanceof Date)
|
|
150
|
+
return value;
|
|
151
|
+
if (value)
|
|
152
|
+
return new Date(value);
|
|
153
|
+
return new Date();
|
|
154
|
+
}
|
|
103
155
|
//# sourceMappingURL=run-result-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-result-writer.js","sourceRoot":"","sources":["../../../../src/server/infrastructure/llm/run-result-writer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"run-result-writer.js","sourceRoot":"","sources":["../../../../src/server/infrastructure/llm/run-result-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-import.service.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,sBAAsB,EAEtB,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EAGrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,OAAO,EAEL,uBAAuB,EAIxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQnD,qBACa,oBAAqB,YAAW,YAAY,EAAE,eAAe;IAMtE,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IACxF,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAGN,IAAI,EAAE,uBAAuB,EAC7B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,oBAAoB,EACnC,WAAW,EAAE,eAAe;IAG/C,YAAY,IAAI,IAAI;IAKpB,eAAe,IAAI,IAAI;IAOjB,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,sBAAsB,EAC3B,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,oBAAoB,CAAC;IAkB1B,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,6BAA6B,CAAC;IA2BnC,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"dataset-import.service.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,sBAAsB,EAEtB,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EAGrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,OAAO,EAEL,uBAAuB,EAIxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQnD,qBACa,oBAAqB,YAAW,YAAY,EAAE,eAAe;IAMtE,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IACxF,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAGN,IAAI,EAAE,uBAAuB,EAC7B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,oBAAoB,EACnC,WAAW,EAAE,eAAe;IAG/C,YAAY,IAAI,IAAI;IAKpB,eAAe,IAAI,IAAI;IAOjB,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,sBAAsB,EAC3B,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,oBAAoB,CAAC;IAkB1B,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,6BAA6B,CAAC;IA2BnC,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,gCAAgC,CAAC;IAsCtC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpF,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQxG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;YAgB1B,oBAAoB;YAMpB,kBAAkB;YAKlB,gBAAgB;IAO9B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -101,6 +101,13 @@ let DatasetImportService = class DatasetImportService {
|
|
|
101
101
|
hasImages,
|
|
102
102
|
});
|
|
103
103
|
const dataset = await this.datasetService.getDataset(projectId, datasetId, actor);
|
|
104
|
+
await this.datasetService.recordDatasetImportCompleted({
|
|
105
|
+
projectId,
|
|
106
|
+
datasetId,
|
|
107
|
+
importId,
|
|
108
|
+
actorId: actor.sub,
|
|
109
|
+
sampleCount,
|
|
110
|
+
});
|
|
104
111
|
this.logger.info({ importId, datasetId, sampleCount }, 'dataset_import_completed');
|
|
105
112
|
return { dataset, sampleCount };
|
|
106
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-import.service.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAqC;AACrC,6CAAyC;AACzC,2CAOwB;AACxB,+CAAkD;AAWlD,gEAA6D;AAC7D,0FAAqF;AACrF,gFAA2E;AAE3E,2EAAsE;AACtE,2EAMqC;AACrC,uDAAmD;AAEnD,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;AAG7D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAK/B,YACmB,IAA6B,EAC7B,cAA8B,EAC9B,aAAmC,EACnC,WAA4B;QAH5B,SAAI,GAAJ,IAAI,CAAyB;QAC7B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,kBAAa,GAAb,aAAa,CAAsB;QACnC,gBAAW,GAAX,WAAW,CAAiB;QAR9B,WAAM,GAAG,IAAA,qBAAY,EAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,eAAU,GAA0B,IAAI,CAAC;QACzC,aAAQ,GAAG,KAAK,CAAC;IAOtB,CAAC;IAEJ,YAAY;QACV,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,SAAiB,EACjB,GAA2B,EAC3B,KAAyB;QAEzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;YACpC,KAAK,EAAE,IAAA,+BAAc,EAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;YACvD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;YACvC,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,QAAgB,EAChB,GAA0B,EAC1B,KAAyB;QAEzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEjE,+FAA+F;QAC/F,IAAI,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,IAAI,4BAAmB,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;YACpC,KAAK,EAAE,IAAA,+BAAc,EAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YACjC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;YACvC,MAAM,EAAE,sBAAsB;SAC/B,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAqB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAClE,QAAQ,EAAE,GAAG,CAAC,eAAe,GAAG,MAAM;YACtC,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC;SACxD,CAAC,CAAC,CAAC;QAEJ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3G,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAiB,EACjB,QAAgB,EAChB,KAAyB;QAEzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;QACpG,MAAM,WAAW,GAAG,IAAA,mDAAuB,EAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAA,wBAAU,GAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9C,QAAQ;gBACR,SAAS;gBACT,WAAW,EAAE,KAAK,CAAC,GAAG;gBACtB,SAAS;gBACT,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW;gBACX,SAAS;aACV,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACnF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mDAAuB;gBAAE,MAAM,IAAI,4BAAmB,CAAC,sBAAsB,CAAC,CAAC;YACpG,IAAI,KAAK,YAAY,iDAAqB;gBAAE,MAAM,IAAI,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;YAC9F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,oHAAoH;IACpH,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAyB;QACxE,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAyB;QAC5E,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,0BAAiB,CAAC,kBAAkB,QAAQ,YAAY,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,sGAAsG;IACtG,KAAK,CAAC,iBAAiB;QACrB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,6BAA6B,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,KAAyB;QAC7E,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAA,+BAAc,EAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QAC1G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,0BAAiB,CAAC,WAAW,SAAS,YAAY,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,KAAyB;QAC3E,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAA,+BAAc,EAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;QAC3G,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,QAAgB;QAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,0BAAiB,CAAC,kBAAkB,QAAQ,YAAY,CAAC,CAAC;QAC9E,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,0BAAiB,CAAC,8BAA8B,CAAC,CAAC;QAC5F,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,wBAAwB,CAAC,GAA2B;QAC1D,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QAC5F,IAAI,aAAa,GAAG,CAAC;YAAE,MAAM,IAAI,0BAAiB,CAAC,+BAA+B,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,iCAAiC,CAAC,CAAC;IAC3G,CAAC;IAEO,eAAe,CAAC,OAAyB;QAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,aAA0C,CAAC,CAAC,CAAC,EAAE,CAAC;IACzG,CAAC;IAEO,mBAAmB,CAAC,OAAyB;QACnD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;IAC1F,CAAC;IAEO,aAAa,CAAC,MAA+B,EAAE,SAAwB;QAC7E,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEO,YAAY,CAAC,GAAqB;QACxC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;YACxC,YAAY,EAAE,GAAG,CAAC,YAAyC;YAC3D,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,MAAM,EAAE,GAAG,CAAC,MAA6B;YACzC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;YACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;SACvC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAClG,CAAC;IAEO,iBAAiB;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACjG,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"dataset-import.service.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import type { CreateDatasetDto, DatasetCreateResponseDto, DatasetExportFormatDto
|
|
|
3
3
|
import type { CurrentUserPayload } from '../../common/decorators/current-user.decorator';
|
|
4
4
|
import { AccessControlService } from '../../common/contracts/access-control.service';
|
|
5
5
|
import { QuotaPolicyHook } from '../../common/contracts/quota-policy.hook';
|
|
6
|
+
import { UsageMeteringHook } from '../../common/contracts/usage-metering.hook';
|
|
6
7
|
import { DatasetRepository } from './dataset.repository';
|
|
7
8
|
export interface DatasetExportFile {
|
|
8
9
|
fileName: string;
|
|
@@ -15,7 +16,9 @@ export declare class DatasetService {
|
|
|
15
16
|
private readonly repo;
|
|
16
17
|
private readonly accessControl;
|
|
17
18
|
private readonly quotaPolicy;
|
|
18
|
-
|
|
19
|
+
private readonly usageMetering?;
|
|
20
|
+
private readonly logger;
|
|
21
|
+
constructor(repo: DatasetRepository, accessControl: AccessControlService, quotaPolicy: QuotaPolicyHook, usageMetering?: UsageMeteringHook | undefined);
|
|
19
22
|
listDatasets(projectId: string, actor: CurrentUserPayload): Promise<{
|
|
20
23
|
data: DatasetListItemDto[];
|
|
21
24
|
total: number;
|
|
@@ -27,8 +30,17 @@ export declare class DatasetService {
|
|
|
27
30
|
deleteDatasetSamples(projectId: string, datasetId: string, dto: DeleteDatasetSamplesDto, actor: CurrentUserPayload): Promise<DeleteDatasetSamplesResponseDto>;
|
|
28
31
|
updateDatasetMetadata(projectId: string, datasetId: string, dto: UpdateDatasetMetadataDto, actor: CurrentUserPayload): Promise<DatasetListItemDto>;
|
|
29
32
|
deleteDataset(projectId: string, datasetId: string, actor: CurrentUserPayload): Promise<void>;
|
|
33
|
+
recordDatasetImportCompleted(input: {
|
|
34
|
+
projectId: string;
|
|
35
|
+
datasetId: string;
|
|
36
|
+
importId: string;
|
|
37
|
+
actorId: string;
|
|
38
|
+
sampleCount: number;
|
|
39
|
+
}): Promise<void>;
|
|
30
40
|
private getAccessibleProject;
|
|
31
41
|
private getWritableProject;
|
|
42
|
+
private recordDatasetStorageEvents;
|
|
43
|
+
private recordStorageEvent;
|
|
32
44
|
private assertConsistentMappings;
|
|
33
45
|
private toDatasetListItem;
|
|
34
46
|
private emptyReferences;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset.service.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dataset.service.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,21 +8,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.DatasetService = void 0;
|
|
13
16
|
const node_buffer_1 = require("node:buffer");
|
|
14
17
|
const node_crypto_1 = require("node:crypto");
|
|
15
18
|
const common_1 = require("@nestjs/common");
|
|
19
|
+
const logger_1 = require("@proofhound/logger");
|
|
16
20
|
const access_control_1 = require("../../common/access-control");
|
|
17
21
|
const access_control_service_1 = require("../../common/contracts/access-control.service");
|
|
18
22
|
const quota_policy_hook_1 = require("../../common/contracts/quota-policy.hook");
|
|
23
|
+
const usage_metering_hook_1 = require("../../common/contracts/usage-metering.hook");
|
|
19
24
|
const dataset_field_schema_util_1 = require("./dataset-field-schema.util");
|
|
20
25
|
const dataset_repository_1 = require("./dataset.repository");
|
|
21
26
|
let DatasetService = class DatasetService {
|
|
22
|
-
constructor(repo, accessControl, quotaPolicy) {
|
|
27
|
+
constructor(repo, accessControl, quotaPolicy, usageMetering) {
|
|
23
28
|
this.repo = repo;
|
|
24
29
|
this.accessControl = accessControl;
|
|
25
30
|
this.quotaPolicy = quotaPolicy;
|
|
31
|
+
this.usageMetering = usageMetering;
|
|
32
|
+
this.logger = (0, logger_1.createLogger)('dataset.service', { service: 'server' });
|
|
26
33
|
}
|
|
27
34
|
async listDatasets(projectId, actor) {
|
|
28
35
|
await this.getAccessibleProject(projectId, actor);
|
|
@@ -93,6 +100,11 @@ let DatasetService = class DatasetService {
|
|
|
93
100
|
storagePrefix,
|
|
94
101
|
externalIdFieldName,
|
|
95
102
|
});
|
|
103
|
+
await this.recordDatasetStorageEvents(row, actor.sub, 'dataset.created', {
|
|
104
|
+
sampleCount: dto.samples.length,
|
|
105
|
+
uploadFileName: dto.uploadSource.fileName,
|
|
106
|
+
uploadFileSizeBytes: dto.uploadSource.fileSizeBytes ?? null,
|
|
107
|
+
});
|
|
96
108
|
return {
|
|
97
109
|
dataset: this.toDatasetListItem(row, this.buildCategoryDistribution(fieldSchema, dto.samples.map((sample) => ({ data: sample }))), this.emptyReferences()),
|
|
98
110
|
sampleCount: dto.samples.length,
|
|
@@ -112,6 +124,10 @@ let DatasetService = class DatasetService {
|
|
|
112
124
|
const deleted = await this.repo.hardDeleteSamples(datasetId, dto.sampleIds);
|
|
113
125
|
if (deleted > 0) {
|
|
114
126
|
await this.repo.decrementDatasetSampleCount(datasetId, deleted);
|
|
127
|
+
await this.recordDatasetStorageEvents(row, actor.sub, 'dataset.updated', {
|
|
128
|
+
deletedSamples: deleted,
|
|
129
|
+
reason: 'samples_deleted',
|
|
130
|
+
});
|
|
115
131
|
}
|
|
116
132
|
return { deleted };
|
|
117
133
|
}
|
|
@@ -136,6 +152,10 @@ let DatasetService = class DatasetService {
|
|
|
136
152
|
}
|
|
137
153
|
const distribution = await this.getCategoryDistribution(updated);
|
|
138
154
|
const references = await this.repo.countDatasetReferences([datasetId]);
|
|
155
|
+
await this.recordDatasetStorageEvents(updated, actor.sub, 'dataset.updated', {
|
|
156
|
+
previousName: row.name,
|
|
157
|
+
previousDescription: row.description,
|
|
158
|
+
});
|
|
139
159
|
return this.toDatasetListItem(updated, distribution, references.get(datasetId) ?? this.emptyReferences());
|
|
140
160
|
}
|
|
141
161
|
async deleteDataset(projectId, datasetId, actor) {
|
|
@@ -153,6 +173,26 @@ let DatasetService = class DatasetService {
|
|
|
153
173
|
if (deleted === 0) {
|
|
154
174
|
throw new common_1.NotFoundException(`Dataset ${datasetId} not found`);
|
|
155
175
|
}
|
|
176
|
+
const deletedAt = new Date();
|
|
177
|
+
await this.recordDatasetStorageEvents({ ...row, updatedAt: deletedAt, deletedAt }, actor.sub, 'dataset.deleted', {
|
|
178
|
+
sampleCount: row.sampleCount,
|
|
179
|
+
storagePrefix: row.storagePrefix,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async recordDatasetImportCompleted(input) {
|
|
183
|
+
if (!this.usageMetering)
|
|
184
|
+
return;
|
|
185
|
+
await this.recordStorageEvent('dataset_import.completed', input.projectId, input.actorId, input.datasetId, {
|
|
186
|
+
importId: input.importId,
|
|
187
|
+
datasetId: input.datasetId,
|
|
188
|
+
sampleCount: input.sampleCount,
|
|
189
|
+
});
|
|
190
|
+
await this.recordStorageEvent('storage.dirty', input.projectId, input.actorId, input.datasetId, {
|
|
191
|
+
reason: 'dataset_import.completed',
|
|
192
|
+
importId: input.importId,
|
|
193
|
+
datasetId: input.datasetId,
|
|
194
|
+
sampleCount: input.sampleCount,
|
|
195
|
+
});
|
|
156
196
|
}
|
|
157
197
|
async getAccessibleProject(projectId, actor) {
|
|
158
198
|
await this.accessControl.assertCan((0, access_control_1.toActorContext)(actor), { projectId, source: 'local' }, 'project_read');
|
|
@@ -166,6 +206,47 @@ let DatasetService = class DatasetService {
|
|
|
166
206
|
await this.accessControl.assertCan((0, access_control_1.toActorContext)(actor), { projectId, source: 'local' }, 'project_write');
|
|
167
207
|
return this.getAccessibleProject(projectId, actor);
|
|
168
208
|
}
|
|
209
|
+
async recordDatasetStorageEvents(row, actorId, eventType, payload) {
|
|
210
|
+
if (!this.usageMetering)
|
|
211
|
+
return;
|
|
212
|
+
await this.recordStorageEvent(eventType, row.projectId, actorId, row.id, {
|
|
213
|
+
datasetId: row.id,
|
|
214
|
+
name: row.name,
|
|
215
|
+
sampleCount: row.sampleCount,
|
|
216
|
+
hasImages: row.hasImages,
|
|
217
|
+
storagePrefix: row.storagePrefix,
|
|
218
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
219
|
+
...payload,
|
|
220
|
+
});
|
|
221
|
+
await this.recordStorageEvent('storage.dirty', row.projectId, actorId, row.id, {
|
|
222
|
+
reason: eventType,
|
|
223
|
+
datasetId: row.id,
|
|
224
|
+
sampleCount: row.sampleCount,
|
|
225
|
+
storagePrefix: row.storagePrefix,
|
|
226
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
227
|
+
...payload,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
async recordStorageEvent(eventType, projectId, actorId, subjectId, payload) {
|
|
231
|
+
if (!this.usageMetering)
|
|
232
|
+
return;
|
|
233
|
+
const suffix = typeof payload['updatedAt'] === 'string'
|
|
234
|
+
? payload['updatedAt']
|
|
235
|
+
: typeof payload['importId'] === 'string'
|
|
236
|
+
? payload['importId']
|
|
237
|
+
: new Date().toISOString();
|
|
238
|
+
const occurredAt = typeof payload['updatedAt'] === 'string' ? new Date(payload['updatedAt']) : new Date();
|
|
239
|
+
await (0, usage_metering_hook_1.safeRecordUsageEvent)(this.usageMetering, {
|
|
240
|
+
idempotencyKey: `storage:${eventType}:${subjectId}:${suffix}`,
|
|
241
|
+
dimension: 'storage',
|
|
242
|
+
eventType,
|
|
243
|
+
projectId,
|
|
244
|
+
actorId,
|
|
245
|
+
occurredAt,
|
|
246
|
+
source: 'server',
|
|
247
|
+
payload,
|
|
248
|
+
}, this.logger);
|
|
249
|
+
}
|
|
169
250
|
assertConsistentMappings(dto) {
|
|
170
251
|
const expectedFieldCount = dto.fieldMappings.filter((field) => field.role === 'expected').length;
|
|
171
252
|
if (expectedFieldCount > 1) {
|
|
@@ -327,9 +408,11 @@ let DatasetService = class DatasetService {
|
|
|
327
408
|
exports.DatasetService = DatasetService;
|
|
328
409
|
exports.DatasetService = DatasetService = __decorate([
|
|
329
410
|
(0, common_1.Injectable)(),
|
|
411
|
+
__param(3, (0, common_1.Optional)()),
|
|
330
412
|
__metadata("design:paramtypes", [dataset_repository_1.DatasetRepository,
|
|
331
413
|
access_control_service_1.AccessControlService,
|
|
332
|
-
quota_policy_hook_1.QuotaPolicyHook
|
|
414
|
+
quota_policy_hook_1.QuotaPolicyHook,
|
|
415
|
+
usage_metering_hook_1.UsageMeteringHook])
|
|
333
416
|
], DatasetService);
|
|
334
417
|
function estimateDatasetCreateBytes(dto) {
|
|
335
418
|
return nonnegativeInteger(dto.uploadSource.fileSizeBytes) + utf8JsonBytes(dto.samples);
|