@nodii/approval 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +22 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +19 -7
- package/dist/init.js.map +1 -1
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +1 -0
- package/dist/kinds.js.map +1 -1
- package/dist/outbox.d.ts +59 -0
- package/dist/outbox.d.ts.map +1 -0
- package/dist/outbox.js +68 -0
- package/dist/outbox.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 +124 -162
- package/dist/request.js.map +1 -1
- package/dist/types.d.ts +87 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/uuid.d.ts +2 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +33 -0
- package/dist/uuid.js.map +1 -0
- package/package.json +1 -1
|
@@ -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":"AAgCA,OAAO,KAAK,EAIV,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
|
@@ -14,7 +14,9 @@ import { wrapForSagaStep } from "@nodii/idempotency";
|
|
|
14
14
|
import { insertDeferredAction, markFailed } from "./deferred-actions";
|
|
15
15
|
import { HandlerNotRegistered, IdempotencyKeyRequired, UndeclaredRequesterKind, } from "./errors";
|
|
16
16
|
import { requireApproval, requireHandlers, requireKindRegistry, requesterRegistry, } from "./init";
|
|
17
|
+
import { approvalRequestedTopic, insertBeginEventOutboxRow } from "./outbox";
|
|
17
18
|
import { resolvePolicy } from "./policies";
|
|
19
|
+
import { validatePreviewSummary } from "./preview-validation";
|
|
18
20
|
import { emitAudit, inc, observe } from "./telemetry-shim";
|
|
19
21
|
import { DEFAULT_IDEMPOTENCY_TTL_SECONDS } from "./types";
|
|
20
22
|
export async function requestApproval(opts) {
|
|
@@ -38,6 +40,13 @@ export async function requestApproval(opts) {
|
|
|
38
40
|
// task-tracking resolves it via ApprovalPolicyService.GetPolicy (D231
|
|
39
41
|
// Rule 3); the requester library MUST NOT contact the owner here.
|
|
40
42
|
const def = ownedDef ?? syntheticCrossOwnerDef(opts.kind);
|
|
43
|
+
// [1b] D236 — validate the structured non-PII preview summary BEFORE the
|
|
44
|
+
// idempotency wrap (hence BEFORE any deferred_action row is written or
|
|
45
|
+
// begin-event is emitted). Throws InvalidApprovalPreviewShape on a bad
|
|
46
|
+
// shape / forbidden / required-absent / PII-pattern hit. A cross-owner
|
|
47
|
+
// kind has no local previewSchema (the synthetic def carries `undefined`),
|
|
48
|
+
// so only the global allow-list applies to it.
|
|
49
|
+
const previewSummary = validatePreviewSummary(def.kind, opts.deferredActionPayloadSummary, def.previewSchema);
|
|
41
50
|
// [2] Wrap via idempotency. Replay returns the same triple.
|
|
42
51
|
return wrapForSagaStep({
|
|
43
52
|
sagaId: opts.sagaId ??
|
|
@@ -51,8 +60,8 @@ export async function requestApproval(opts) {
|
|
|
51
60
|
}),
|
|
52
61
|
ttlSeconds: DEFAULT_IDEMPOTENCY_TTL_SECONDS,
|
|
53
62
|
handler: () => ownedDef
|
|
54
|
-
? runCanonicalSequence(cfg, def, opts)
|
|
55
|
-
: runCrossOwnerSequence(cfg, def, opts),
|
|
63
|
+
? runCanonicalSequence(cfg, def, opts, previewSummary)
|
|
64
|
+
: runCrossOwnerSequence(cfg, def, opts, previewSummary),
|
|
56
65
|
});
|
|
57
66
|
}
|
|
58
67
|
/** Owner service for a kind: everything before the first `.` (D231 Rule 1). */
|
|
@@ -85,11 +94,19 @@ function syntheticCrossOwnerDef(kind) {
|
|
|
85
94
|
selfActionAllowed: false,
|
|
86
95
|
expirySeconds: undefined,
|
|
87
96
|
actionButtonLabel: undefined,
|
|
97
|
+
// A cross-owner kind has no local previewSchema — only the global
|
|
98
|
+
// allow-list applies (the owner enforces its own tighter rules).
|
|
99
|
+
previewSchema: undefined,
|
|
88
100
|
};
|
|
89
101
|
}
|
|
90
|
-
async function runCanonicalSequence(cfg, def, opts) {
|
|
102
|
+
async function runCanonicalSequence(cfg, def, opts, previewSummary) {
|
|
91
103
|
const startMs = Date.now();
|
|
92
104
|
const pg = cfg.pgPool;
|
|
105
|
+
// The validated D236 summary is folded into the row metadata + begin-event
|
|
106
|
+
// metadata under a stable key. It is NON-PII by construction (validated).
|
|
107
|
+
const summaryMeta = previewSummary
|
|
108
|
+
? { deferred_action_payload_summary: previewSummary }
|
|
109
|
+
: {};
|
|
93
110
|
// [3] Resolve tenant policy
|
|
94
111
|
const policy = await resolvePolicy(cfg, pg, opts.tenantId, def);
|
|
95
112
|
// [3a] Opt-in default off + fallthrough → short-circuit (no task created).
|
|
@@ -134,6 +151,8 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
134
151
|
return {
|
|
135
152
|
approvalId: row.id,
|
|
136
153
|
taskId: null,
|
|
154
|
+
// No begin-event on the short-circuit path — no task is created.
|
|
155
|
+
beginEventId: null,
|
|
137
156
|
status: "opt_in_disabled_executed",
|
|
138
157
|
};
|
|
139
158
|
}
|
|
@@ -174,26 +193,61 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
174
193
|
return {
|
|
175
194
|
approvalId: row.id,
|
|
176
195
|
taskId: null,
|
|
196
|
+
// No begin-event on the short-circuit path — no task is created.
|
|
197
|
+
beginEventId: null,
|
|
177
198
|
status: "self_action_executed",
|
|
178
199
|
};
|
|
179
200
|
}
|
|
180
201
|
}
|
|
181
|
-
// [5] Persist deferred-action row +
|
|
202
|
+
// [5] Persist deferred-action row + emit the begin-event into the requester's
|
|
203
|
+
// transactional outbox — IN THE SAME TRANSACTION (D237 Rule 3 + 01-comms
|
|
204
|
+
// § 9.1). Same-tx atomicity: if the outbox insert fails (or commit
|
|
205
|
+
// fails), the deferred_action row rolls back too — no half-state. NO
|
|
206
|
+
// synchronous gRPC CreateTask is called from the request flow anymore;
|
|
207
|
+
// the service's @nodii/outbox-dispatcher drainer publishes the row to
|
|
208
|
+
// `<svc>.approval.requested.v1` (01-comms § 9.2), where task-tracking's
|
|
209
|
+
// approval-runtime consumer projects it (D232 + R2).
|
|
210
|
+
// For an owned kind the owner IS the requester (D231 Rule 1).
|
|
211
|
+
const ownerService = ownerOf(def.kind);
|
|
212
|
+
const expirySeconds = opts.expirySeconds ?? policy.expirySeconds ?? cfg.defaultExpirySeconds;
|
|
182
213
|
const correlationId = randomUUID();
|
|
183
|
-
const row = await pg.begin(async (tx) => {
|
|
214
|
+
const { row, beginEventId } = await pg.begin(async (tx) => {
|
|
184
215
|
const inserted = await insertDeferredAction(cfg, tx, {
|
|
185
216
|
tenantId: opts.tenantId,
|
|
186
217
|
kind: def.kind,
|
|
187
218
|
requesterMembershipId: opts.requesterMembershipId,
|
|
188
219
|
deferredActionPayload: opts.deferredActionPayload,
|
|
189
220
|
idempotencyKey: opts.idempotencyKey,
|
|
190
|
-
|
|
221
|
+
// The validated D236 preview summary rides in the row metadata so the
|
|
222
|
+
// deferred_action carries the structured non-PII preview.
|
|
223
|
+
metadata: { ...(opts.metadata ?? {}), ...summaryMeta },
|
|
191
224
|
auditCorrelationId: correlationId,
|
|
192
225
|
});
|
|
193
|
-
|
|
226
|
+
// Same-tx begin-event outbox emit (D237). tenant_id rides INSIDE payload —
|
|
227
|
+
// the canonical `outbox` table has no tenant_id column.
|
|
228
|
+
const { eventId } = await insertBeginEventOutboxRow(tx, {
|
|
229
|
+
tableName: cfg.outboxTableName,
|
|
230
|
+
aggregateId: inserted.id,
|
|
231
|
+
topic: approvalRequestedTopic(cfg.serviceName),
|
|
232
|
+
payload: {
|
|
233
|
+
kind: def.kind,
|
|
234
|
+
requester_service: cfg.serviceName,
|
|
235
|
+
owner_service: ownerService,
|
|
236
|
+
deferred_action_id: inserted.id,
|
|
237
|
+
idempotency_key: opts.idempotencyKey,
|
|
238
|
+
tenant_id: opts.tenantId,
|
|
239
|
+
requester_membership_id: opts.requesterMembershipId,
|
|
240
|
+
default_approver_role: policy.approverRole,
|
|
241
|
+
default_expires_in_seconds: expirySeconds,
|
|
242
|
+
...(previewSummary
|
|
243
|
+
? { deferred_action_payload_summary: previewSummary }
|
|
244
|
+
: {}),
|
|
245
|
+
occurred_at_in_requester_tx_ms: Date.now(),
|
|
246
|
+
...(opts.metadata ? { metadata: opts.metadata } : {}),
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
return { row: inserted, beginEventId: eventId };
|
|
194
250
|
});
|
|
195
|
-
// For an owned kind the owner IS the requester (D231 Rule 1).
|
|
196
|
-
const ownerService = ownerOf(def.kind);
|
|
197
251
|
emitAudit({
|
|
198
252
|
tenantId: opts.tenantId,
|
|
199
253
|
action: `${cfg.serviceName}.approval.requested`,
|
|
@@ -202,75 +256,18 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
202
256
|
// Caller metadata first; lib-mandated fields last so they win.
|
|
203
257
|
metadata: {
|
|
204
258
|
...(opts.metadata ?? {}),
|
|
259
|
+
...summaryMeta,
|
|
205
260
|
kind: def.kind,
|
|
206
261
|
requester_membership_id: opts.requesterMembershipId,
|
|
207
262
|
audit_correlation_id: correlationId,
|
|
208
263
|
// D231 begin-event cross-owner provenance fields.
|
|
209
264
|
requester_service: cfg.serviceName,
|
|
210
265
|
owner_service: ownerService,
|
|
266
|
+
// D237 — the begin-event is now an outbox row, not a CreateTask.
|
|
267
|
+
begin_event_id: beginEventId,
|
|
268
|
+
begin_event_transport: "outbox",
|
|
211
269
|
},
|
|
212
270
|
});
|
|
213
|
-
// [6] gRPC CreateTask
|
|
214
|
-
const expirySeconds = opts.expirySeconds ?? policy.expirySeconds ?? cfg.defaultExpirySeconds;
|
|
215
|
-
const expiresAt = new Date(Date.now() + expirySeconds * 1000).toISOString();
|
|
216
|
-
const taskRequest = {
|
|
217
|
-
tenantId: opts.tenantId,
|
|
218
|
-
kind: `approval:${def.kind}`,
|
|
219
|
-
title: titleFor(def, opts.metadata ?? {}),
|
|
220
|
-
description: def.description,
|
|
221
|
-
assigneeRole: policy.approverRole,
|
|
222
|
-
// Caller metadata first; lib-mandated fields last so they win
|
|
223
|
-
// (task-tracking's task.metadata payload — the D231 begin-event).
|
|
224
|
-
metadata: {
|
|
225
|
-
...(opts.metadata ?? {}),
|
|
226
|
-
approvalId: row.id,
|
|
227
|
-
deferredActionId: row.id,
|
|
228
|
-
kind: def.kind,
|
|
229
|
-
requesterMembershipId: opts.requesterMembershipId,
|
|
230
|
-
thresholdEvalContext: policy.thresholdParams,
|
|
231
|
-
// D231 begin-event cross-owner provenance fields (Rule 1 + Rule 3:
|
|
232
|
-
// task-tracking parses owner_service from the kind to call GetPolicy).
|
|
233
|
-
requester_service: cfg.serviceName,
|
|
234
|
-
owner_service: ownerService,
|
|
235
|
-
},
|
|
236
|
-
expiresAt,
|
|
237
|
-
idempotencyKey: opts.idempotencyKey,
|
|
238
|
-
sourceModule: cfg.serviceName,
|
|
239
|
-
actionButton: opts.actionButton ?? {
|
|
240
|
-
label: def.actionButtonLabel ?? "Review",
|
|
241
|
-
moduleKey: cfg.serviceName,
|
|
242
|
-
actionKey: `approval:${def.shortKind}`,
|
|
243
|
-
params: { approvalId: row.id },
|
|
244
|
-
},
|
|
245
|
-
};
|
|
246
|
-
let taskResponse;
|
|
247
|
-
try {
|
|
248
|
-
taskResponse = await cfg.taskServiceClient.createTask(taskRequest);
|
|
249
|
-
}
|
|
250
|
-
catch (err) {
|
|
251
|
-
emitAudit({
|
|
252
|
-
tenantId: opts.tenantId,
|
|
253
|
-
action: `${cfg.serviceName}.approval.task_creation_failed`,
|
|
254
|
-
targetKind: "deferred_action",
|
|
255
|
-
targetId: row.id,
|
|
256
|
-
metadata: {
|
|
257
|
-
kind: def.kind,
|
|
258
|
-
error: err instanceof Error ? err.message : String(err),
|
|
259
|
-
},
|
|
260
|
-
});
|
|
261
|
-
inc({
|
|
262
|
-
name: "approval_task_creation_failed_total",
|
|
263
|
-
family: "request_handler",
|
|
264
|
-
labels: {
|
|
265
|
-
service: cfg.serviceName,
|
|
266
|
-
kind: def.kind,
|
|
267
|
-
reason: classifyError(err),
|
|
268
|
-
},
|
|
269
|
-
});
|
|
270
|
-
throw err;
|
|
271
|
-
}
|
|
272
|
-
// [7] Persist task_id back
|
|
273
|
-
await pg.unsafe(`UPDATE ${cfg.serviceName}_deferred_actions SET task_id = $1 WHERE id = $2`, [taskResponse.taskId, row.id]);
|
|
274
271
|
inc({
|
|
275
272
|
name: "approval_requested_total",
|
|
276
273
|
family: "request_handler",
|
|
@@ -282,7 +279,10 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
282
279
|
});
|
|
283
280
|
return {
|
|
284
281
|
approvalId: row.id,
|
|
285
|
-
|
|
282
|
+
// D237 — no synchronous task id at request time; task-tracking mints the
|
|
283
|
+
// task asynchronously from the drained outbox row.
|
|
284
|
+
taskId: null,
|
|
285
|
+
beginEventId,
|
|
286
286
|
status: "task_created",
|
|
287
287
|
};
|
|
288
288
|
}
|
|
@@ -299,20 +299,57 @@ async function runCanonicalSequence(cfg, def, opts) {
|
|
|
299
299
|
* via `ApprovalPolicyService.GetPolicy` (Rule 3). This function makes ZERO
|
|
300
300
|
* gRPC calls to the owner service.
|
|
301
301
|
*/
|
|
302
|
-
async function runCrossOwnerSequence(cfg, def, opts) {
|
|
302
|
+
async function runCrossOwnerSequence(cfg, def, opts, previewSummary) {
|
|
303
303
|
const ownerService = ownerOf(def.kind);
|
|
304
304
|
const requesterService = cfg.serviceName;
|
|
305
|
-
|
|
305
|
+
const summaryMeta = previewSummary
|
|
306
|
+
? { deferred_action_payload_summary: previewSummary }
|
|
307
|
+
: {};
|
|
308
|
+
// Expiry defaults to the requester's configured fallback; task-tracking
|
|
309
|
+
// overrides from the owner policy when it drains the begin-event.
|
|
310
|
+
const expirySeconds = opts.expirySeconds ?? cfg.defaultExpirySeconds;
|
|
311
|
+
// [5] Persist deferred-action row to the REQUESTER's local table AND emit the
|
|
312
|
+
// begin-event into the requester's outbox — SAME TX (D237 Rule 3). The
|
|
313
|
+
// owner resolves approverRole + expiry when its consumer drains the row
|
|
314
|
+
// (Rule 3) — the requester carries an EMPTY default_approver_role. NO
|
|
315
|
+
// gRPC CreateTask is called.
|
|
306
316
|
const correlationId = randomUUID();
|
|
307
|
-
const row = await cfg.pgPool.begin((tx) =>
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
317
|
+
const { row, beginEventId } = await cfg.pgPool.begin(async (tx) => {
|
|
318
|
+
const inserted = await insertDeferredAction(cfg, tx, {
|
|
319
|
+
tenantId: opts.tenantId,
|
|
320
|
+
kind: def.kind,
|
|
321
|
+
requesterMembershipId: opts.requesterMembershipId,
|
|
322
|
+
deferredActionPayload: opts.deferredActionPayload,
|
|
323
|
+
idempotencyKey: opts.idempotencyKey,
|
|
324
|
+
metadata: { ...(opts.metadata ?? {}), ...summaryMeta },
|
|
325
|
+
auditCorrelationId: correlationId,
|
|
326
|
+
});
|
|
327
|
+
const { eventId } = await insertBeginEventOutboxRow(tx, {
|
|
328
|
+
tableName: cfg.outboxTableName,
|
|
329
|
+
aggregateId: inserted.id,
|
|
330
|
+
// Topic is the REQUESTER service's name (D237 Rule 3) — the cross-owner
|
|
331
|
+
// owner is carried inside the payload's owner_service, not the topic.
|
|
332
|
+
topic: approvalRequestedTopic(requesterService),
|
|
333
|
+
payload: {
|
|
334
|
+
kind: def.kind,
|
|
335
|
+
requester_service: requesterService,
|
|
336
|
+
owner_service: ownerService,
|
|
337
|
+
deferred_action_id: inserted.id,
|
|
338
|
+
idempotency_key: opts.idempotencyKey,
|
|
339
|
+
tenant_id: opts.tenantId,
|
|
340
|
+
requester_membership_id: opts.requesterMembershipId,
|
|
341
|
+
// Owner-resolved — empty default for a cross-owner kind.
|
|
342
|
+
default_approver_role: "",
|
|
343
|
+
default_expires_in_seconds: expirySeconds,
|
|
344
|
+
...(previewSummary
|
|
345
|
+
? { deferred_action_payload_summary: previewSummary }
|
|
346
|
+
: {}),
|
|
347
|
+
occurred_at_in_requester_tx_ms: Date.now(),
|
|
348
|
+
...(opts.metadata ? { metadata: opts.metadata } : {}),
|
|
349
|
+
},
|
|
350
|
+
});
|
|
351
|
+
return { row: inserted, beginEventId: eventId };
|
|
352
|
+
});
|
|
316
353
|
emitAudit({
|
|
317
354
|
tenantId: opts.tenantId,
|
|
318
355
|
action: `${requesterService}.approval.requested`,
|
|
@@ -320,76 +357,16 @@ async function runCrossOwnerSequence(cfg, def, opts) {
|
|
|
320
357
|
targetId: row.id,
|
|
321
358
|
metadata: {
|
|
322
359
|
...(opts.metadata ?? {}),
|
|
360
|
+
...summaryMeta,
|
|
323
361
|
kind: def.kind,
|
|
324
362
|
requester_membership_id: opts.requesterMembershipId,
|
|
325
363
|
audit_correlation_id: correlationId,
|
|
326
364
|
requester_service: requesterService,
|
|
327
365
|
owner_service: ownerService,
|
|
366
|
+
begin_event_id: beginEventId,
|
|
367
|
+
begin_event_transport: "outbox",
|
|
328
368
|
},
|
|
329
369
|
});
|
|
330
|
-
// [6] gRPC CreateTask. The owner resolves approverRole + expiry via
|
|
331
|
-
// GetPolicy (task-tracking, Rule 3) — the requester does NOT set
|
|
332
|
-
// assigneeRole from a local policy. Expiry defaults to the requester's
|
|
333
|
-
// configured fallback; task-tracking overrides from the owner policy.
|
|
334
|
-
const expirySeconds = opts.expirySeconds ?? cfg.defaultExpirySeconds;
|
|
335
|
-
const expiresAt = new Date(Date.now() + expirySeconds * 1000).toISOString();
|
|
336
|
-
const taskRequest = {
|
|
337
|
-
tenantId: opts.tenantId,
|
|
338
|
-
kind: `approval:${def.kind}`,
|
|
339
|
-
title: titleFor(def, opts.metadata ?? {}),
|
|
340
|
-
description: def.description,
|
|
341
|
-
// No local approverRole for a cross-owner kind — task-tracking sets the
|
|
342
|
-
// assignee from the owner's GetPolicy. Empty = "owner-resolved".
|
|
343
|
-
assigneeRole: "",
|
|
344
|
-
metadata: {
|
|
345
|
-
...(opts.metadata ?? {}),
|
|
346
|
-
approvalId: row.id,
|
|
347
|
-
deferredActionId: row.id,
|
|
348
|
-
kind: def.kind,
|
|
349
|
-
requesterMembershipId: opts.requesterMembershipId,
|
|
350
|
-
// D231 begin-event cross-owner provenance fields.
|
|
351
|
-
requester_service: requesterService,
|
|
352
|
-
owner_service: ownerService,
|
|
353
|
-
},
|
|
354
|
-
expiresAt,
|
|
355
|
-
idempotencyKey: opts.idempotencyKey,
|
|
356
|
-
sourceModule: requesterService,
|
|
357
|
-
actionButton: opts.actionButton ?? {
|
|
358
|
-
label: def.actionButtonLabel ?? "Review",
|
|
359
|
-
moduleKey: requesterService,
|
|
360
|
-
actionKey: `approval:${def.shortKind}`,
|
|
361
|
-
params: { approvalId: row.id },
|
|
362
|
-
},
|
|
363
|
-
};
|
|
364
|
-
let taskResponse;
|
|
365
|
-
try {
|
|
366
|
-
taskResponse = await cfg.taskServiceClient.createTask(taskRequest);
|
|
367
|
-
}
|
|
368
|
-
catch (err) {
|
|
369
|
-
emitAudit({
|
|
370
|
-
tenantId: opts.tenantId,
|
|
371
|
-
action: `${requesterService}.approval.task_creation_failed`,
|
|
372
|
-
targetKind: "deferred_action",
|
|
373
|
-
targetId: row.id,
|
|
374
|
-
metadata: {
|
|
375
|
-
kind: def.kind,
|
|
376
|
-
owner_service: ownerService,
|
|
377
|
-
error: err instanceof Error ? err.message : String(err),
|
|
378
|
-
},
|
|
379
|
-
});
|
|
380
|
-
inc({
|
|
381
|
-
name: "approval_task_creation_failed_total",
|
|
382
|
-
family: "request_handler",
|
|
383
|
-
labels: {
|
|
384
|
-
service: requesterService,
|
|
385
|
-
kind: def.kind,
|
|
386
|
-
reason: classifyError(err),
|
|
387
|
-
},
|
|
388
|
-
});
|
|
389
|
-
throw err;
|
|
390
|
-
}
|
|
391
|
-
// [7] Persist task_id back.
|
|
392
|
-
await cfg.pgPool.unsafe(`UPDATE ${requesterService}_deferred_actions SET task_id = $1 WHERE id = $2`, [taskResponse.taskId, row.id]);
|
|
393
370
|
inc({
|
|
394
371
|
name: "approval_requested_total",
|
|
395
372
|
family: "request_handler",
|
|
@@ -401,7 +378,8 @@ async function runCrossOwnerSequence(cfg, def, opts) {
|
|
|
401
378
|
});
|
|
402
379
|
return {
|
|
403
380
|
approvalId: row.id,
|
|
404
|
-
taskId:
|
|
381
|
+
taskId: null,
|
|
382
|
+
beginEventId,
|
|
405
383
|
status: "task_created",
|
|
406
384
|
};
|
|
407
385
|
}
|
|
@@ -477,22 +455,6 @@ function syntheticSagaId(serviceName, kind, idempotencyKey) {
|
|
|
477
455
|
h.update(idempotencyKey);
|
|
478
456
|
return `synthetic:${serviceName}:${h.digest("hex").slice(0, 32)}`;
|
|
479
457
|
}
|
|
480
|
-
function titleFor(def, metadata) {
|
|
481
|
-
if (typeof metadata.title === "string" && metadata.title.length > 0) {
|
|
482
|
-
return metadata.title;
|
|
483
|
-
}
|
|
484
|
-
return `Approve ${def.kind}`;
|
|
485
|
-
}
|
|
486
|
-
function classifyError(err) {
|
|
487
|
-
if (err && typeof err === "object" && "message" in err) {
|
|
488
|
-
const msg = String(err.message);
|
|
489
|
-
if (msg.includes("UNAVAILABLE"))
|
|
490
|
-
return "unavailable";
|
|
491
|
-
if (msg.includes("FAILED_PRECONDITION"))
|
|
492
|
-
return "failed_precondition";
|
|
493
|
-
}
|
|
494
|
-
return "unknown";
|
|
495
|
-
}
|
|
496
458
|
/** Shared finaliser when a short-circuit (opt-in disabled / self-action)
|
|
497
459
|
* handler throws. Mirrors the consumer.ts apply-tx failure path —
|
|
498
460
|
* marks the row failed + emits the failure audit + bumps the metric.
|
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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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -15,6 +15,36 @@ export interface SqlPoolExecutor extends SqlExecutor {
|
|
|
15
15
|
/** Reserved approval-service-name namespaces, mirrored from role-catalog. */
|
|
16
16
|
export declare const RESERVED_SERVICE_NAMES: readonly ["platform", "system", "pii", "audit", "dsar"];
|
|
17
17
|
export type ReservedServiceName = (typeof RESERVED_SERVICE_NAMES)[number];
|
|
18
|
+
/**
|
|
19
|
+
* Structured non-PII preview of a deferred action (D236). Distinct from the
|
|
20
|
+
* full `deferredActionPayload` (which may carry PII and is NOT surfaced into
|
|
21
|
+
* task-tracking's notification UI). This SUMMARY is the approver-facing
|
|
22
|
+
* preview — a strict allow-list, validated at request time. NO other
|
|
23
|
+
* top-level fields are permitted.
|
|
24
|
+
*/
|
|
25
|
+
export interface DeferredActionPayloadSummary {
|
|
26
|
+
/** REQUIRED; non-PII human-readable label (e.g. "Refund of 3 invoices"). */
|
|
27
|
+
preview_label: string;
|
|
28
|
+
/** OPTIONAL; non-PII secondary line. */
|
|
29
|
+
preview_subline?: string;
|
|
30
|
+
/** OPTIONAL; non-PII numeric counters (string → number). */
|
|
31
|
+
counts?: Record<string, number>;
|
|
32
|
+
}
|
|
33
|
+
/** Per-field rule in a kind's `previewSchema` (D236). */
|
|
34
|
+
export type PreviewFieldRule = "required" | "optional" | "forbidden";
|
|
35
|
+
/**
|
|
36
|
+
* Per-kind preview schema (D236), OPTIONAL on a kind def. Layered ON TOP of
|
|
37
|
+
* the global allow-list ({@link DeferredActionPayloadSummary}) — the global
|
|
38
|
+
* allow-list always applies; `previewSchema` tightens it per-kind.
|
|
39
|
+
*
|
|
40
|
+
* `counts` may be EITHER a single top-level rule (applies to the presence of
|
|
41
|
+
* the whole `counts` object) OR a nested map of specific count-key → rule.
|
|
42
|
+
*/
|
|
43
|
+
export interface PreviewSchema {
|
|
44
|
+
preview_label?: PreviewFieldRule;
|
|
45
|
+
preview_subline?: PreviewFieldRule;
|
|
46
|
+
counts?: PreviewFieldRule | Record<string, PreviewFieldRule>;
|
|
47
|
+
}
|
|
18
48
|
/** Input shape for one entry in `defineApprovalKinds({...})`. */
|
|
19
49
|
export interface ApprovalKindDefInput {
|
|
20
50
|
/** Lowercase + underscores; no dots; matches role-catalog's permission-segment rule. */
|
|
@@ -36,6 +66,11 @@ export interface ApprovalKindDefInput {
|
|
|
36
66
|
expirySeconds?: number;
|
|
37
67
|
/** Optional override for the task-tracking action-button label. */
|
|
38
68
|
actionButtonLabel?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Optional per-kind preview schema (D236). Tightens the global non-PII
|
|
71
|
+
* allow-list at request time. Absent ⇒ only the global allow-list applies.
|
|
72
|
+
*/
|
|
73
|
+
previewSchema?: PreviewSchema;
|
|
39
74
|
}
|
|
40
75
|
/** Fully-resolved kind def stored in the runtime registry. */
|
|
41
76
|
export interface ApprovalKindDef {
|
|
@@ -51,6 +86,8 @@ export interface ApprovalKindDef {
|
|
|
51
86
|
selfActionAllowed: boolean;
|
|
52
87
|
expirySeconds: number | undefined;
|
|
53
88
|
actionButtonLabel: string | undefined;
|
|
89
|
+
/** Optional per-kind preview schema (D236); `undefined` ⇒ global-only. */
|
|
90
|
+
previewSchema: PreviewSchema | undefined;
|
|
54
91
|
}
|
|
55
92
|
/** Result of `defineApprovalKinds<K, T>(serviceName, defs)`. */
|
|
56
93
|
export type DefinedKindMap<S extends string, T extends Record<string, ApprovalKindDefInput>> = {
|
|
@@ -84,8 +121,16 @@ export interface RequestApprovalOpts {
|
|
|
84
121
|
tenantId: string;
|
|
85
122
|
requesterMembershipId: string;
|
|
86
123
|
idempotencyKey: string;
|
|
87
|
-
/** Arbitrary JSON — library serialises + persists. */
|
|
124
|
+
/** Arbitrary JSON — library serialises + persists. May carry PII. */
|
|
88
125
|
deferredActionPayload: Record<string, unknown>;
|
|
126
|
+
/**
|
|
127
|
+
* Structured non-PII preview surfaced into task-tracking's notification
|
|
128
|
+
* UI (D236). Validated against the global allow-list + the kind's
|
|
129
|
+
* `previewSchema` BEFORE any row write or begin-event emit. Optional — a
|
|
130
|
+
* kind whose `previewSchema` marks `preview_label` `required` makes it
|
|
131
|
+
* mandatory; otherwise omitting it is allowed.
|
|
132
|
+
*/
|
|
133
|
+
deferredActionPayloadSummary?: DeferredActionPayloadSummary;
|
|
89
134
|
/** Surfaced into task-tracking's `task.metadata`. */
|
|
90
135
|
metadata?: Record<string, unknown>;
|
|
91
136
|
/** Override per-call (rare — prefer kind-level default). */
|
|
@@ -107,7 +152,22 @@ export interface RequestApprovalOpts {
|
|
|
107
152
|
export type RequestApprovalResultStatus = "task_created" | "self_action_executed" | "opt_in_disabled_executed" | "duplicate";
|
|
108
153
|
export interface RequestApprovalResult {
|
|
109
154
|
approvalId: string;
|
|
155
|
+
/**
|
|
156
|
+
* Deprecated as a task-tracking task id. Since D237 (v0.3.0) the begin-event
|
|
157
|
+
* is a same-tx outbox emit, not a synchronous `CreateTask`, so there is no
|
|
158
|
+
* task id at request time — task-tracking mints the task asynchronously when
|
|
159
|
+
* its consumer drains `<svc>.approval.requested.v1`. Always `null` on the
|
|
160
|
+
* `task_created` path now; retained for back-compat with the v0.2.x shape.
|
|
161
|
+
* Use {@link RequestApprovalResult.beginEventId} for the outbox event id.
|
|
162
|
+
*/
|
|
110
163
|
taskId: string | null;
|
|
164
|
+
/**
|
|
165
|
+
* The begin-event outbox row's `event_id` (uuid v7) emitted on the
|
|
166
|
+
* `task_created` path (D237). `null` on the short-circuit paths
|
|
167
|
+
* (`self_action_executed` / `opt_in_disabled_executed`) and on `duplicate`
|
|
168
|
+
* replays where the prior result is returned from the idempotency cache.
|
|
169
|
+
*/
|
|
170
|
+
beginEventId: string | null;
|
|
111
171
|
status: RequestApprovalResultStatus;
|
|
112
172
|
}
|
|
113
173
|
/** Membership lookup function — service provides per its own RBAC store. */
|
|
@@ -220,10 +280,25 @@ export interface InitApprovalConfig {
|
|
|
220
280
|
/** Optional db-rls handle (when wired). Both can coexist; rls wins. */
|
|
221
281
|
dbRls?: DbRlsLike;
|
|
222
282
|
redis: IoRedis;
|
|
223
|
-
/**
|
|
283
|
+
/**
|
|
284
|
+
* Task-tracking gRPC URL. OPTIONAL since D237 (v0.3.0) — `requestApproval`
|
|
285
|
+
* no longer calls `CreateTask` (the begin-event is a same-tx outbox emit),
|
|
286
|
+
* so the request flow does not need it. Still wired (when provided) so a
|
|
287
|
+
* service can use `TaskService.CreateTask` for NON-approval direct task
|
|
288
|
+
* creation (D237 Rule 5). Ignored if `taskServiceClient` is provided.
|
|
289
|
+
*/
|
|
224
290
|
taskServiceUrl?: string;
|
|
225
|
-
/**
|
|
291
|
+
/**
|
|
292
|
+
* Injectable task-tracking client. OPTIONAL since D237 (v0.3.0) — see
|
|
293
|
+
* `taskServiceUrl`. Supersedes `taskServiceUrl` when both are present.
|
|
294
|
+
*/
|
|
226
295
|
taskServiceClient?: TaskServiceClient;
|
|
296
|
+
/**
|
|
297
|
+
* Override the outbox table name the begin-event is INSERTed into (D237 +
|
|
298
|
+
* 01-comms § 9.1). Defaults to `'outbox'` (the @nodii/outbox-dispatcher
|
|
299
|
+
* default). Set this when the requester's outbox table is named differently.
|
|
300
|
+
*/
|
|
301
|
+
outboxTableName?: string;
|
|
227
302
|
/** Production knob: pass through to the internally-constructed
|
|
228
303
|
* `TaskTrackingGrpcClient` when `taskServiceUrl` is set. This is how
|
|
229
304
|
* adopting services layer in `@nodii/grpc-auth`'s S2S interceptor +
|
|
@@ -264,7 +339,15 @@ export interface ResolvedApprovalConfig {
|
|
|
264
339
|
pgPool: SqlPoolExecutor;
|
|
265
340
|
dbRls: DbRlsLike | undefined;
|
|
266
341
|
redis: IoRedis;
|
|
267
|
-
|
|
342
|
+
/**
|
|
343
|
+
* Resolved task-tracking client, or `undefined` since D237 — the request
|
|
344
|
+
* flow no longer requires it (begin-event is an outbox emit). Present only
|
|
345
|
+
* when the service wired `taskServiceUrl` / `taskServiceClient` for
|
|
346
|
+
* NON-approval direct task creation (D237 Rule 5).
|
|
347
|
+
*/
|
|
348
|
+
taskServiceClient: TaskServiceClient | undefined;
|
|
349
|
+
/** Resolved outbox table name for the begin-event emit (default `outbox`). */
|
|
350
|
+
outboxTableName: string;
|
|
268
351
|
membershipRolesLookup: MembershipRolesLookup;
|
|
269
352
|
defaultExpirySeconds: number;
|
|
270
353
|
consumerLeaseSeconds: number;
|