@xemahq/platform-common 0.12.7 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/index.d.ts +0 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +0 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/errors/pipeline-errors.d.ts +0 -4
  6. package/dist/lib/errors/pipeline-errors.d.ts.map +1 -1
  7. package/dist/lib/errors/pipeline-errors.js +1 -8
  8. package/dist/lib/errors/pipeline-errors.js.map +1 -1
  9. package/dist/lib/xema-path-builder.d.ts +1 -1
  10. package/dist/lib/xema-path-builder.d.ts.map +1 -1
  11. package/dist/lib/xema-path-builder.js +0 -3
  12. package/dist/lib/xema-path-builder.js.map +1 -1
  13. package/dist/nestjs/cors.config.d.ts.map +1 -1
  14. package/dist/nestjs/cors.config.js +1 -0
  15. package/dist/nestjs/cors.config.js.map +1 -1
  16. package/package.json +2 -2
  17. package/dist/lib/advisory-lock.d.ts +0 -10
  18. package/dist/lib/advisory-lock.d.ts.map +0 -1
  19. package/dist/lib/advisory-lock.js +0 -32
  20. package/dist/lib/advisory-lock.js.map +0 -1
  21. package/dist/lib/biome-database.d.ts +0 -14
  22. package/dist/lib/biome-database.d.ts.map +0 -1
  23. package/dist/lib/biome-database.js +0 -88
  24. package/dist/lib/biome-database.js.map +0 -1
  25. package/dist/lib/llm-stream/anthropic-adapter.d.ts +0 -25
  26. package/dist/lib/llm-stream/anthropic-adapter.d.ts.map +0 -1
  27. package/dist/lib/llm-stream/anthropic-adapter.js +0 -278
  28. package/dist/lib/llm-stream/anthropic-adapter.js.map +0 -1
  29. package/dist/lib/redaction/redaction.interceptor.d.ts +0 -11
  30. package/dist/lib/redaction/redaction.interceptor.d.ts.map +0 -1
  31. package/dist/lib/redaction/redaction.interceptor.js +0 -41
  32. package/dist/lib/redaction/redaction.interceptor.js.map +0 -1
  33. package/dist/lib/redaction/redaction.service.d.ts +0 -9
  34. package/dist/lib/redaction/redaction.service.d.ts.map +0 -1
  35. package/dist/lib/redaction/redaction.service.js +0 -110
  36. package/dist/lib/redaction/redaction.service.js.map +0 -1
  37. package/dist/lib/to-prisma-json.d.ts +0 -6
  38. package/dist/lib/to-prisma-json.d.ts.map +0 -1
  39. package/dist/lib/to-prisma-json.js +0 -12
  40. package/dist/lib/to-prisma-json.js.map +0 -1
  41. package/dist/lib/write-policy.d.ts +0 -30
  42. package/dist/lib/write-policy.d.ts.map +0 -1
  43. package/dist/lib/write-policy.js +0 -54
  44. package/dist/lib/write-policy.js.map +0 -1
  45. package/dist/nestjs/auth/org-authority-observations.d.ts +0 -15
  46. package/dist/nestjs/auth/org-authority-observations.d.ts.map +0 -1
  47. package/dist/nestjs/auth/org-authority-observations.js +0 -47
  48. package/dist/nestjs/auth/org-authority-observations.js.map +0 -1
  49. package/dist/nestjs/auth/org-authority.d.ts +0 -32
  50. package/dist/nestjs/auth/org-authority.d.ts.map +0 -1
  51. package/dist/nestjs/auth/org-authority.js +0 -102
  52. package/dist/nestjs/auth/org-authority.js.map +0 -1
  53. package/dist/nestjs/auth/org-claim.d.ts +0 -12
  54. package/dist/nestjs/auth/org-claim.d.ts.map +0 -1
  55. package/dist/nestjs/auth/org-claim.js +0 -25
  56. package/dist/nestjs/auth/org-claim.js.map +0 -1
  57. package/dist/nestjs/auth/org-role.d.ts +0 -13
  58. package/dist/nestjs/auth/org-role.d.ts.map +0 -1
  59. package/dist/nestjs/auth/org-role.js +0 -75
  60. package/dist/nestjs/auth/org-role.js.map +0 -1
  61. package/dist/nestjs/idempotency/prisma-idempotency.service.d.ts +0 -20
  62. package/dist/nestjs/idempotency/prisma-idempotency.service.d.ts.map +0 -1
  63. package/dist/nestjs/idempotency/prisma-idempotency.service.js +0 -58
  64. package/dist/nestjs/idempotency/prisma-idempotency.service.js.map +0 -1
