@nodii/approval 0.1.14 → 0.2.1
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/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +32 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +21 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +30 -1
- package/dist/init.js.map +1 -1
- package/dist/kinds.d.ts +25 -0
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +44 -0
- package/dist/kinds.js.map +1 -1
- package/dist/policy-client.d.ts +70 -0
- package/dist/policy-client.d.ts.map +1 -0
- package/dist/policy-client.js +157 -0
- package/dist/policy-client.js.map +1 -0
- package/dist/preview-validation.d.ts +21 -0
- package/dist/preview-validation.d.ts.map +1 -0
- package/dist/preview-validation.js +179 -0
- package/dist/preview-validation.js.map +1 -0
- package/dist/request.d.ts.map +1 -1
- package/dist/request.js +207 -10
- package/dist/request.js.map +1 -1
- package/dist/types.d.ts +78 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-client.js","sourceRoot":"","sources":["../src/policy-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DeferredActionPayloadSummary, PreviewSchema } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Best-effort PII heuristics (D236 #3). Kept in ONE place; intentionally
|
|
4
|
+
* heuristic-grade (false positives acceptable). Defense-in-depth only.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PII_PATTERNS: ReadonlyArray<{
|
|
7
|
+
name: string;
|
|
8
|
+
re: RegExp;
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Validate a `deferredActionPayloadSummary` against the global allow-list +
|
|
12
|
+
* the kind's optional `previewSchema` + the PII heuristic. Throws
|
|
13
|
+
* `InvalidApprovalPreviewShape` on the first failure. Returns the validated
|
|
14
|
+
* summary (a shallow normalised copy) so the caller persists exactly what was
|
|
15
|
+
* checked.
|
|
16
|
+
*
|
|
17
|
+
* `summary` may be `undefined` — that is allowed UNLESS the previewSchema
|
|
18
|
+
* marks `preview_label` (or any field) `required`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function validatePreviewSummary(kind: string, summary: DeferredActionPayloadSummary | undefined, previewSchema: PreviewSchema | undefined): DeferredActionPayloadSummary | undefined;
|
|
21
|
+
//# sourceMappingURL=preview-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-validation.d.ts","sourceRoot":"","sources":["../src/preview-validation.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,4BAA4B,EAE5B,aAAa,EACd,MAAM,SAAS,CAAC;AASjB;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAOpE,CAAC;AAUF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,4BAA4B,GAAG,SAAS,EACjD,aAAa,EAAE,aAAa,GAAG,SAAS,GACvC,4BAA4B,GAAG,SAAS,CAoE1C"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// D236 — structured non-PII preview-shape validation for
|
|
2
|
+
// `deferredActionPayloadSummary` on `requestApproval`.
|
|
3
|
+
//
|
|
4
|
+
// Three layers, applied in this order, at REQUEST TIME, BEFORE any
|
|
5
|
+
// deferred_action row is written or begin-event emitted:
|
|
6
|
+
//
|
|
7
|
+
// [1] Global allow-list — the only permitted top-level keys are
|
|
8
|
+
// `preview_label` (required, non-empty string), `preview_subline`
|
|
9
|
+
// (optional string), `counts` (optional string→number map). ANY other
|
|
10
|
+
// top-level key is rejected.
|
|
11
|
+
// [2] Per-kind previewSchema — when the kind defines one, it TIGHTENS the
|
|
12
|
+
// global allow-list: a `forbidden` field present ⇒ throw; a `required`
|
|
13
|
+
// field absent ⇒ throw; a required nested count-key absent ⇒ throw.
|
|
14
|
+
// [3] PII-pattern heuristic — best-effort defense-in-depth. Rejects string
|
|
15
|
+
// values (and count keys) that look like email / phone / uuid / long
|
|
16
|
+
// opaque ids. Heuristic-grade — false positives are acceptable; this is
|
|
17
|
+
// NOT a substitute for the structural allow-list.
|
|
18
|
+
//
|
|
19
|
+
// All rejections throw `InvalidApprovalPreviewShape` with a stable code.
|
|
20
|
+
import { InvalidApprovalPreviewShape } from "./errors";
|
|
21
|
+
/** The only top-level keys the global allow-list permits (#1). */
|
|
22
|
+
const ALLOWED_TOP_LEVEL_KEYS = new Set([
|
|
23
|
+
"preview_label",
|
|
24
|
+
"preview_subline",
|
|
25
|
+
"counts",
|
|
26
|
+
]);
|
|
27
|
+
/**
|
|
28
|
+
* Best-effort PII heuristics (D236 #3). Kept in ONE place; intentionally
|
|
29
|
+
* heuristic-grade (false positives acceptable). Defense-in-depth only.
|
|
30
|
+
*/
|
|
31
|
+
export const PII_PATTERNS = [
|
|
32
|
+
// email-shaped: contains `@` then a `.` somewhere after it.
|
|
33
|
+
{ name: "email-shaped", re: /@.+\./ },
|
|
34
|
+
// phone-shaped: 10–15 digits, optional leading `+`, nothing else.
|
|
35
|
+
{ name: "phone-shaped", re: /^\+?\d{10,15}$/ },
|
|
36
|
+
// uuid-ish / long opaque id: 16+ chars of hex + dashes only.
|
|
37
|
+
{ name: "uuid-or-long-opaque-id", re: /^[0-9a-fA-F-]{16,}$/ },
|
|
38
|
+
];
|
|
39
|
+
/** Return the first matching PII pattern name, or null. Heuristic-grade. */
|
|
40
|
+
function matchPii(value) {
|
|
41
|
+
for (const { name, re } of PII_PATTERNS) {
|
|
42
|
+
if (re.test(value))
|
|
43
|
+
return name;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate a `deferredActionPayloadSummary` against the global allow-list +
|
|
49
|
+
* the kind's optional `previewSchema` + the PII heuristic. Throws
|
|
50
|
+
* `InvalidApprovalPreviewShape` on the first failure. Returns the validated
|
|
51
|
+
* summary (a shallow normalised copy) so the caller persists exactly what was
|
|
52
|
+
* checked.
|
|
53
|
+
*
|
|
54
|
+
* `summary` may be `undefined` — that is allowed UNLESS the previewSchema
|
|
55
|
+
* marks `preview_label` (or any field) `required`.
|
|
56
|
+
*/
|
|
57
|
+
export function validatePreviewSummary(kind, summary, previewSchema) {
|
|
58
|
+
// No summary supplied. Allowed only if the previewSchema does not require
|
|
59
|
+
// any field. (The global allow-list does NOT itself make the summary
|
|
60
|
+
// mandatory — a kind opts into "required" via previewSchema.)
|
|
61
|
+
if (summary === undefined || summary === null) {
|
|
62
|
+
if (previewSchema)
|
|
63
|
+
enforceSchemaOnAbsentSummary(kind, previewSchema);
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if (typeof summary !== "object" || Array.isArray(summary)) {
|
|
67
|
+
throw new InvalidApprovalPreviewShape(kind, "summary must be a plain object");
|
|
68
|
+
}
|
|
69
|
+
// [1] Global allow-list — reject any extra top-level key.
|
|
70
|
+
for (const key of Object.keys(summary)) {
|
|
71
|
+
if (!ALLOWED_TOP_LEVEL_KEYS.has(key)) {
|
|
72
|
+
throw new InvalidApprovalPreviewShape(kind, `unexpected top-level key '${key}' (only preview_label, preview_subline, counts are permitted)`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const rec = summary;
|
|
76
|
+
// preview_label — required by the global allow-list, non-empty string.
|
|
77
|
+
const label = rec.preview_label;
|
|
78
|
+
if (typeof label !== "string" || label.length === 0) {
|
|
79
|
+
throw new InvalidApprovalPreviewShape(kind, "preview_label is required and must be a non-empty string");
|
|
80
|
+
}
|
|
81
|
+
assertNoPii(kind, "preview_label", label);
|
|
82
|
+
// preview_subline — optional string.
|
|
83
|
+
if (rec.preview_subline !== undefined) {
|
|
84
|
+
if (typeof rec.preview_subline !== "string") {
|
|
85
|
+
throw new InvalidApprovalPreviewShape(kind, "preview_subline must be a string when present");
|
|
86
|
+
}
|
|
87
|
+
assertNoPii(kind, "preview_subline", rec.preview_subline);
|
|
88
|
+
}
|
|
89
|
+
// counts — optional object of string → number.
|
|
90
|
+
if (rec.counts !== undefined) {
|
|
91
|
+
validateCountsObject(kind, rec.counts);
|
|
92
|
+
}
|
|
93
|
+
// [2] Per-kind previewSchema layering.
|
|
94
|
+
if (previewSchema) {
|
|
95
|
+
enforceSchemaOnSummary(kind, rec, previewSchema);
|
|
96
|
+
}
|
|
97
|
+
// Normalised copy — only the allow-listed keys, in canonical order.
|
|
98
|
+
const out = { preview_label: label };
|
|
99
|
+
if (typeof rec.preview_subline === "string") {
|
|
100
|
+
out.preview_subline = rec.preview_subline;
|
|
101
|
+
}
|
|
102
|
+
if (rec.counts !== undefined) {
|
|
103
|
+
out.counts = { ...rec.counts };
|
|
104
|
+
}
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
/** Validate the `counts` value is a string→number map (no PII keys). */
|
|
108
|
+
function validateCountsObject(kind, counts) {
|
|
109
|
+
if (typeof counts !== "object" || counts === null || Array.isArray(counts)) {
|
|
110
|
+
throw new InvalidApprovalPreviewShape(kind, "counts must be an object of string→number when present");
|
|
111
|
+
}
|
|
112
|
+
for (const [k, v] of Object.entries(counts)) {
|
|
113
|
+
if (typeof v !== "number" || Number.isNaN(v)) {
|
|
114
|
+
throw new InvalidApprovalPreviewShape(kind, `counts['${k}'] must be a number (got ${typeof v})`);
|
|
115
|
+
}
|
|
116
|
+
// Count keys are also subject to the PII heuristic (defense-in-depth).
|
|
117
|
+
assertNoPii(kind, `counts key '${k}'`, k);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** Throw if `value` matches a PII heuristic. */
|
|
121
|
+
function assertNoPii(kind, field, value) {
|
|
122
|
+
const hit = matchPii(value);
|
|
123
|
+
if (hit) {
|
|
124
|
+
throw new InvalidApprovalPreviewShape(kind, `${field} looks like PII (${hit}); the preview summary must be non-PII`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/** Enforce a previewSchema when NO summary was supplied. */
|
|
128
|
+
function enforceSchemaOnAbsentSummary(kind, schema) {
|
|
129
|
+
if (schema.preview_label === "required") {
|
|
130
|
+
throw new InvalidApprovalPreviewShape(kind, "preview_label is required by the kind's previewSchema but no summary was supplied");
|
|
131
|
+
}
|
|
132
|
+
if (schema.preview_subline === "required") {
|
|
133
|
+
throw new InvalidApprovalPreviewShape(kind, "preview_subline is required by the kind's previewSchema but no summary was supplied");
|
|
134
|
+
}
|
|
135
|
+
enforceCountsRuleOnAbsent(kind, schema.counts);
|
|
136
|
+
}
|
|
137
|
+
/** Enforce a previewSchema against a present, allow-list-valid summary. */
|
|
138
|
+
function enforceSchemaOnSummary(kind, rec, schema) {
|
|
139
|
+
enforceFieldRule(kind, "preview_label", schema.preview_label, rec.preview_label !== undefined);
|
|
140
|
+
enforceFieldRule(kind, "preview_subline", schema.preview_subline, rec.preview_subline !== undefined);
|
|
141
|
+
const countsRule = schema.counts;
|
|
142
|
+
if (countsRule === undefined)
|
|
143
|
+
return;
|
|
144
|
+
const counts = rec.counts;
|
|
145
|
+
const countsPresent = counts !== undefined;
|
|
146
|
+
if (typeof countsRule === "string") {
|
|
147
|
+
enforceFieldRule(kind, "counts", countsRule, countsPresent);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Nested map: specific count-key → rule.
|
|
151
|
+
for (const [countKey, rule] of Object.entries(countsRule)) {
|
|
152
|
+
const present = countsPresent && counts?.[countKey] !== undefined;
|
|
153
|
+
enforceFieldRule(kind, `counts['${countKey}']`, rule, present);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Enforce the counts rule when no summary (hence no counts) was supplied. */
|
|
157
|
+
function enforceCountsRuleOnAbsent(kind, countsRule) {
|
|
158
|
+
if (countsRule === undefined)
|
|
159
|
+
return;
|
|
160
|
+
if (typeof countsRule === "string") {
|
|
161
|
+
enforceFieldRule(kind, "counts", countsRule, false);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
for (const [countKey, rule] of Object.entries(countsRule)) {
|
|
165
|
+
enforceFieldRule(kind, `counts['${countKey}']`, rule, false);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Apply one required/optional/forbidden rule to one field's presence. */
|
|
169
|
+
function enforceFieldRule(kind, field, rule, present) {
|
|
170
|
+
if (rule === undefined || rule === "optional")
|
|
171
|
+
return;
|
|
172
|
+
if (rule === "required" && !present) {
|
|
173
|
+
throw new InvalidApprovalPreviewShape(kind, `${field} is required by the kind's previewSchema but is absent`);
|
|
174
|
+
}
|
|
175
|
+
if (rule === "forbidden" && present) {
|
|
176
|
+
throw new InvalidApprovalPreviewShape(kind, `${field} is forbidden by the kind's previewSchema but is present`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=preview-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-validation.js","sourceRoot":"","sources":["../src/preview-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/request.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAMV,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAGjB,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CA0DhC"}
|
package/dist/request.js
CHANGED
|
@@ -12,22 +12,40 @@
|
|
|
12
12
|
import { randomUUID, createHash } from "node:crypto";
|
|
13
13
|
import { wrapForSagaStep } from "@nodii/idempotency";
|
|
14
14
|
import { insertDeferredAction, markFailed } from "./deferred-actions";
|
|
15
|
-
import { HandlerNotRegistered, IdempotencyKeyRequired,
|
|
16
|
-
import { requireApproval, requireHandlers, requireKindRegistry } from "./init";
|
|
15
|
+
import { HandlerNotRegistered, IdempotencyKeyRequired, UndeclaredRequesterKind, } from "./errors";
|
|
16
|
+
import { requireApproval, requireHandlers, requireKindRegistry, requesterRegistry, } from "./init";
|
|
17
17
|
import { resolvePolicy } from "./policies";
|
|
18
|
+
import { validatePreviewSummary } from "./preview-validation";
|
|
18
19
|
import { emitAudit, inc, observe } from "./telemetry-shim";
|
|
19
20
|
import { DEFAULT_IDEMPOTENCY_TTL_SECONDS } from "./types";
|
|
20
21
|
export async function requestApproval(opts) {
|
|
21
|
-
// [1] Validate kind
|
|
22
|
+
// [1] Validate idempotency key + kind declaration.
|
|
22
23
|
if (!opts.idempotencyKey || typeof opts.idempotencyKey !== "string") {
|
|
23
24
|
throw new IdempotencyKeyRequired();
|
|
24
25
|
}
|
|
25
26
|
const cfg = requireApproval();
|
|
26
27
|
const reg = requireKindRegistry();
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
|
|
28
|
+
const ownedDef = reg.get(opts.kind);
|
|
29
|
+
// A kind is ALLOWED if it is OWNED (defineApprovalKinds + registerKinds)
|
|
30
|
+
// OR declared as a cross-owner requester (defineApprovalRequester) per
|
|
31
|
+
// D231 Rule 1. Owning a kind already implies the right to request it, so
|
|
32
|
+
// owned kinds do not also need defineApprovalRequester.
|
|
33
|
+
const isCrossOwnerDeclared = requesterRegistry().has(opts.kind);
|
|
34
|
+
if (!ownedDef && !isCrossOwnerDeclared) {
|
|
35
|
+
throw new UndeclaredRequesterKind(opts.kind, reg.keys(), requesterRegistry().keys());
|
|
30
36
|
}
|
|
37
|
+
// For an owned kind the local def drives policy/self-action/opt-in. For a
|
|
38
|
+
// cross-owner kind there is no local def — the owner owns the policy and
|
|
39
|
+
// task-tracking resolves it via ApprovalPolicyService.GetPolicy (D231
|
|
40
|
+
// Rule 3); the requester library MUST NOT contact the owner here.
|
|
41
|
+
const def = ownedDef ?? syntheticCrossOwnerDef(opts.kind);
|
|
42
|
+
// [1b] D236 — validate the structured non-PII preview summary BEFORE the
|
|
43
|
+
// idempotency wrap (hence BEFORE any deferred_action row is written or
|
|
44
|
+
// begin-event is emitted). Throws InvalidApprovalPreviewShape on a bad
|
|
45
|
+
// shape / forbidden / required-absent / PII-pattern hit. A cross-owner
|
|
46
|
+
// kind has no local previewSchema (the synthetic def carries `undefined`),
|
|
47
|
+
// so only the global allow-list applies to it.
|
|
48
|
+
const previewSummary = validatePreviewSummary(def.kind, opts.deferredActionPayloadSummary, def.previewSchema);
|
|
31
49
|
// [2] Wrap via idempotency. Replay returns the same triple.
|
|
32
50
|
return wrapForSagaStep({
|
|
33
51
|
sagaId: opts.sagaId ??
|
|
@@ -40,12 +58,54 @@ export async function requestApproval(opts) {
|
|
|
40
58
|
deferredActionPayload: opts.deferredActionPayload,
|
|
41
59
|
}),
|
|
42
60
|
ttlSeconds: DEFAULT_IDEMPOTENCY_TTL_SECONDS,
|
|
43
|
-
handler: () =>
|
|
61
|
+
handler: () => ownedDef
|
|
62
|
+
? runCanonicalSequence(cfg, def, opts, previewSummary)
|
|
63
|
+
: runCrossOwnerSequence(cfg, def, opts, previewSummary),
|
|
44
64
|
});
|
|
45
65
|
}
|
|
46
|
-
|
|
66
|
+
/** Owner service for a kind: everything before the first `.` (D231 Rule 1). */
|
|
67
|
+
function ownerOf(kind) {
|
|
68
|
+
const dot = kind.indexOf(".");
|
|
69
|
+
return dot === -1 ? kind : kind.slice(0, dot);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Build a minimal def for a cross-owner kind. The requester does not own the
|
|
73
|
+
* policy, approver-role, or self-action/opt-in flags — those live on the
|
|
74
|
+
* owner and are resolved by task-tracking via GetPolicy. We only need the
|
|
75
|
+
* kind name + parsed resource/verb (for the action-button + title), so we
|
|
76
|
+
* derive `<resource>.<verb>` as the remainder after `<owner>.`.
|
|
77
|
+
*/
|
|
78
|
+
function syntheticCrossOwnerDef(kind) {
|
|
79
|
+
const segments = kind.split(".");
|
|
80
|
+
const resource = segments[1] ?? "";
|
|
81
|
+
const verb = segments.slice(2).join(".");
|
|
82
|
+
return {
|
|
83
|
+
shortKind: `${resource}.${verb}`,
|
|
84
|
+
kind,
|
|
85
|
+
resource,
|
|
86
|
+
verb,
|
|
87
|
+
description: "",
|
|
88
|
+
// approverRole is owner-resolved (GetPolicy); empty placeholder. The
|
|
89
|
+
// requester never asserts it — task-tracking sets assigneeRole from the
|
|
90
|
+
// owner policy. Carried only so the title/button helpers have a value.
|
|
91
|
+
approverRole: "",
|
|
92
|
+
optInDefault: true,
|
|
93
|
+
selfActionAllowed: false,
|
|
94
|
+
expirySeconds: undefined,
|
|
95
|
+
actionButtonLabel: undefined,
|
|
96
|
+
// A cross-owner kind has no local previewSchema — only the global
|
|
97
|
+
// allow-list applies (the owner enforces its own tighter rules).
|
|
98
|
+
previewSchema: undefined,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async function runCanonicalSequence(cfg, def, opts, previewSummary) {
|
|
47
102
|
const startMs = Date.now();
|
|
48
103
|
const pg = cfg.pgPool;
|
|
104
|
+
// The validated D236 summary is folded into the row metadata + begin-event
|
|
105
|
+
// metadata under a stable key. It is NON-PII by construction (validated).
|
|
106
|
+
const summaryMeta = previewSummary
|
|
107
|
+
? { deferred_action_payload_summary: previewSummary }
|
|
108
|
+
: {};
|
|
49
109
|
// [3] Resolve tenant policy
|
|
50
110
|
const policy = await resolvePolicy(cfg, pg, opts.tenantId, def);
|
|
51
111
|
// [3a] Opt-in default off + fallthrough → short-circuit (no task created).
|
|
@@ -143,11 +203,15 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
143
203
|
requesterMembershipId: opts.requesterMembershipId,
|
|
144
204
|
deferredActionPayload: opts.deferredActionPayload,
|
|
145
205
|
idempotencyKey: opts.idempotencyKey,
|
|
146
|
-
|
|
206
|
+
// The validated D236 preview summary rides in the row metadata so the
|
|
207
|
+
// deferred_action carries the structured non-PII preview.
|
|
208
|
+
metadata: { ...(opts.metadata ?? {}), ...summaryMeta },
|
|
147
209
|
auditCorrelationId: correlationId,
|
|
148
210
|
});
|
|
149
211
|
return inserted;
|
|
150
212
|
});
|
|
213
|
+
// For an owned kind the owner IS the requester (D231 Rule 1).
|
|
214
|
+
const ownerService = ownerOf(def.kind);
|
|
151
215
|
emitAudit({
|
|
152
216
|
tenantId: opts.tenantId,
|
|
153
217
|
action: `${cfg.serviceName}.approval.requested`,
|
|
@@ -156,9 +220,13 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
156
220
|
// Caller metadata first; lib-mandated fields last so they win.
|
|
157
221
|
metadata: {
|
|
158
222
|
...(opts.metadata ?? {}),
|
|
223
|
+
...summaryMeta,
|
|
159
224
|
kind: def.kind,
|
|
160
225
|
requester_membership_id: opts.requesterMembershipId,
|
|
161
226
|
audit_correlation_id: correlationId,
|
|
227
|
+
// D231 begin-event cross-owner provenance fields.
|
|
228
|
+
requester_service: cfg.serviceName,
|
|
229
|
+
owner_service: ownerService,
|
|
162
230
|
},
|
|
163
231
|
});
|
|
164
232
|
// [6] gRPC CreateTask
|
|
@@ -171,14 +239,19 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
171
239
|
description: def.description,
|
|
172
240
|
assigneeRole: policy.approverRole,
|
|
173
241
|
// Caller metadata first; lib-mandated fields last so they win
|
|
174
|
-
// (task-tracking's task.metadata payload).
|
|
242
|
+
// (task-tracking's task.metadata payload — the D231 begin-event).
|
|
175
243
|
metadata: {
|
|
176
244
|
...(opts.metadata ?? {}),
|
|
245
|
+
...summaryMeta,
|
|
177
246
|
approvalId: row.id,
|
|
178
247
|
deferredActionId: row.id,
|
|
179
248
|
kind: def.kind,
|
|
180
249
|
requesterMembershipId: opts.requesterMembershipId,
|
|
181
250
|
thresholdEvalContext: policy.thresholdParams,
|
|
251
|
+
// D231 begin-event cross-owner provenance fields (Rule 1 + Rule 3:
|
|
252
|
+
// task-tracking parses owner_service from the kind to call GetPolicy).
|
|
253
|
+
requester_service: cfg.serviceName,
|
|
254
|
+
owner_service: ownerService,
|
|
182
255
|
},
|
|
183
256
|
expiresAt,
|
|
184
257
|
idempotencyKey: opts.idempotencyKey,
|
|
@@ -233,6 +306,130 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
233
306
|
status: "task_created",
|
|
234
307
|
};
|
|
235
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Cross-owner request sequence (D231 Rule 1). The kind is owned by ANOTHER
|
|
311
|
+
* service. The requester:
|
|
312
|
+
* - writes the deferred_action row to its OWN `<requester>_deferred_actions`,
|
|
313
|
+
* - emits the begin-event (audit + the CreateTask payload) carrying
|
|
314
|
+
* `requester_service`, `owner_service`, `kind`,
|
|
315
|
+
* - creates the task via task-tracking.
|
|
316
|
+
*
|
|
317
|
+
* It does NOT resolve a local policy, self-action exception, or opt-in
|
|
318
|
+
* short-circuit — those belong to the OWNER and are resolved by task-tracking
|
|
319
|
+
* via `ApprovalPolicyService.GetPolicy` (Rule 3). This function makes ZERO
|
|
320
|
+
* gRPC calls to the owner service.
|
|
321
|
+
*/
|
|
322
|
+
async function runCrossOwnerSequence(cfg, def, opts, previewSummary) {
|
|
323
|
+
const ownerService = ownerOf(def.kind);
|
|
324
|
+
const requesterService = cfg.serviceName;
|
|
325
|
+
const summaryMeta = previewSummary
|
|
326
|
+
? { deferred_action_payload_summary: previewSummary }
|
|
327
|
+
: {};
|
|
328
|
+
// [5] Persist deferred-action row to the REQUESTER's local table + audit.
|
|
329
|
+
const correlationId = randomUUID();
|
|
330
|
+
const row = await cfg.pgPool.begin((tx) => insertDeferredAction(cfg, tx, {
|
|
331
|
+
tenantId: opts.tenantId,
|
|
332
|
+
kind: def.kind,
|
|
333
|
+
requesterMembershipId: opts.requesterMembershipId,
|
|
334
|
+
deferredActionPayload: opts.deferredActionPayload,
|
|
335
|
+
idempotencyKey: opts.idempotencyKey,
|
|
336
|
+
metadata: { ...(opts.metadata ?? {}), ...summaryMeta },
|
|
337
|
+
auditCorrelationId: correlationId,
|
|
338
|
+
}));
|
|
339
|
+
emitAudit({
|
|
340
|
+
tenantId: opts.tenantId,
|
|
341
|
+
action: `${requesterService}.approval.requested`,
|
|
342
|
+
targetKind: "deferred_action",
|
|
343
|
+
targetId: row.id,
|
|
344
|
+
metadata: {
|
|
345
|
+
...(opts.metadata ?? {}),
|
|
346
|
+
...summaryMeta,
|
|
347
|
+
kind: def.kind,
|
|
348
|
+
requester_membership_id: opts.requesterMembershipId,
|
|
349
|
+
audit_correlation_id: correlationId,
|
|
350
|
+
requester_service: requesterService,
|
|
351
|
+
owner_service: ownerService,
|
|
352
|
+
},
|
|
353
|
+
});
|
|
354
|
+
// [6] gRPC CreateTask. The owner resolves approverRole + expiry via
|
|
355
|
+
// GetPolicy (task-tracking, Rule 3) — the requester does NOT set
|
|
356
|
+
// assigneeRole from a local policy. Expiry defaults to the requester's
|
|
357
|
+
// configured fallback; task-tracking overrides from the owner policy.
|
|
358
|
+
const expirySeconds = opts.expirySeconds ?? cfg.defaultExpirySeconds;
|
|
359
|
+
const expiresAt = new Date(Date.now() + expirySeconds * 1000).toISOString();
|
|
360
|
+
const taskRequest = {
|
|
361
|
+
tenantId: opts.tenantId,
|
|
362
|
+
kind: `approval:${def.kind}`,
|
|
363
|
+
title: titleFor(def, opts.metadata ?? {}),
|
|
364
|
+
description: def.description,
|
|
365
|
+
// No local approverRole for a cross-owner kind — task-tracking sets the
|
|
366
|
+
// assignee from the owner's GetPolicy. Empty = "owner-resolved".
|
|
367
|
+
assigneeRole: "",
|
|
368
|
+
metadata: {
|
|
369
|
+
...(opts.metadata ?? {}),
|
|
370
|
+
...summaryMeta,
|
|
371
|
+
approvalId: row.id,
|
|
372
|
+
deferredActionId: row.id,
|
|
373
|
+
kind: def.kind,
|
|
374
|
+
requesterMembershipId: opts.requesterMembershipId,
|
|
375
|
+
// D231 begin-event cross-owner provenance fields.
|
|
376
|
+
requester_service: requesterService,
|
|
377
|
+
owner_service: ownerService,
|
|
378
|
+
},
|
|
379
|
+
expiresAt,
|
|
380
|
+
idempotencyKey: opts.idempotencyKey,
|
|
381
|
+
sourceModule: requesterService,
|
|
382
|
+
actionButton: opts.actionButton ?? {
|
|
383
|
+
label: def.actionButtonLabel ?? "Review",
|
|
384
|
+
moduleKey: requesterService,
|
|
385
|
+
actionKey: `approval:${def.shortKind}`,
|
|
386
|
+
params: { approvalId: row.id },
|
|
387
|
+
},
|
|
388
|
+
};
|
|
389
|
+
let taskResponse;
|
|
390
|
+
try {
|
|
391
|
+
taskResponse = await cfg.taskServiceClient.createTask(taskRequest);
|
|
392
|
+
}
|
|
393
|
+
catch (err) {
|
|
394
|
+
emitAudit({
|
|
395
|
+
tenantId: opts.tenantId,
|
|
396
|
+
action: `${requesterService}.approval.task_creation_failed`,
|
|
397
|
+
targetKind: "deferred_action",
|
|
398
|
+
targetId: row.id,
|
|
399
|
+
metadata: {
|
|
400
|
+
kind: def.kind,
|
|
401
|
+
owner_service: ownerService,
|
|
402
|
+
error: err instanceof Error ? err.message : String(err),
|
|
403
|
+
},
|
|
404
|
+
});
|
|
405
|
+
inc({
|
|
406
|
+
name: "approval_task_creation_failed_total",
|
|
407
|
+
family: "request_handler",
|
|
408
|
+
labels: {
|
|
409
|
+
service: requesterService,
|
|
410
|
+
kind: def.kind,
|
|
411
|
+
reason: classifyError(err),
|
|
412
|
+
},
|
|
413
|
+
});
|
|
414
|
+
throw err;
|
|
415
|
+
}
|
|
416
|
+
// [7] Persist task_id back.
|
|
417
|
+
await cfg.pgPool.unsafe(`UPDATE ${requesterService}_deferred_actions SET task_id = $1 WHERE id = $2`, [taskResponse.taskId, row.id]);
|
|
418
|
+
inc({
|
|
419
|
+
name: "approval_requested_total",
|
|
420
|
+
family: "request_handler",
|
|
421
|
+
labels: {
|
|
422
|
+
service: requesterService,
|
|
423
|
+
kind: def.kind,
|
|
424
|
+
outcome: "task_created",
|
|
425
|
+
},
|
|
426
|
+
});
|
|
427
|
+
return {
|
|
428
|
+
approvalId: row.id,
|
|
429
|
+
taskId: taskResponse.taskId,
|
|
430
|
+
status: "task_created",
|
|
431
|
+
};
|
|
432
|
+
}
|
|
236
433
|
async function persistShortCircuitRow(cfg, def, opts, status, approverMembershipId, note) {
|
|
237
434
|
const correlationId = randomUUID();
|
|
238
435
|
return cfg.pgPool.begin(async (tx) => {
|
package/dist/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"}
|