@xemahq/platform-common 0.12.6 → 0.12.7
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/lib/advisory-lock.d.ts +10 -0
- package/dist/lib/advisory-lock.d.ts.map +1 -0
- package/dist/lib/advisory-lock.js +32 -0
- package/dist/lib/advisory-lock.js.map +1 -0
- package/dist/lib/biome-database.d.ts +14 -0
- package/dist/lib/biome-database.d.ts.map +1 -0
- package/dist/lib/biome-database.js +88 -0
- package/dist/lib/biome-database.js.map +1 -0
- package/dist/lib/llm-stream/anthropic-adapter.d.ts +25 -0
- package/dist/lib/llm-stream/anthropic-adapter.d.ts.map +1 -0
- package/dist/lib/llm-stream/anthropic-adapter.js +278 -0
- package/dist/lib/llm-stream/anthropic-adapter.js.map +1 -0
- package/dist/lib/redaction/redaction.interceptor.d.ts +11 -0
- package/dist/lib/redaction/redaction.interceptor.d.ts.map +1 -0
- package/dist/lib/redaction/redaction.interceptor.js +41 -0
- package/dist/lib/redaction/redaction.interceptor.js.map +1 -0
- package/dist/lib/redaction/redaction.service.d.ts +9 -0
- package/dist/lib/redaction/redaction.service.d.ts.map +1 -0
- package/dist/lib/redaction/redaction.service.js +110 -0
- package/dist/lib/redaction/redaction.service.js.map +1 -0
- package/dist/lib/session-event-payloads/error-codes.d.ts +4 -2
- package/dist/lib/session-event-payloads/error-codes.d.ts.map +1 -1
- package/dist/lib/session-event-payloads/error-codes.js +4 -0
- package/dist/lib/session-event-payloads/error-codes.js.map +1 -1
- package/dist/lib/session-event-payloads/validation.d.ts +2 -2
- package/dist/lib/to-prisma-json.d.ts +6 -0
- package/dist/lib/to-prisma-json.d.ts.map +1 -0
- package/dist/lib/to-prisma-json.js +12 -0
- package/dist/lib/to-prisma-json.js.map +1 -0
- package/dist/nestjs/auth/org-authority-observations.d.ts +15 -0
- package/dist/nestjs/auth/org-authority-observations.d.ts.map +1 -0
- package/dist/nestjs/auth/org-authority-observations.js +47 -0
- package/dist/nestjs/auth/org-authority-observations.js.map +1 -0
- package/dist/nestjs/auth/org-authority.d.ts +32 -0
- package/dist/nestjs/auth/org-authority.d.ts.map +1 -0
- package/dist/nestjs/auth/org-authority.js +102 -0
- package/dist/nestjs/auth/org-authority.js.map +1 -0
- package/dist/nestjs/auth/org-claim.d.ts +12 -0
- package/dist/nestjs/auth/org-claim.d.ts.map +1 -0
- package/dist/nestjs/auth/org-claim.js +25 -0
- package/dist/nestjs/auth/org-claim.js.map +1 -0
- package/dist/nestjs/auth/org-role.d.ts +13 -0
- package/dist/nestjs/auth/org-role.d.ts.map +1 -0
- package/dist/nestjs/auth/org-role.js +75 -0
- package/dist/nestjs/auth/org-role.js.map +1 -0
- package/dist/nestjs/idempotency/prisma-idempotency.service.d.ts +20 -0
- package/dist/nestjs/idempotency/prisma-idempotency.service.d.ts.map +1 -0
- package/dist/nestjs/idempotency/prisma-idempotency.service.js +58 -0
- package/dist/nestjs/idempotency/prisma-idempotency.service.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,110 @@
|
|
|
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 RedactionService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.RedactionService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const default_rules_1 = require("./default-rules");
|
|
16
|
+
const DISABLED_RULES_ENV = 'REDACTION_DISABLED_RULES';
|
|
17
|
+
let RedactionService = RedactionService_1 = class RedactionService {
|
|
18
|
+
rules;
|
|
19
|
+
constructor() {
|
|
20
|
+
const disabled = parseDisabledRules(process.env[DISABLED_RULES_ENV]);
|
|
21
|
+
this.rules = default_rules_1.DEFAULT_REDACTION_RULES.filter((r) => !disabled.has(r.name));
|
|
22
|
+
}
|
|
23
|
+
static withRules(rules) {
|
|
24
|
+
const svc = Object.create(RedactionService_1.prototype);
|
|
25
|
+
const disabled = parseDisabledRules(process.env[DISABLED_RULES_ENV]);
|
|
26
|
+
svc.rules = rules.filter((r) => !disabled.has(r.name));
|
|
27
|
+
return svc;
|
|
28
|
+
}
|
|
29
|
+
redact(value) {
|
|
30
|
+
return this.walk(value, undefined, new WeakSet());
|
|
31
|
+
}
|
|
32
|
+
walk(value, key, seen) {
|
|
33
|
+
if (key !== undefined) {
|
|
34
|
+
for (const rule of this.rules) {
|
|
35
|
+
if (rule.fieldName && rule.fieldName.test(key)) {
|
|
36
|
+
return rule.replacement;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (typeof value === 'string') {
|
|
41
|
+
return applyStringRules(value, this.rules);
|
|
42
|
+
}
|
|
43
|
+
if (Array.isArray(value)) {
|
|
44
|
+
if (seen.has(value)) {
|
|
45
|
+
return '[redacted-cycle]';
|
|
46
|
+
}
|
|
47
|
+
seen.add(value);
|
|
48
|
+
let mutated = false;
|
|
49
|
+
const next = new Array(value.length);
|
|
50
|
+
for (let i = 0; i < value.length; i++) {
|
|
51
|
+
const v = value[i];
|
|
52
|
+
const w = this.walk(v, undefined, seen);
|
|
53
|
+
if (w !== v) {
|
|
54
|
+
mutated = true;
|
|
55
|
+
}
|
|
56
|
+
next[i] = w;
|
|
57
|
+
}
|
|
58
|
+
seen.delete(value);
|
|
59
|
+
return mutated ? next : value;
|
|
60
|
+
}
|
|
61
|
+
if (value !== null && typeof value === 'object') {
|
|
62
|
+
if (seen.has(value)) {
|
|
63
|
+
return '[redacted-cycle]';
|
|
64
|
+
}
|
|
65
|
+
seen.add(value);
|
|
66
|
+
const record = value;
|
|
67
|
+
let mutated = false;
|
|
68
|
+
const out = {};
|
|
69
|
+
for (const k of Object.keys(record)) {
|
|
70
|
+
const v = record[k];
|
|
71
|
+
const w = this.walk(v, k, seen);
|
|
72
|
+
if (w !== v) {
|
|
73
|
+
mutated = true;
|
|
74
|
+
}
|
|
75
|
+
out[k] = w;
|
|
76
|
+
}
|
|
77
|
+
seen.delete(value);
|
|
78
|
+
return mutated ? out : value;
|
|
79
|
+
}
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.RedactionService = RedactionService;
|
|
84
|
+
exports.RedactionService = RedactionService = RedactionService_1 = __decorate([
|
|
85
|
+
(0, common_1.Injectable)(),
|
|
86
|
+
__metadata("design:paramtypes", [])
|
|
87
|
+
], RedactionService);
|
|
88
|
+
function applyStringRules(value, rules) {
|
|
89
|
+
let current = value;
|
|
90
|
+
for (const rule of rules) {
|
|
91
|
+
if (!rule.stringPattern) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (rule.stringPattern.test(current)) {
|
|
95
|
+
const regex = new RegExp(rule.stringPattern.source, rule.stringPattern.flags);
|
|
96
|
+
current = current.replace(regex, rule.replacement);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return current;
|
|
100
|
+
}
|
|
101
|
+
function parseDisabledRules(raw) {
|
|
102
|
+
if (!raw) {
|
|
103
|
+
return new Set();
|
|
104
|
+
}
|
|
105
|
+
return new Set(raw
|
|
106
|
+
.split(',')
|
|
107
|
+
.map((s) => s.trim())
|
|
108
|
+
.filter((s) => s.length > 0));
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=redaction.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.service.js","sourceRoot":"","sources":["../../../src/lib/redaction/redaction.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export declare enum SessionErrorCode {
|
|
|
23
23
|
LaunchStepUnreachable = "step_unreachable",
|
|
24
24
|
LaunchUnclassifiedFailure = "launch_unclassified",
|
|
25
25
|
LaunchWorkspaceRestoreFailed = "workspace_restore_failed",
|
|
26
|
+
LaunchWorkspaceSnapshotCorrupt = "workspace_snapshot_corrupt",
|
|
27
|
+
LaunchWorkingFileSourceMissing = "working_file_source_missing",
|
|
26
28
|
LaunchFinalizeFailed = "finalize_failed",
|
|
27
29
|
LaunchFinalizeReadinessFailed = "finalize_readiness_failed",
|
|
28
30
|
LaunchNoUsableProvider = "no_usable_provider",
|
|
@@ -33,8 +35,8 @@ export declare enum SessionErrorCode {
|
|
|
33
35
|
}
|
|
34
36
|
export type SessionTurnErrorCode = SessionErrorCode.ThreadBusy | SessionErrorCode.TurnFailed | SessionErrorCode.ConsentResumeFailed | SessionErrorCode.ToolIterationLimit | SessionErrorCode.NoTerminalFrame | SessionErrorCode.WorkerTurnFailed;
|
|
35
37
|
export declare const SESSION_TURN_ERROR_CODES: readonly [SessionErrorCode.ThreadBusy, SessionErrorCode.TurnFailed, SessionErrorCode.ConsentResumeFailed, SessionErrorCode.ToolIterationLimit, SessionErrorCode.NoTerminalFrame, SessionErrorCode.WorkerTurnFailed];
|
|
36
|
-
export type SessionLaunchErrorCode = SessionErrorCode.LaunchConfigResolutionFailed | SessionErrorCode.LaunchSelectionInvalid | SessionErrorCode.LaunchWorkerAcquireTimeout | SessionErrorCode.LaunchWorkerAcquireRejected | SessionErrorCode.LaunchWorkerAllocationLost | SessionErrorCode.LaunchControlBundleFailed | SessionErrorCode.LaunchControlBundleRejected | SessionErrorCode.LaunchBootstrapFailed | SessionErrorCode.LaunchBootstrapContractBroken | SessionErrorCode.LaunchProvisionFailed | SessionErrorCode.LaunchStepUnreachable | SessionErrorCode.LaunchUnclassifiedFailure | SessionErrorCode.LaunchWorkspaceRestoreFailed | SessionErrorCode.LaunchFinalizeFailed | SessionErrorCode.LaunchFinalizeReadinessFailed | SessionErrorCode.LaunchNoUsableProvider | SessionErrorCode.LaunchAgentUnavailable | SessionErrorCode.LaunchDeadlineExceeded | SessionErrorCode.LaunchIllegalTransition | SessionErrorCode.LaunchAbandoned;
|
|
37
|
-
export declare const SESSION_LAUNCH_ERROR_CODES: readonly [SessionErrorCode.LaunchConfigResolutionFailed, SessionErrorCode.LaunchSelectionInvalid, SessionErrorCode.LaunchWorkerAcquireTimeout, SessionErrorCode.LaunchWorkerAcquireRejected, SessionErrorCode.LaunchWorkerAllocationLost, SessionErrorCode.LaunchControlBundleFailed, SessionErrorCode.LaunchControlBundleRejected, SessionErrorCode.LaunchBootstrapFailed, SessionErrorCode.LaunchBootstrapContractBroken, SessionErrorCode.LaunchProvisionFailed, SessionErrorCode.LaunchStepUnreachable, SessionErrorCode.LaunchUnclassifiedFailure, SessionErrorCode.LaunchWorkspaceRestoreFailed, SessionErrorCode.LaunchFinalizeFailed, SessionErrorCode.LaunchFinalizeReadinessFailed, SessionErrorCode.LaunchNoUsableProvider, SessionErrorCode.LaunchAgentUnavailable, SessionErrorCode.LaunchDeadlineExceeded, SessionErrorCode.LaunchIllegalTransition, SessionErrorCode.LaunchAbandoned];
|
|
38
|
+
export type SessionLaunchErrorCode = SessionErrorCode.LaunchConfigResolutionFailed | SessionErrorCode.LaunchSelectionInvalid | SessionErrorCode.LaunchWorkerAcquireTimeout | SessionErrorCode.LaunchWorkerAcquireRejected | SessionErrorCode.LaunchWorkerAllocationLost | SessionErrorCode.LaunchControlBundleFailed | SessionErrorCode.LaunchControlBundleRejected | SessionErrorCode.LaunchBootstrapFailed | SessionErrorCode.LaunchBootstrapContractBroken | SessionErrorCode.LaunchProvisionFailed | SessionErrorCode.LaunchStepUnreachable | SessionErrorCode.LaunchUnclassifiedFailure | SessionErrorCode.LaunchWorkspaceRestoreFailed | SessionErrorCode.LaunchWorkspaceSnapshotCorrupt | SessionErrorCode.LaunchWorkingFileSourceMissing | SessionErrorCode.LaunchFinalizeFailed | SessionErrorCode.LaunchFinalizeReadinessFailed | SessionErrorCode.LaunchNoUsableProvider | SessionErrorCode.LaunchAgentUnavailable | SessionErrorCode.LaunchDeadlineExceeded | SessionErrorCode.LaunchIllegalTransition | SessionErrorCode.LaunchAbandoned;
|
|
39
|
+
export declare const SESSION_LAUNCH_ERROR_CODES: readonly [SessionErrorCode.LaunchConfigResolutionFailed, SessionErrorCode.LaunchSelectionInvalid, SessionErrorCode.LaunchWorkerAcquireTimeout, SessionErrorCode.LaunchWorkerAcquireRejected, SessionErrorCode.LaunchWorkerAllocationLost, SessionErrorCode.LaunchControlBundleFailed, SessionErrorCode.LaunchControlBundleRejected, SessionErrorCode.LaunchBootstrapFailed, SessionErrorCode.LaunchBootstrapContractBroken, SessionErrorCode.LaunchProvisionFailed, SessionErrorCode.LaunchStepUnreachable, SessionErrorCode.LaunchUnclassifiedFailure, SessionErrorCode.LaunchWorkspaceRestoreFailed, SessionErrorCode.LaunchWorkspaceSnapshotCorrupt, SessionErrorCode.LaunchWorkingFileSourceMissing, SessionErrorCode.LaunchFinalizeFailed, SessionErrorCode.LaunchFinalizeReadinessFailed, SessionErrorCode.LaunchNoUsableProvider, SessionErrorCode.LaunchAgentUnavailable, SessionErrorCode.LaunchDeadlineExceeded, SessionErrorCode.LaunchIllegalTransition, SessionErrorCode.LaunchAbandoned];
|
|
38
40
|
export declare const SESSION_LAUNCH_FAILURE_CODES: Readonly<Record<string, SessionLaunchErrorCode>>;
|
|
39
41
|
export declare function mapLaunchFailureToSessionErrorCode(launchFailureKind: string): SessionLaunchErrorCode;
|
|
40
42
|
//# sourceMappingURL=error-codes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../../src/lib/session-event-payloads/error-codes.ts"],"names":[],"mappings":"AA4BA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAC9B;AA6BD,oBAAY,gBAAgB;IAM1B,UAAU,uBAAuB;IAMjC,UAAU,uBAAuB;IAUjC,mBAAmB,yBAAyB;IAO5C,kBAAkB,gCAAgC;IAKlD,eAAe,6BAA6B;IAU5C,gBAAgB,+BAA+B;IAkB/C,4BAA4B,6BAA6B;IAOzD,sBAAsB,6BAA6B;IAEnD,0BAA0B,2BAA2B;IAErD,2BAA2B,4BAA4B;IAWvD,0BAA0B,2BAA2B;IAQrD,yBAAyB,0BAA0B;IAenD,2BAA2B,4BAA4B;IAEvD,qBAAqB,qBAAqB;IAa1C,6BAA6B,8BAA8B;IAkB3D,qBAAqB,qBAAqB;IAqC1C,qBAAqB,qBAAqB;IAuB1C,yBAAyB,wBAAwB;
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../../src/lib/session-event-payloads/error-codes.ts"],"names":[],"mappings":"AA4BA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAC9B;AA6BD,oBAAY,gBAAgB;IAM1B,UAAU,uBAAuB;IAMjC,UAAU,uBAAuB;IAUjC,mBAAmB,yBAAyB;IAO5C,kBAAkB,gCAAgC;IAKlD,eAAe,6BAA6B;IAU5C,gBAAgB,+BAA+B;IAkB/C,4BAA4B,6BAA6B;IAOzD,sBAAsB,6BAA6B;IAEnD,0BAA0B,2BAA2B;IAErD,2BAA2B,4BAA4B;IAWvD,0BAA0B,2BAA2B;IAQrD,yBAAyB,0BAA0B;IAenD,2BAA2B,4BAA4B;IAEvD,qBAAqB,qBAAqB;IAa1C,6BAA6B,8BAA8B;IAkB3D,qBAAqB,qBAAqB;IAqC1C,qBAAqB,qBAAqB;IAuB1C,yBAAyB,wBAAwB;IAYjD,4BAA4B,6BAA6B;IAazD,8BAA8B,+BAA+B;IAY7D,8BAA8B,gCAAgC;IAiB9D,oBAAoB,oBAAoB;IAWxC,6BAA6B,8BAA8B;IAK3D,sBAAsB,uBAAuB;IAM7C,sBAAsB,sBAAsB;IAa5C,sBAAsB,sBAAsB;IAE5C,uBAAuB,uBAAuB;IAK9C,eAAe,qBAAqB;CACrC;AAUD,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,CAAC,UAAU,GAC3B,gBAAgB,CAAC,UAAU,GAC3B,gBAAgB,CAAC,mBAAmB,GACpC,gBAAgB,CAAC,kBAAkB,GACnC,gBAAgB,CAAC,eAAe,GAChC,gBAAgB,CAAC,gBAAgB,CAAC;AAGtC,eAAO,MAAM,wBAAwB,qNAOe,CAAC;AAUrD,MAAM,MAAM,sBAAsB,GAC9B,gBAAgB,CAAC,4BAA4B,GAC7C,gBAAgB,CAAC,sBAAsB,GACvC,gBAAgB,CAAC,0BAA0B,GAC3C,gBAAgB,CAAC,2BAA2B,GAC5C,gBAAgB,CAAC,0BAA0B,GAC3C,gBAAgB,CAAC,yBAAyB,GAC1C,gBAAgB,CAAC,2BAA2B,GAC5C,gBAAgB,CAAC,qBAAqB,GACtC,gBAAgB,CAAC,6BAA6B,GAC9C,gBAAgB,CAAC,qBAAqB,GACtC,gBAAgB,CAAC,qBAAqB,GACtC,gBAAgB,CAAC,yBAAyB,GAC1C,gBAAgB,CAAC,4BAA4B,GAC7C,gBAAgB,CAAC,8BAA8B,GAC/C,gBAAgB,CAAC,8BAA8B,GAC/C,gBAAgB,CAAC,oBAAoB,GACrC,gBAAgB,CAAC,6BAA6B,GAC9C,gBAAgB,CAAC,sBAAsB,GACvC,gBAAgB,CAAC,sBAAsB,GACvC,gBAAgB,CAAC,sBAAsB,GACvC,gBAAgB,CAAC,uBAAuB,GACxC,gBAAgB,CAAC,eAAe,CAAC;AAGrC,eAAO,MAAM,0BAA0B,w8BAuBe,CAAC;AAiBvD,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CACjD,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAKvC,CAAC;AAuBF,wBAAgB,kCAAkC,CAChD,iBAAiB,EAAE,MAAM,GACxB,sBAAsB,CAWxB"}
|
|
@@ -29,6 +29,8 @@ var SessionErrorCode;
|
|
|
29
29
|
SessionErrorCode["LaunchStepUnreachable"] = "step_unreachable";
|
|
30
30
|
SessionErrorCode["LaunchUnclassifiedFailure"] = "launch_unclassified";
|
|
31
31
|
SessionErrorCode["LaunchWorkspaceRestoreFailed"] = "workspace_restore_failed";
|
|
32
|
+
SessionErrorCode["LaunchWorkspaceSnapshotCorrupt"] = "workspace_snapshot_corrupt";
|
|
33
|
+
SessionErrorCode["LaunchWorkingFileSourceMissing"] = "working_file_source_missing";
|
|
32
34
|
SessionErrorCode["LaunchFinalizeFailed"] = "finalize_failed";
|
|
33
35
|
SessionErrorCode["LaunchFinalizeReadinessFailed"] = "finalize_readiness_failed";
|
|
34
36
|
SessionErrorCode["LaunchNoUsableProvider"] = "no_usable_provider";
|
|
@@ -59,6 +61,8 @@ exports.SESSION_LAUNCH_ERROR_CODES = [
|
|
|
59
61
|
SessionErrorCode.LaunchStepUnreachable,
|
|
60
62
|
SessionErrorCode.LaunchUnclassifiedFailure,
|
|
61
63
|
SessionErrorCode.LaunchWorkspaceRestoreFailed,
|
|
64
|
+
SessionErrorCode.LaunchWorkspaceSnapshotCorrupt,
|
|
65
|
+
SessionErrorCode.LaunchWorkingFileSourceMissing,
|
|
62
66
|
SessionErrorCode.LaunchFinalizeFailed,
|
|
63
67
|
SessionErrorCode.LaunchFinalizeReadinessFailed,
|
|
64
68
|
SessionErrorCode.LaunchNoUsableProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../../src/lib/session-event-payloads/error-codes.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../../src/lib/session-event-payloads/error-codes.ts"],"names":[],"mappings":";;;AAweA,gFAaC;AAzdD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,kDAA6B,CAAA;AAC/B,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AA6BD,IAAY,gBAySX;AAzSD,WAAY,gBAAgB;IAM1B,qDAAiC,CAAA;IAMjC,qDAAiC,CAAA;IAUjC,gEAA4C,CAAA;IAO5C,sEAAkD,CAAA;IAKlD,gEAA4C,CAAA;IAU5C,mEAA+C,CAAA;IAkB/C,6EAAyD,CAAA;IAOzD,uEAAmD,CAAA;IAEnD,yEAAqD,CAAA;IAErD,2EAAuD,CAAA;IAWvD,yEAAqD,CAAA;IAQrD,uEAAmD,CAAA;IAenD,2EAAuD,CAAA;IAEvD,8DAA0C,CAAA;IAa1C,+EAA2D,CAAA;IAkB3D,8DAA0C,CAAA;IAqC1C,8DAA0C,CAAA;IAuB1C,qEAAiD,CAAA;IAYjD,6EAAyD,CAAA;IAazD,iFAA6D,CAAA;IAY7D,kFAA8D,CAAA;IAiB9D,4DAAwC,CAAA;IAWxC,+EAA2D,CAAA;IAK3D,iEAA6C,CAAA;IAM7C,gEAA4C,CAAA;IAa5C,gEAA4C,CAAA;IAE5C,kEAA8C,CAAA;IAK9C,wDAAoC,CAAA;AACtC,CAAC,EAzSW,gBAAgB,gCAAhB,gBAAgB,QAyS3B;AAmBY,QAAA,wBAAwB,GAAG;IACtC,gBAAgB,CAAC,UAAU;IAC3B,gBAAgB,CAAC,UAAU;IAC3B,gBAAgB,CAAC,mBAAmB;IACpC,gBAAgB,CAAC,kBAAkB;IACnC,gBAAgB,CAAC,eAAe;IAChC,gBAAgB,CAAC,gBAAgB;CACiB,CAAC;AAmCxC,QAAA,0BAA0B,GAAG;IACxC,gBAAgB,CAAC,4BAA4B;IAC7C,gBAAgB,CAAC,sBAAsB;IACvC,gBAAgB,CAAC,0BAA0B;IAC3C,gBAAgB,CAAC,2BAA2B;IAC5C,gBAAgB,CAAC,0BAA0B;IAC3C,gBAAgB,CAAC,yBAAyB;IAC1C,gBAAgB,CAAC,2BAA2B;IAC5C,gBAAgB,CAAC,qBAAqB;IACtC,gBAAgB,CAAC,6BAA6B;IAC9C,gBAAgB,CAAC,qBAAqB;IACtC,gBAAgB,CAAC,qBAAqB;IACtC,gBAAgB,CAAC,yBAAyB;IAC1C,gBAAgB,CAAC,4BAA4B;IAC7C,gBAAgB,CAAC,8BAA8B;IAC/C,gBAAgB,CAAC,8BAA8B;IAC/C,gBAAgB,CAAC,oBAAoB;IACrC,gBAAgB,CAAC,6BAA6B;IAC9C,gBAAgB,CAAC,sBAAsB;IACvC,gBAAgB,CAAC,sBAAsB;IACvC,gBAAgB,CAAC,sBAAsB;IACvC,gBAAgB,CAAC,uBAAuB;IACxC,gBAAgB,CAAC,eAAe;CACoB,CAAC;AAiB1C,QAAA,4BAA4B,GAErC,MAAM,CAAC,MAAM,CACf,MAAM,CAAC,WAAW,CAChB,kCAA0B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAc,EAAE,IAAI,CAAC,CAAC,CACvB,CAC5C,CAAC;AAuBF,SAAgB,kCAAkC,CAChD,iBAAyB;IAEzB,MAAM,IAAI,GAAG,oCAA4B,CAAC,iBAAiB,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CACjB,wBAAwB,iBAAiB,6BAA6B;YACpE,qEAAqE;YACrE,iDAAiD;YACjD,6BAA6B,CAChC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -63,12 +63,12 @@ export declare const SESSION_EVENT_PAYLOAD_SCHEMAS: {
|
|
|
63
63
|
detail: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
64
64
|
}, z.core.$strict>, z.ZodObject<{
|
|
65
65
|
phase: z.ZodLiteral<SessionErrorPhase.Resume>;
|
|
66
|
-
code: z.ZodLiteral<import("./error-codes").SessionErrorCode.LaunchConfigResolutionFailed | import("./error-codes").SessionErrorCode.LaunchSelectionInvalid | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireTimeout | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireRejected | import("./error-codes").SessionErrorCode.LaunchWorkerAllocationLost | import("./error-codes").SessionErrorCode.LaunchControlBundleFailed | import("./error-codes").SessionErrorCode.LaunchControlBundleRejected | import("./error-codes").SessionErrorCode.LaunchBootstrapFailed | import("./error-codes").SessionErrorCode.LaunchBootstrapContractBroken | import("./error-codes").SessionErrorCode.LaunchProvisionFailed | import("./error-codes").SessionErrorCode.LaunchStepUnreachable | import("./error-codes").SessionErrorCode.LaunchUnclassifiedFailure | import("./error-codes").SessionErrorCode.LaunchWorkspaceRestoreFailed | import("./error-codes").SessionErrorCode.LaunchFinalizeFailed | import("./error-codes").SessionErrorCode.LaunchFinalizeReadinessFailed | import("./error-codes").SessionErrorCode.LaunchNoUsableProvider | import("./error-codes").SessionErrorCode.LaunchAgentUnavailable | import("./error-codes").SessionErrorCode.LaunchDeadlineExceeded | import("./error-codes").SessionErrorCode.LaunchIllegalTransition | import("./error-codes").SessionErrorCode.LaunchAbandoned>;
|
|
66
|
+
code: z.ZodLiteral<import("./error-codes").SessionErrorCode.LaunchConfigResolutionFailed | import("./error-codes").SessionErrorCode.LaunchSelectionInvalid | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireTimeout | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireRejected | import("./error-codes").SessionErrorCode.LaunchWorkerAllocationLost | import("./error-codes").SessionErrorCode.LaunchControlBundleFailed | import("./error-codes").SessionErrorCode.LaunchControlBundleRejected | import("./error-codes").SessionErrorCode.LaunchBootstrapFailed | import("./error-codes").SessionErrorCode.LaunchBootstrapContractBroken | import("./error-codes").SessionErrorCode.LaunchProvisionFailed | import("./error-codes").SessionErrorCode.LaunchStepUnreachable | import("./error-codes").SessionErrorCode.LaunchUnclassifiedFailure | import("./error-codes").SessionErrorCode.LaunchWorkspaceRestoreFailed | import("./error-codes").SessionErrorCode.LaunchWorkspaceSnapshotCorrupt | import("./error-codes").SessionErrorCode.LaunchWorkingFileSourceMissing | import("./error-codes").SessionErrorCode.LaunchFinalizeFailed | import("./error-codes").SessionErrorCode.LaunchFinalizeReadinessFailed | import("./error-codes").SessionErrorCode.LaunchNoUsableProvider | import("./error-codes").SessionErrorCode.LaunchAgentUnavailable | import("./error-codes").SessionErrorCode.LaunchDeadlineExceeded | import("./error-codes").SessionErrorCode.LaunchIllegalTransition | import("./error-codes").SessionErrorCode.LaunchAbandoned>;
|
|
67
67
|
message: z.ZodString;
|
|
68
68
|
agentSlug: z.ZodOptional<z.ZodString>;
|
|
69
69
|
}, z.core.$strict>, z.ZodObject<{
|
|
70
70
|
phase: z.ZodLiteral<SessionErrorPhase.Provisioning>;
|
|
71
|
-
code: z.ZodLiteral<import("./error-codes").SessionErrorCode.LaunchConfigResolutionFailed | import("./error-codes").SessionErrorCode.LaunchSelectionInvalid | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireTimeout | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireRejected | import("./error-codes").SessionErrorCode.LaunchWorkerAllocationLost | import("./error-codes").SessionErrorCode.LaunchControlBundleFailed | import("./error-codes").SessionErrorCode.LaunchControlBundleRejected | import("./error-codes").SessionErrorCode.LaunchBootstrapFailed | import("./error-codes").SessionErrorCode.LaunchBootstrapContractBroken | import("./error-codes").SessionErrorCode.LaunchProvisionFailed | import("./error-codes").SessionErrorCode.LaunchStepUnreachable | import("./error-codes").SessionErrorCode.LaunchUnclassifiedFailure | import("./error-codes").SessionErrorCode.LaunchWorkspaceRestoreFailed | import("./error-codes").SessionErrorCode.LaunchFinalizeFailed | import("./error-codes").SessionErrorCode.LaunchFinalizeReadinessFailed | import("./error-codes").SessionErrorCode.LaunchNoUsableProvider | import("./error-codes").SessionErrorCode.LaunchAgentUnavailable | import("./error-codes").SessionErrorCode.LaunchDeadlineExceeded | import("./error-codes").SessionErrorCode.LaunchIllegalTransition | import("./error-codes").SessionErrorCode.LaunchAbandoned>;
|
|
71
|
+
code: z.ZodLiteral<import("./error-codes").SessionErrorCode.LaunchConfigResolutionFailed | import("./error-codes").SessionErrorCode.LaunchSelectionInvalid | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireTimeout | import("./error-codes").SessionErrorCode.LaunchWorkerAcquireRejected | import("./error-codes").SessionErrorCode.LaunchWorkerAllocationLost | import("./error-codes").SessionErrorCode.LaunchControlBundleFailed | import("./error-codes").SessionErrorCode.LaunchControlBundleRejected | import("./error-codes").SessionErrorCode.LaunchBootstrapFailed | import("./error-codes").SessionErrorCode.LaunchBootstrapContractBroken | import("./error-codes").SessionErrorCode.LaunchProvisionFailed | import("./error-codes").SessionErrorCode.LaunchStepUnreachable | import("./error-codes").SessionErrorCode.LaunchUnclassifiedFailure | import("./error-codes").SessionErrorCode.LaunchWorkspaceRestoreFailed | import("./error-codes").SessionErrorCode.LaunchWorkspaceSnapshotCorrupt | import("./error-codes").SessionErrorCode.LaunchWorkingFileSourceMissing | import("./error-codes").SessionErrorCode.LaunchFinalizeFailed | import("./error-codes").SessionErrorCode.LaunchFinalizeReadinessFailed | import("./error-codes").SessionErrorCode.LaunchNoUsableProvider | import("./error-codes").SessionErrorCode.LaunchAgentUnavailable | import("./error-codes").SessionErrorCode.LaunchDeadlineExceeded | import("./error-codes").SessionErrorCode.LaunchIllegalTransition | import("./error-codes").SessionErrorCode.LaunchAbandoned>;
|
|
72
72
|
message: z.ZodString;
|
|
73
73
|
}, z.core.$strict>], "phase">;
|
|
74
74
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-prisma-json.d.ts","sourceRoot":"","sources":["../../src/lib/to-prisma-json.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAmBnC,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAYT"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toPrismaJson = toPrismaJson;
|
|
4
|
+
const pipeline_errors_1 = require("./errors/pipeline-errors");
|
|
5
|
+
function toPrismaJson(schema, value, context = {}) {
|
|
6
|
+
const parsed = schema.safeParse(value);
|
|
7
|
+
if (!parsed.success) {
|
|
8
|
+
throw new pipeline_errors_1.WorkItemPayloadInvalidError(`Work-item payload failed schema validation${context.hint ? ` (${context.hint})` : ''}`, context.workItemId ?? 'unknown', parsed.error.issues);
|
|
9
|
+
}
|
|
10
|
+
return structuredClone(parsed.data);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=to-prisma-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-prisma-json.js","sourceRoot":"","sources":["../../src/lib/to-prisma-json.ts"],"names":[],"mappings":";;AAwCA,oCAgBC;AAlCD,8DAAuE;AAkBvE,SAAgB,YAAY,CAC1B,MAAkB,EAClB,KAAQ,EACR,UAAkD,EAAE;IAEpD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,6CAA2B,CACnC,6CAA6C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EACvF,OAAO,CAAC,UAAU,IAAI,SAAS,EAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CACpB,CAAC;IACJ,CAAC;IAGD,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { OrgAuthorityCallerFacts } from './org-authority';
|
|
2
|
+
export declare const ORG_AUTHORITY_OBSERVATION_LIMIT = 512;
|
|
3
|
+
export interface OrgAuthorityObservation extends OrgAuthorityCallerFacts {
|
|
4
|
+
readonly count: number;
|
|
5
|
+
readonly firstSeenAt: string;
|
|
6
|
+
}
|
|
7
|
+
export interface OrgAuthorityCensus {
|
|
8
|
+
readonly observations: readonly OrgAuthorityObservation[];
|
|
9
|
+
readonly droppedByLimit: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const UNKNOWN_CLIENT_ID = "<unknown>";
|
|
12
|
+
export declare function recordUnprovenOrgAuthority(facts: OrgAuthorityCallerFacts): boolean;
|
|
13
|
+
export declare function orgAuthorityCensus(): OrgAuthorityCensus;
|
|
14
|
+
export declare function resetOrgAuthorityCensus(): void;
|
|
15
|
+
//# sourceMappingURL=org-authority-observations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-authority-observations.d.ts","sourceRoot":"","sources":["../../../src/nestjs/auth/org-authority-observations.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAO/D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAGnD,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IAEtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAM1D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAWD,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAmB7C,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAiBT;AAGD,wBAAgB,kBAAkB,IAAI,kBAAkB,CAKvD;AAMD,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UNKNOWN_CLIENT_ID = exports.ORG_AUTHORITY_OBSERVATION_LIMIT = void 0;
|
|
4
|
+
exports.recordUnprovenOrgAuthority = recordUnprovenOrgAuthority;
|
|
5
|
+
exports.orgAuthorityCensus = orgAuthorityCensus;
|
|
6
|
+
exports.resetOrgAuthorityCensus = resetOrgAuthorityCensus;
|
|
7
|
+
exports.ORG_AUTHORITY_OBSERVATION_LIMIT = 512;
|
|
8
|
+
const observations = new Map();
|
|
9
|
+
let droppedByLimit = 0;
|
|
10
|
+
exports.UNKNOWN_CLIENT_ID = '<unknown>';
|
|
11
|
+
function keyFor(facts) {
|
|
12
|
+
return [
|
|
13
|
+
facts.clientId,
|
|
14
|
+
facts.tokenClass,
|
|
15
|
+
facts.subjectKind,
|
|
16
|
+
facts.delegated ? 'delegated' : 'direct',
|
|
17
|
+
].join('|');
|
|
18
|
+
}
|
|
19
|
+
function recordUnprovenOrgAuthority(facts) {
|
|
20
|
+
const key = keyFor(facts);
|
|
21
|
+
const existing = observations.get(key);
|
|
22
|
+
if (existing) {
|
|
23
|
+
existing.count += 1;
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (observations.size >= exports.ORG_AUTHORITY_OBSERVATION_LIMIT) {
|
|
27
|
+
droppedByLimit += 1;
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
observations.set(key, {
|
|
31
|
+
...facts,
|
|
32
|
+
count: 1,
|
|
33
|
+
firstSeenAt: new Date().toISOString(),
|
|
34
|
+
});
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
function orgAuthorityCensus() {
|
|
38
|
+
return {
|
|
39
|
+
observations: [...observations.values()].map((entry) => ({ ...entry })),
|
|
40
|
+
droppedByLimit,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function resetOrgAuthorityCensus() {
|
|
44
|
+
observations.clear();
|
|
45
|
+
droppedByLimit = 0;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=org-authority-observations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-authority-observations.js","sourceRoot":"","sources":["../../../src/nestjs/auth/org-authority-observations.ts"],"names":[],"mappings":";;;AAwFA,gEAmBC;AAGD,gDAKC;AAMD,0DAGC;AArFY,QAAA,+BAA+B,GAAG,GAAG,CAAC;AA0BnD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC3D,IAAI,cAAc,GAAG,CAAC,CAAC;AAGV,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAE7C,SAAS,MAAM,CAAC,KAA8B;IAC5C,OAAO;QACL,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,WAAW;QACjB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;KACzC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAUD,SAAgB,0BAA0B,CACxC,KAA8B;IAE9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,IAAI,uCAA+B,EAAE,CAAC;QACzD,cAAc,IAAI,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE;QACpB,GAAG,KAAK;QACR,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,SAAgB,kBAAkB;IAChC,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACvE,cAAc;KACf,CAAC;AACJ,CAAC;AAMD,SAAgB,uBAAuB;IACrC,YAAY,CAAC,KAAK,EAAE,CAAC;IACrB,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SubjectKind, TokenClass } from '@xemahq/kernel-contracts/subject';
|
|
2
|
+
export declare enum OrgAuthoritySource {
|
|
3
|
+
OrgClaim = "org_claim",
|
|
4
|
+
OrgMembership = "org_membership",
|
|
5
|
+
NoOrgAsserted = "no_org_asserted",
|
|
6
|
+
ClaimMismatch = "claim_mismatch",
|
|
7
|
+
Unproven = "unproven_header"
|
|
8
|
+
}
|
|
9
|
+
export interface OrgAuthorityVerdict {
|
|
10
|
+
readonly source: OrgAuthoritySource;
|
|
11
|
+
readonly assertedOrgId: string;
|
|
12
|
+
readonly tokenOrgId?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function resolveOrgAuthority(claims: Record<string, unknown>, assertedOrgId: string): OrgAuthorityVerdict;
|
|
15
|
+
export declare function isOrgAuthorityProven(verdict: OrgAuthorityVerdict): boolean;
|
|
16
|
+
export declare function orgAuthorityRequiresProof(verdict: OrgAuthorityVerdict): boolean;
|
|
17
|
+
export declare enum OrgAuthorityMode {
|
|
18
|
+
Observe = "observe",
|
|
19
|
+
Enforce = "enforce"
|
|
20
|
+
}
|
|
21
|
+
export declare const ORG_AUTHORITY_MODE_ENV = "XEMA_ORG_AUTHORITY_MODE";
|
|
22
|
+
export declare class InvalidOrgAuthorityModeError extends Error {
|
|
23
|
+
constructor(value: string);
|
|
24
|
+
}
|
|
25
|
+
export declare function resolveOrgAuthorityMode(env?: NodeJS.ProcessEnv): OrgAuthorityMode;
|
|
26
|
+
export interface OrgAuthorityCallerFacts {
|
|
27
|
+
readonly clientId: string;
|
|
28
|
+
readonly tokenClass: TokenClass;
|
|
29
|
+
readonly subjectKind: SubjectKind;
|
|
30
|
+
readonly delegated: boolean;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=org-authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-authority.d.ts","sourceRoot":"","sources":["../../../src/nestjs/auth/org-authority.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAahF,oBAAY,kBAAkB;IAE5B,QAAQ,cAAc;IAEtB,aAAa,mBAAmB;IAKhC,aAAa,oBAAoB;IAYjC,aAAa,mBAAmB;IAKhC,QAAQ,oBAAoB;CAC7B;AAGD,MAAM,WAAW,mBAAmB;IAElC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAEpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAO/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAYD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,aAAa,EAAE,MAAM,GACpB,mBAAmB,CAuCrB;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAU1E;AAUD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAUT;AAiBD,oBAAY,gBAAgB;IAE1B,OAAO,YAAY;IAEnB,OAAO,YAAY;CACpB;AAGD,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAGhE,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,KAAK,EAAE,MAAM;CAO1B;AAYD,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,CAelB;AAQD,MAAM,WAAW,uBAAuB;IAEtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidOrgAuthorityModeError = exports.ORG_AUTHORITY_MODE_ENV = exports.OrgAuthorityMode = exports.OrgAuthoritySource = void 0;
|
|
4
|
+
exports.resolveOrgAuthority = resolveOrgAuthority;
|
|
5
|
+
exports.isOrgAuthorityProven = isOrgAuthorityProven;
|
|
6
|
+
exports.orgAuthorityRequiresProof = orgAuthorityRequiresProof;
|
|
7
|
+
exports.resolveOrgAuthorityMode = resolveOrgAuthorityMode;
|
|
8
|
+
const org_claim_1 = require("./org-claim");
|
|
9
|
+
const org_role_1 = require("./org-role");
|
|
10
|
+
var OrgAuthoritySource;
|
|
11
|
+
(function (OrgAuthoritySource) {
|
|
12
|
+
OrgAuthoritySource["OrgClaim"] = "org_claim";
|
|
13
|
+
OrgAuthoritySource["OrgMembership"] = "org_membership";
|
|
14
|
+
OrgAuthoritySource["NoOrgAsserted"] = "no_org_asserted";
|
|
15
|
+
OrgAuthoritySource["ClaimMismatch"] = "claim_mismatch";
|
|
16
|
+
OrgAuthoritySource["Unproven"] = "unproven_header";
|
|
17
|
+
})(OrgAuthoritySource || (exports.OrgAuthoritySource = OrgAuthoritySource = {}));
|
|
18
|
+
function resolveOrgAuthority(claims, assertedOrgId) {
|
|
19
|
+
const asserted = assertedOrgId.trim();
|
|
20
|
+
if (asserted.length === 0) {
|
|
21
|
+
return {
|
|
22
|
+
source: OrgAuthoritySource.NoOrgAsserted,
|
|
23
|
+
assertedOrgId: '',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const claim = (0, org_claim_1.resolveOrgClaim)(claims);
|
|
27
|
+
if (claim) {
|
|
28
|
+
return claim.value.toLowerCase() === asserted.toLowerCase()
|
|
29
|
+
? {
|
|
30
|
+
source: OrgAuthoritySource.OrgClaim,
|
|
31
|
+
assertedOrgId: asserted,
|
|
32
|
+
tokenOrgId: claim.value,
|
|
33
|
+
}
|
|
34
|
+
: {
|
|
35
|
+
source: OrgAuthoritySource.ClaimMismatch,
|
|
36
|
+
assertedOrgId: asserted,
|
|
37
|
+
tokenOrgId: claim.value,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const orgRoles = (0, org_role_1.resolveOrgRoles)(claims);
|
|
41
|
+
const assertedLower = asserted.toLowerCase();
|
|
42
|
+
for (const memberOrgId of Object.keys(orgRoles)) {
|
|
43
|
+
if (memberOrgId.toLowerCase() === assertedLower) {
|
|
44
|
+
return {
|
|
45
|
+
source: OrgAuthoritySource.OrgMembership,
|
|
46
|
+
assertedOrgId: asserted,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { source: OrgAuthoritySource.Unproven, assertedOrgId: asserted };
|
|
51
|
+
}
|
|
52
|
+
function isOrgAuthorityProven(verdict) {
|
|
53
|
+
switch (verdict.source) {
|
|
54
|
+
case OrgAuthoritySource.OrgClaim:
|
|
55
|
+
case OrgAuthoritySource.OrgMembership:
|
|
56
|
+
return true;
|
|
57
|
+
case OrgAuthoritySource.NoOrgAsserted:
|
|
58
|
+
case OrgAuthoritySource.ClaimMismatch:
|
|
59
|
+
case OrgAuthoritySource.Unproven:
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function orgAuthorityRequiresProof(verdict) {
|
|
64
|
+
switch (verdict.source) {
|
|
65
|
+
case OrgAuthoritySource.Unproven:
|
|
66
|
+
return true;
|
|
67
|
+
case OrgAuthoritySource.OrgClaim:
|
|
68
|
+
case OrgAuthoritySource.OrgMembership:
|
|
69
|
+
case OrgAuthoritySource.NoOrgAsserted:
|
|
70
|
+
case OrgAuthoritySource.ClaimMismatch:
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
var OrgAuthorityMode;
|
|
75
|
+
(function (OrgAuthorityMode) {
|
|
76
|
+
OrgAuthorityMode["Observe"] = "observe";
|
|
77
|
+
OrgAuthorityMode["Enforce"] = "enforce";
|
|
78
|
+
})(OrgAuthorityMode || (exports.OrgAuthorityMode = OrgAuthorityMode = {}));
|
|
79
|
+
exports.ORG_AUTHORITY_MODE_ENV = 'XEMA_ORG_AUTHORITY_MODE';
|
|
80
|
+
class InvalidOrgAuthorityModeError extends Error {
|
|
81
|
+
constructor(value) {
|
|
82
|
+
super(`${exports.ORG_AUTHORITY_MODE_ENV}="${value}" is not a valid org-authority mode. ` +
|
|
83
|
+
`Expected one of: ${Object.values(OrgAuthorityMode).join(', ')}. ` +
|
|
84
|
+
`Leave it unset for "${OrgAuthorityMode.Observe}".`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.InvalidOrgAuthorityModeError = InvalidOrgAuthorityModeError;
|
|
88
|
+
function resolveOrgAuthorityMode(env = process.env) {
|
|
89
|
+
const raw = env[exports.ORG_AUTHORITY_MODE_ENV];
|
|
90
|
+
if (raw === undefined || raw.trim().length === 0) {
|
|
91
|
+
return OrgAuthorityMode.Observe;
|
|
92
|
+
}
|
|
93
|
+
const normalized = raw.trim().toLowerCase();
|
|
94
|
+
const matched = Object.values(OrgAuthorityMode).includes(normalized)
|
|
95
|
+
? normalized
|
|
96
|
+
: undefined;
|
|
97
|
+
if (!matched) {
|
|
98
|
+
throw new InvalidOrgAuthorityModeError(raw);
|
|
99
|
+
}
|
|
100
|
+
return matched;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=org-authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-authority.js","sourceRoot":"","sources":["../../../src/nestjs/auth/org-authority.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare enum OrgClaimKey {
|
|
2
|
+
Canonical = "xema_org_id"
|
|
3
|
+
}
|
|
4
|
+
export declare const ORG_CLAIM_KEYS: readonly OrgClaimKey[];
|
|
5
|
+
export declare enum OrgHeaderName {
|
|
6
|
+
Canonical = "X-Xema-Org-Id"
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveOrgClaim(claims: Record<string, unknown>): {
|
|
9
|
+
key: OrgClaimKey;
|
|
10
|
+
value: string;
|
|
11
|
+
} | null;
|
|
12
|
+
//# sourceMappingURL=org-claim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-claim.d.ts","sourceRoot":"","sources":["../../../src/nestjs/auth/org-claim.ts"],"names":[],"mappings":"AA8BA,oBAAY,WAAW;IAErB,SAAS,gBAAgB;CAC1B;AAOD,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAEvC,CAAC;AAQX,oBAAY,aAAa;IAEvB,SAAS,kBAAkB;CAC5B;AAUD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ5C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrgHeaderName = exports.ORG_CLAIM_KEYS = exports.OrgClaimKey = void 0;
|
|
4
|
+
exports.resolveOrgClaim = resolveOrgClaim;
|
|
5
|
+
var OrgClaimKey;
|
|
6
|
+
(function (OrgClaimKey) {
|
|
7
|
+
OrgClaimKey["Canonical"] = "xema_org_id";
|
|
8
|
+
})(OrgClaimKey || (exports.OrgClaimKey = OrgClaimKey = {}));
|
|
9
|
+
exports.ORG_CLAIM_KEYS = [
|
|
10
|
+
OrgClaimKey.Canonical,
|
|
11
|
+
];
|
|
12
|
+
var OrgHeaderName;
|
|
13
|
+
(function (OrgHeaderName) {
|
|
14
|
+
OrgHeaderName["Canonical"] = "X-Xema-Org-Id";
|
|
15
|
+
})(OrgHeaderName || (exports.OrgHeaderName = OrgHeaderName = {}));
|
|
16
|
+
function resolveOrgClaim(claims) {
|
|
17
|
+
for (const key of exports.ORG_CLAIM_KEYS) {
|
|
18
|
+
const raw = claims[key];
|
|
19
|
+
if (typeof raw === 'string' && raw.length > 0) {
|
|
20
|
+
return { key, value: raw };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=org-claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-claim.js","sourceRoot":"","sources":["../../../src/nestjs/auth/org-claim.ts"],"names":[],"mappings":";;;AA+DA,0CAUC;AA3CD,IAAY,WAGX;AAHD,WAAY,WAAW;IAErB,wCAAyB,CAAA;AAC3B,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAOY,QAAA,cAAc,GAA2B;IACpD,WAAW,CAAC,SAAS;CACb,CAAC;AAQX,IAAY,aAGX;AAHD,WAAY,aAAa;IAEvB,4CAA2B,CAAA;AAC7B,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAUD,SAAgB,eAAe,CAC7B,MAA+B;IAE/B,KAAK,MAAM,GAAG,IAAI,sBAAc,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum OrgRolesClaimKey {
|
|
2
|
+
Canonical = "org_roles"
|
|
3
|
+
}
|
|
4
|
+
export declare const ORG_ROLES_CLAIM_KEYS: readonly OrgRolesClaimKey[];
|
|
5
|
+
export declare enum OrgRole {
|
|
6
|
+
Owner = "org_owner",
|
|
7
|
+
Admin = "org_admin",
|
|
8
|
+
Member = "org_member"
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveOrgRoles(claims: Record<string, unknown>): Record<string, OrgRole>;
|
|
11
|
+
export declare function resolveOrgRoleForOrg(claims: Record<string, unknown>, orgId: string): OrgRole | null;
|
|
12
|
+
export declare function orgRoleSatisfies(actual: OrgRole | null | undefined, required: OrgRole): boolean;
|
|
13
|
+
//# sourceMappingURL=org-role.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-role.d.ts","sourceRoot":"","sources":["../../../src/nestjs/auth/org-role.ts"],"names":[],"mappings":"AAoCA,oBAAY,gBAAgB;IAE1B,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,gBAAgB,EAElD,CAAC;AASX,oBAAY,OAAO;IACjB,KAAK,cAAc;IACnB,KAAK,cAAc;IACnB,MAAM,eAAe;CACtB;AA2BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAMD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,GACZ,OAAO,GAAG,IAAI,CAGhB;AAOD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAClC,QAAQ,EAAE,OAAO,GAChB,OAAO,CAGT"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrgRole = exports.ORG_ROLES_CLAIM_KEYS = exports.OrgRolesClaimKey = void 0;
|
|
4
|
+
exports.resolveOrgRoles = resolveOrgRoles;
|
|
5
|
+
exports.resolveOrgRoleForOrg = resolveOrgRoleForOrg;
|
|
6
|
+
exports.orgRoleSatisfies = orgRoleSatisfies;
|
|
7
|
+
var OrgRolesClaimKey;
|
|
8
|
+
(function (OrgRolesClaimKey) {
|
|
9
|
+
OrgRolesClaimKey["Canonical"] = "org_roles";
|
|
10
|
+
})(OrgRolesClaimKey || (exports.OrgRolesClaimKey = OrgRolesClaimKey = {}));
|
|
11
|
+
exports.ORG_ROLES_CLAIM_KEYS = [
|
|
12
|
+
OrgRolesClaimKey.Canonical,
|
|
13
|
+
];
|
|
14
|
+
var OrgRole;
|
|
15
|
+
(function (OrgRole) {
|
|
16
|
+
OrgRole["Owner"] = "org_owner";
|
|
17
|
+
OrgRole["Admin"] = "org_admin";
|
|
18
|
+
OrgRole["Member"] = "org_member";
|
|
19
|
+
})(OrgRole || (exports.OrgRole = OrgRole = {}));
|
|
20
|
+
const ORG_ROLE_RANK = {
|
|
21
|
+
[OrgRole.Owner]: 3,
|
|
22
|
+
[OrgRole.Admin]: 2,
|
|
23
|
+
[OrgRole.Member]: 1,
|
|
24
|
+
};
|
|
25
|
+
function isOrgRole(value) {
|
|
26
|
+
return (typeof value === 'string' &&
|
|
27
|
+
Object.values(OrgRole).includes(value));
|
|
28
|
+
}
|
|
29
|
+
function resolveOrgRoles(claims) {
|
|
30
|
+
for (const key of exports.ORG_ROLES_CLAIM_KEYS) {
|
|
31
|
+
const parsed = coerceClaimObject(claims[key]);
|
|
32
|
+
if (!parsed)
|
|
33
|
+
continue;
|
|
34
|
+
const out = {};
|
|
35
|
+
for (const [orgId, role] of Object.entries(parsed)) {
|
|
36
|
+
if (orgId.length > 0 && isOrgRole(role)) {
|
|
37
|
+
out[orgId] = role;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
function resolveOrgRoleForOrg(claims, orgId) {
|
|
45
|
+
if (!orgId)
|
|
46
|
+
return null;
|
|
47
|
+
return resolveOrgRoles(claims)[orgId] ?? null;
|
|
48
|
+
}
|
|
49
|
+
function orgRoleSatisfies(actual, required) {
|
|
50
|
+
if (!actual)
|
|
51
|
+
return false;
|
|
52
|
+
return ORG_ROLE_RANK[actual] >= ORG_ROLE_RANK[required];
|
|
53
|
+
}
|
|
54
|
+
function coerceClaimObject(raw) {
|
|
55
|
+
let value = raw;
|
|
56
|
+
if (Array.isArray(value)) {
|
|
57
|
+
value = value.length === 1 ? value[0] : undefined;
|
|
58
|
+
}
|
|
59
|
+
if (typeof value === 'string') {
|
|
60
|
+
const trimmed = value.trim();
|
|
61
|
+
if (trimmed.length === 0)
|
|
62
|
+
return null;
|
|
63
|
+
try {
|
|
64
|
+
value = JSON.parse(trimmed);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=org-role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-role.js","sourceRoot":"","sources":["../../../src/nestjs/auth/org-role.ts"],"names":[],"mappings":"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"}
|