@@ -1,278 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildAnthropicMessages = buildAnthropicMessages;
4
- exports.buildAnthropicTools = buildAnthropicTools;
5
- exports.parseAnthropicResponse = parseAnthropicResponse;
6
- exports.normalizeAnthropicStream = normalizeAnthropicStream;
7
- const common_1 = require("@nestjs/common");
8
- const logger = new common_1.Logger('AnthropicAdapter');
9
- function buildAnthropicMessages(messages) {
10
- const systemParts = [];
11
- const anthropicMessages = [];
12
- let toolResultBuffer = [];
13
- for (const m of messages) {
14
- if (m.role === 'system') {
15
- if (m.content)
16
- systemParts.push(m.content);
17
- continue;
18
- }
19
- if (m.role !== 'tool' && toolResultBuffer.length > 0) {
20
- anthropicMessages.push({ role: 'user', content: toolResultBuffer });
21
- toolResultBuffer = [];
22
- }
23
- if (m.role === 'assistant' && m.tool_calls?.length) {
24
- const content = [];
25
- if (m.content) {
26
- content.push({ type: 'text', text: m.content });
27
- }
28
- for (const tc of m.tool_calls) {
29
- let input;
30
- try {
31
- input = JSON.parse(tc.function.arguments);
32
- }
33
- catch {
34
- input = tc.function.arguments;
35
- }
36
- content.push({
37
- type: 'tool_use',
38
- id: tc.id,
39
- name: tc.function.name,
40
- input,
41
- });
42
- }
43
- anthropicMessages.push({ role: 'assistant', content });
44
- }
45
- else if (m.role === 'tool' && m.tool_call_id) {
46
- toolResultBuffer.push({
47
- type: 'tool_result',
48
- tool_use_id: m.tool_call_id,
49
- content: m.content ?? '',
50
- });
51
- }
52
- else if (m.role === 'assistant') {
53
- anthropicMessages.push({ role: 'assistant', content: m.content ?? '' });
54
- }
55
- else {
56
- anthropicMessages.push({ role: 'user', content: m.content ?? '' });
57
- }
58
- }
59
- if (toolResultBuffer.length > 0) {
60
- anthropicMessages.push({ role: 'user', content: toolResultBuffer });
61
- }
62
- return {
63
- system: systemParts.length > 0 ? systemParts.join('\n') : undefined,
64
- messages: anthropicMessages,
65
- };
66
- }
67
- function buildAnthropicTools(tools) {
68
- return tools.map((t) => ({
69
- name: t.function.name,
70
- description: t.function.description,
71
- input_schema: t.function.parameters,
72
- }));
73
- }
74
- function parseAnthropicResponse(body) {
75
- const blocks = body.content ?? [];
76
- let textContent = '';
77
- const toolCalls = [];
78
- for (const block of blocks) {
79
- if (block.type === 'text') {
80
- textContent += block.text;
81
- }
82
- else {
83
- toolCalls.push({
84
- id: block.id,
85
- type: 'function',
86
- function: {
87
- name: block.name,
88
- arguments: typeof block.input === 'string'
89
- ? block.input
90
- : JSON.stringify(block.input),
91
- },
92
- });
93
- }
94
- }
95
- let finishReason = 'stop';
96
- if (body.stop_reason === 'tool_use')
97
- finishReason = 'tool_calls';
98
- else if (body.stop_reason === 'max_tokens')
99
- finishReason = 'length';
100
- return {
101
- content: textContent,
102
- ...(toolCalls.length > 0 ? { toolCalls } : {}),
103
- finishReason,
104
- };
105
- }
106
- function normalizeAnthropicStream(input) {
107
- const reader = input.getReader();
108
- const decoder = new TextDecoder();
109
- const encoder = new TextEncoder();
110
- let messageId = '';
111
- let model = '';
112
- let nextToolCallIndex = 0;
113
- const toolCallIndexMap = new Map();
114
- const toolBlockHasInput = new Map();
115
- const makeChunk = (delta, finishReason = null) => `data: ${JSON.stringify({
116
- id: messageId,
117
- object: 'chat.completion.chunk',
118
- model,
119
- choices: [{ index: 0, delta, finish_reason: finishReason }],
120
- })}\n\n`;
121
- const processEvent = (parsed) => {
122
- switch (parsed.type) {
123
- case 'message_start': {
124
- const msg = parsed.message;
125
- messageId = msg.id || `msg_${Date.now()}`;
126
- model = msg.model || '';
127
- return [makeChunk({ role: 'assistant', content: '' })];
128
- }
129
- case 'content_block_start': {
130
- const block = parsed.content_block;
131
- const index = parsed.index;
132
- if (block.type === 'tool_use') {
133
- const tcIdx = nextToolCallIndex++;
134
- toolCallIndexMap.set(index, tcIdx);
135
- toolBlockHasInput.set(index, false);
136
- logger.debug(`Tool call started: index=${index} tcIdx=${tcIdx} id=${block.id} name=${block.name}`);
137
- return [
138
- makeChunk({
139
- tool_calls: [
140
- {
141
- index: tcIdx,
142
- id: block.id,
143
- type: 'function',
144
- function: { name: block.name, arguments: '' },
145
- },
146
- ],
147
- }),
148
- ];
149
- }
150
- return [];
151
- }
152
- case 'content_block_delta': {
153
- const delta = parsed.delta;
154
- const index = parsed.index;
155
- if (delta.type === 'text_delta') {
156
- return [makeChunk({ content: delta.text })];
157
- }
158
- if (delta.type === 'thinking_delta') {
159
- return [makeChunk({ reasoning_content: delta.thinking })];
160
- }
161
- if (delta.type === 'input_json_delta') {
162
- const partialJson = delta.partial_json;
163
- if (!partialJson)
164
- return [];
165
- const tcIdx = toolCallIndexMap.get(index) ?? 0;
166
- toolBlockHasInput.set(index, true);
167
- logger.debug(`Tool call args delta: index=${index} tcIdx=${tcIdx} partial_json=${JSON.stringify(partialJson)}`);
168
- return [
169
- makeChunk({
170
- tool_calls: [
171
- {
172
- index: tcIdx,
173
- function: { arguments: partialJson },
174
- },
175
- ],
176
- }),
177
- ];
178
- }
179
- return [];
180
- }
181
- case 'content_block_stop': {
182
- const index = parsed.index;
183
- if (toolCallIndexMap.has(index) && !toolBlockHasInput.get(index)) {
184
- const tcIdx = toolCallIndexMap.get(index);
185
- logger.debug(`Tool call block stopped with no input — emitting empty args: index=${index} tcIdx=${tcIdx}`);
186
- return [
187
- makeChunk({
188
- tool_calls: [
189
- {
190
- index: tcIdx,
191
- function: { arguments: '{}' },
192
- },
193
- ],
194
- }),
195
- ];
196
- }
197
- return [];
198
- }
199
- case 'message_delta': {
200
- const d = parsed.delta;
201
- let fr = 'stop';
202
- if (d.stop_reason === 'tool_use')
203
- fr = 'tool_calls';
204
- else if (d.stop_reason === 'max_tokens')
205
- fr = 'length';
206
- return [makeChunk({}, fr)];
207
- }
208
- case 'message_stop':
209
- return ['data: [DONE]\n\n'];
210
- default:
211
- return [];
212
- }
213
- };
214
- return new ReadableStream({
215
- async start(controller) {
216
- let buffer = '';
217
- try {
218
- for (;;) {
219
- const { done, value } = await reader.read();
220
- if (done)
221
- break;
222
- buffer += decoder.decode(value, { stream: true });
223
- const lines = buffer.split('\n');
224
- buffer = lines.pop() ?? '';
225
- for (const line of lines) {
226
- const trimmed = line.trim();
227
- if (!trimmed.startsWith('data: '))
228
- continue;
229
- const dataStr = trimmed.slice(6).trim();
230
- if (dataStr === '[DONE]') {
231
- controller.enqueue(encoder.encode('data: [DONE]\n\n'));
232
- continue;
233
- }
234
- let parsed;
235
- try {
236
- parsed = JSON.parse(dataStr);
237
- }
238
- catch {
239
- logger.warn(`Skipping unparseable SSE line: ${dataStr.slice(0, 200)}`);
240
- continue;
241
- }
242
- for (const chunk of processEvent(parsed)) {
243
- controller.enqueue(encoder.encode(chunk));
244
- }
245
- }
246
- }
247
- if (buffer.trim()) {
248
- const trimmed = buffer.trim();
249
- if (trimmed.startsWith('data: ')) {
250
- const dataStr = trimmed.slice(6).trim();
251
- if (dataStr === '[DONE]') {
252
- controller.enqueue(encoder.encode('data: [DONE]\n\n'));
253
- }
254
- else {
255
- try {
256
- const parsed = JSON.parse(dataStr);
257
- for (const chunk of processEvent(parsed)) {
258
- controller.enqueue(encoder.encode(chunk));
259
- }
260
- }
261
- catch {
262
- logger.warn(`Skipping unparseable final SSE buffer: ${dataStr.slice(0, 200)}`);
263
- }
264
- }
265
- }
266
- }
267
- controller.close();
268
- }
269
- catch (err) {
270
- controller.error(err);
271
- }
272
- finally {
273
- reader.releaseLock();
274
- }
275
- },
276
- });
277
- }
278
- //# sourceMappingURL=anthropic-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-adapter.js","sourceRoot":"","sources":["../../../src/lib/llm-stream/anthropic-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
- import { Observable } from 'rxjs';
3
- import { RedactionService } from './redaction.service';
4
- export declare const REDACT_RESPONSE_KEY = "xema:redact-response";
5
- export declare const RedactResponse: () => ClassDecorator & MethodDecorator;
6
- export declare class RedactionInterceptor implements NestInterceptor {
7
- private readonly redaction;
8
- constructor(redaction: RedactionService);
9
- intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
10
- }
11
- //# sourceMappingURL=redaction.interceptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redaction.interceptor.d.ts","sourceRoot":"","sources":["../../../src/lib/redaction/redaction.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAEhB,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAO,MAAM,MAAM,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAavD,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,cAAc,QAAO,cAAc,GAAG,eACX,CAAC;AAEzC,qBACa,oBAAqB,YAAW,eAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,gBAAgB;IAExD,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CAU7E"}
@@ -1,41 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RedactionInterceptor = exports.RedactResponse = exports.REDACT_RESPONSE_KEY = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const rxjs_1 = require("rxjs");
15
- const decorator_metadata_1 = require("../../nestjs/decorator-metadata");
16
- const redaction_service_1 = require("./redaction.service");
17
- exports.REDACT_RESPONSE_KEY = 'xema:redact-response';
18
- const RedactResponse = () => (0, common_1.SetMetadata)(exports.REDACT_RESPONSE_KEY, true);
19
- exports.RedactResponse = RedactResponse;
20
- let RedactionInterceptor = class RedactionInterceptor {
21
- redaction;
22
- constructor(redaction) {
23
- this.redaction = redaction;
24
- }
25
- intercept(context, next) {
26
- const enabled = (0, decorator_metadata_1.readDecoratorOverride)(exports.REDACT_RESPONSE_KEY, [
27
- context.getHandler(),
28
- context.getClass(),
29
- ]);
30
- if (!enabled) {
31
- return next.handle();
32
- }
33
- return next.handle().pipe((0, rxjs_1.map)((value) => this.redaction.redact(value)));
34
- }
35
- };
36
- exports.RedactionInterceptor = RedactionInterceptor;
37
- exports.RedactionInterceptor = RedactionInterceptor = __decorate([
38
- (0, common_1.Injectable)(),
39
- __metadata("design:paramtypes", [redaction_service_1.RedactionService])
40
- ], RedactionInterceptor);
41
- //# sourceMappingURL=redaction.interceptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redaction.interceptor.js","sourceRoot":"","sources":["../../../src/lib/redaction/redaction.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AACxB,+BAAuC;AAEvC,wEAAwE;AACxE,2DAAuD;AAa1C,QAAA,mBAAmB,GAAG,sBAAsB,CAAC;AACnD,MAAM,cAAc,GAAG,GAAqC,EAAE,CACnE,IAAA,oBAAW,EAAC,2BAAmB,EAAE,IAAI,CAAC,CAAC;AAD5B,QAAA,cAAc,kBACc;AAGlC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACF;IAA7B,YAA6B,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAE5D,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,OAAO,GAAG,IAAA,0CAAqB,EAAU,2BAAmB,EAAE;YAClE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;CACF,CAAA;AAbY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAE6B,oCAAgB;GAD7C,oBAAoB,CAahC"}
@@ -1,9 +0,0 @@
1
- import type { RedactionRule } from './redaction-rule';
2
- export declare class RedactionService {
3
- private readonly rules;
4
- constructor();
5
- static withRules(rules: readonly RedactionRule[]): RedactionService;
6
- redact<T>(value: T): T;
7
- private walk;
8
- }
9
- //# sourceMappingURL=redaction.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redaction.service.d.ts","sourceRoot":"","sources":["../../../src/lib/redaction/redaction.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAsBtD,qBACa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;;IAajD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,gBAAgB;IAUnE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAItB,OAAO,CAAC,IAAI;CAqDb"}
@@ -1,110 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"redaction.service.js","sourceRoot":"","sources":["../../../src/lib/redaction/redaction.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { ZodType } from 'zod';
2
- export declare function toPrismaJson<T>(schema: ZodType<T>, value: T, context?: {
3
- workItemId?: string;
4
- hint?: string;
5
- }): unknown;
6
- //# sourceMappingURL=to-prisma-json.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,12 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,30 +0,0 @@
1
- export interface WritePolicyContext {
2
- allowedPageSlugs: string[];
3
- allowedPageSlugPrefixes: string[];
4
- allowedParentPageId: string | null;
5
- allowedBacklogParent: string | null;
6
- backlogMode: 'canonical' | 'proposal';
7
- backlogCanonicalPrerequisites?: {
8
- parentPredetermined: boolean;
9
- ownershipClear: boolean;
10
- duplicateDetectionDeterministic: boolean;
11
- };
12
- coordinatorOwned: boolean;
13
- memoryWriteAllowed: boolean;
14
- createPagesDisabled: boolean;
15
- editOnlyPageSlugs: string[];
16
- authorizedWritePaths: string[];
17
- authorizedReadPaths: string[];
18
- }
19
- export declare function parseWritePolicy(headerValue: string | undefined): WritePolicyContext;
20
- export declare function validatePageSlugWrite(policy: WritePolicyContext, slug: string): string | null;
21
- export declare function validateParentPageWrite(policy: WritePolicyContext, parentPageId: string | null | undefined): string | null;
22
- export declare function validateMemoryWrite(policy: WritePolicyContext): string | null;
23
- export declare function validateBacklogWrite(policy: WritePolicyContext): {
24
- allowed: true;
25
- mode: 'canonical' | 'proposal';
26
- } | {
27
- allowed: false;
28
- reason: string;
29
- };
30
- //# sourceMappingURL=write-policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-policy.d.ts","sourceRoot":"","sources":["../../src/lib/write-policy.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,WAAW,GAAG,UAAU,CAAC;IACtC,6BAA6B,CAAC,EAAE;QAC9B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,cAAc,EAAE,OAAO,CAAC;QACxB,+BAA+B,EAAE,OAAO,CAAC;KAC1C,CAAC;IACF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAaD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,kBAAkB,CAWpB;AAMD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAQf;AAOD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,GAAG,IAAI,CASf;AAKD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,kBAAkB,GACzB,MAAM,GAAG,IAAI,CAMf;AAKD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CASxF"}
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseWritePolicy = parseWritePolicy;
4
- exports.validatePageSlugWrite = validatePageSlugWrite;
5
- exports.validateParentPageWrite = validateParentPageWrite;
6
- exports.validateMemoryWrite = validateMemoryWrite;
7
- exports.validateBacklogWrite = validateBacklogWrite;
8
- const pipeline_errors_1 = require("./errors/pipeline-errors");
9
- function parseWritePolicy(headerValue) {
10
- if (!headerValue) {
11
- throw new pipeline_errors_1.MissingWritePolicyError();
12
- }
13
- try {
14
- return JSON.parse(headerValue);
15
- }
16
- catch (err) {
17
- throw new Error(`Malformed X-Write-Policy header — expected JSON-encoded WritePolicyContext. ${err instanceof Error ? err.message : String(err)}`);
18
- }
19
- }
20
- function validatePageSlugWrite(policy, slug) {
21
- if (policy.allowedPageSlugs.includes(slug))
22
- return null;
23
- for (const prefix of policy.allowedPageSlugPrefixes) {
24
- if (slug.startsWith(prefix))
25
- return null;
26
- }
27
- return `Write policy violation: page slug "${slug}" is not in the allowed set. Allowed slugs: [${policy.allowedPageSlugs.join(', ')}], allowed prefixes: [${policy.allowedPageSlugPrefixes.join(', ')}]`;
28
- }
29
- function validateParentPageWrite(policy, parentPageId) {
30
- if (!policy.allowedParentPageId)
31
- return null;
32
- if (!parentPageId)
33
- return null;
34
- if (parentPageId !== policy.allowedParentPageId) {
35
- return `Write policy violation: parent page "${parentPageId}" is not the allowed parent "${policy.allowedParentPageId}"`;
36
- }
37
- return null;
38
- }
39
- function validateMemoryWrite(policy) {
40
- if (!policy.memoryWriteAllowed) {
41
- return 'Write policy violation: memory writes are not allowed for this agent.';
42
- }
43
- return null;
44
- }
45
- function validateBacklogWrite(policy) {
46
- if (policy.backlogMode === 'proposal') {
47
- return {
48
- allowed: false,
49
- reason: 'Write policy violation: backlog is in proposal mode — emit backlog proposals in your structured output instead of calling create_item directly.',
50
- };
51
- }
52
- return { allowed: true, mode: policy.backlogMode };
53
- }
54
- //# sourceMappingURL=write-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-policy.js","sourceRoot":"","sources":["../../src/lib/write-policy.ts"],"names":[],"mappings":";;AAkDA,4CAaC;AAMD,sDAWC;AAOD,0DAYC;AAKD,kDAQC;AAKD,oDAWC;AA9GD,8DAAmE;AAgCnE,SAAgB,gBAAgB,CAC9B,WAA+B;IAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,yCAAuB,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAuB,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+EAA+E,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAClI,CAAC;IACJ,CAAC;AACH,CAAC;AAMD,SAAgB,qBAAqB,CACnC,MAA0B,EAC1B,IAAY;IAEZ,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC3C,CAAC;IAED,OAAO,sCAAsC,IAAI,gDAAgD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3M,CAAC;AAOD,SAAgB,uBAAuB,CACrC,MAA0B,EAC1B,YAAuC;IAEvC,IAAI,CAAC,MAAM,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,YAAY,KAAK,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAChD,OAAO,wCAAwC,YAAY,gCAAgC,MAAM,CAAC,mBAAmB,GAAG,CAAC;IAC3H,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,SAAgB,mBAAmB,CACjC,MAA0B;IAE1B,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/B,OAAO,uEAAuE,CAAC;IACjF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,SAAgB,oBAAoB,CAClC,MAA0B;IAE1B,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,iJAAiJ;SAC1J,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC"}
@@ -1,15 +0,0 @@
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
@@ -1 +0,0 @@
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"}