content-moderation-sdk 0.0.1 → 0.1.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/LICENSE +21 -0
- package/README.md +275 -0
- package/content-moderation-sdk.jpg +0 -0
- package/dist/azure.d.ts +38 -0
- package/dist/azure.d.ts.map +1 -0
- package/dist/azure.js +114 -0
- package/dist/azure.js.map +1 -0
- package/dist/core.d.ts +3 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +313 -0
- package/dist/core.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +77 -0
- package/dist/errors.js.map +1 -0
- package/dist/http.d.ts +9 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +87 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/mistral.d.ts +23 -0
- package/dist/mistral.d.ts.map +1 -0
- package/dist/mistral.js +81 -0
- package/dist/mistral.js.map +1 -0
- package/dist/openai.d.ts +28 -0
- package/dist/openai.d.ts.map +1 -0
- package/dist/openai.js +105 -0
- package/dist/openai.js.map +1 -0
- package/dist/testing.d.ts +18 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +44 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +164 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +26 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +229 -0
- package/dist/utils.js.map +1 -0
- package/package.json +76 -1
- package/src/azure.ts +191 -0
- package/src/core.ts +440 -0
- package/src/errors.ts +109 -0
- package/src/http.ts +94 -0
- package/src/index.ts +43 -0
- package/src/mistral.ts +124 -0
- package/src/openai.ts +162 -0
- package/src/testing.ts +85 -0
- package/src/types.ts +241 -0
- package/src/utils.ts +281 -0
package/dist/core.js
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { ModerationAbortError, ModerationAdapterError, ModerationAdapterNotFoundError, ModerationRouteError, ModerationValidationError, } from "./errors.js";
|
|
2
|
+
import { assertModerationInput, flattenConversation, isAbortLike, normalizeAdapterResult, normalizeSdkError, raceWithAbort, sleepWithAbort, throwIfAborted, toAdapterError, } from "./utils.js";
|
|
3
|
+
const defaultDelay = (attempt) => Math.min(100 * 2 ** (attempt - 1), 2_000);
|
|
4
|
+
export function createModerationClient(options) {
|
|
5
|
+
if (options.adapters.length === 0) {
|
|
6
|
+
throw new ModerationValidationError("createModerationClient requires at least one adapter.");
|
|
7
|
+
}
|
|
8
|
+
const adapters = new Map();
|
|
9
|
+
for (const adapter of options.adapters) {
|
|
10
|
+
if (!adapter.name || typeof adapter.name !== "string") {
|
|
11
|
+
throw new ModerationValidationError("Every moderation adapter requires a name.");
|
|
12
|
+
}
|
|
13
|
+
if (adapters.has(adapter.name)) {
|
|
14
|
+
throw new ModerationValidationError(`Duplicate moderation adapter "${adapter.name}".`);
|
|
15
|
+
}
|
|
16
|
+
adapters.set(adapter.name, adapter);
|
|
17
|
+
}
|
|
18
|
+
const defaultAdapter = options.defaultAdapter ?? options.adapters[0]?.name;
|
|
19
|
+
if (!defaultAdapter) {
|
|
20
|
+
throw new ModerationValidationError("createModerationClient requires a default adapter.");
|
|
21
|
+
}
|
|
22
|
+
requireAdapter(adapters, defaultAdapter);
|
|
23
|
+
validateRetry(options.retry);
|
|
24
|
+
validateFallback(adapters, options.fallback);
|
|
25
|
+
const validate = async (input, requestOptions) => {
|
|
26
|
+
throwIfAborted(requestOptions?.signal);
|
|
27
|
+
validateRetry(requestOptions?.retry ?? options.retry);
|
|
28
|
+
const route = resolveRoute(defaultAdapter, options.fallback, requestOptions);
|
|
29
|
+
validateFallback(adapters, route.fallback);
|
|
30
|
+
const prepared = await prepareRoutes(adapters, route.names, input);
|
|
31
|
+
return {
|
|
32
|
+
adapter: route.primary,
|
|
33
|
+
routes: route.names.map((name) => ({
|
|
34
|
+
adapter: name,
|
|
35
|
+
mode: prepared.get(name)?.mode ?? "native",
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
const moderate = async (input, requestOptions) => {
|
|
40
|
+
throwIfAborted(requestOptions?.signal);
|
|
41
|
+
validateRetry(requestOptions?.retry ?? options.retry);
|
|
42
|
+
const route = resolveRoute(defaultAdapter, options.fallback, requestOptions);
|
|
43
|
+
validateFallback(adapters, route.fallback);
|
|
44
|
+
const prepared = await prepareRoutes(adapters, route.names, input);
|
|
45
|
+
const failures = [];
|
|
46
|
+
for (const [index, name] of route.names.entries()) {
|
|
47
|
+
const candidate = prepared.get(name);
|
|
48
|
+
if (!candidate) {
|
|
49
|
+
throw new ModerationValidationError(`Moderation route "${name}" was not prepared.`);
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
return await attemptAdapter({
|
|
53
|
+
candidate,
|
|
54
|
+
originalInput: input,
|
|
55
|
+
requestOptions,
|
|
56
|
+
retry: requestOptions?.retry ?? options.retry,
|
|
57
|
+
hooks: options.hooks,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof ModerationAbortError || error instanceof ModerationValidationError) {
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
const failure = unwrapAttemptFailure(name, error);
|
|
65
|
+
failures.push(failure.error);
|
|
66
|
+
await invokeHook(options.hooks?.onError, {
|
|
67
|
+
adapter: name,
|
|
68
|
+
input,
|
|
69
|
+
inputType: input.type,
|
|
70
|
+
mode: candidate.mode,
|
|
71
|
+
attempt: failure.attempt,
|
|
72
|
+
metadata: requestOptions?.metadata,
|
|
73
|
+
error: failure.error,
|
|
74
|
+
});
|
|
75
|
+
const nextAdapter = route.names[index + 1];
|
|
76
|
+
if (!nextAdapter)
|
|
77
|
+
break;
|
|
78
|
+
const shouldFallback = route.fallback?.shouldFallback;
|
|
79
|
+
if (shouldFallback) {
|
|
80
|
+
let shouldContinue;
|
|
81
|
+
try {
|
|
82
|
+
shouldContinue = await shouldFallback(failure.error, nextAdapter);
|
|
83
|
+
}
|
|
84
|
+
catch (predicateError) {
|
|
85
|
+
throw new ModerationValidationError("The moderation fallback predicate threw an error.", predicateError);
|
|
86
|
+
}
|
|
87
|
+
if (!shouldContinue)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
throw new ModerationRouteError(failures);
|
|
93
|
+
};
|
|
94
|
+
const moderateMany = async (items, requestOptions) => {
|
|
95
|
+
const results = [];
|
|
96
|
+
for (const [index, item] of items.entries()) {
|
|
97
|
+
try {
|
|
98
|
+
const result = await moderate(item.input, mergeOptions(requestOptions, item.options));
|
|
99
|
+
results.push({ ok: true, index, result });
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
results.push({ ok: false, index, error: normalizeSdkError(error) });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return results;
|
|
106
|
+
};
|
|
107
|
+
const client = {
|
|
108
|
+
adapters,
|
|
109
|
+
defaultAdapter,
|
|
110
|
+
validate,
|
|
111
|
+
moderate,
|
|
112
|
+
moderateMany,
|
|
113
|
+
adapter(name) {
|
|
114
|
+
return requireAdapter(adapters, name);
|
|
115
|
+
},
|
|
116
|
+
withAdapter(name) {
|
|
117
|
+
requireAdapter(adapters, name);
|
|
118
|
+
return {
|
|
119
|
+
validate(input, boundOptions) {
|
|
120
|
+
return validate(input, { ...boundOptions, adapter: name });
|
|
121
|
+
},
|
|
122
|
+
moderate(input, boundOptions) {
|
|
123
|
+
return moderate(input, { ...boundOptions, adapter: name });
|
|
124
|
+
},
|
|
125
|
+
moderateMany(items, boundOptions) {
|
|
126
|
+
return moderateMany(items, { ...boundOptions, adapter: name });
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
return client;
|
|
132
|
+
}
|
|
133
|
+
async function prepareRoutes(adapters, names, input) {
|
|
134
|
+
assertModerationInput(input);
|
|
135
|
+
const prepared = new Map();
|
|
136
|
+
for (const name of names) {
|
|
137
|
+
const adapter = requireAdapter(adapters, name);
|
|
138
|
+
const candidate = prepareInput(adapter, input);
|
|
139
|
+
try {
|
|
140
|
+
await adapter.validate?.(candidate.input, {
|
|
141
|
+
adapter: name,
|
|
142
|
+
inputType: input.type,
|
|
143
|
+
mode: candidate.mode,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (error instanceof ModerationValidationError)
|
|
148
|
+
throw error;
|
|
149
|
+
throw new ModerationValidationError(`Moderation adapter "${name}" validation failed.`, {
|
|
150
|
+
adapter: name,
|
|
151
|
+
cause: error,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
prepared.set(name, { adapter, ...candidate });
|
|
155
|
+
}
|
|
156
|
+
return prepared;
|
|
157
|
+
}
|
|
158
|
+
function prepareInput(adapter, input) {
|
|
159
|
+
if (input.type === "text") {
|
|
160
|
+
if (!adapter.capabilities.text)
|
|
161
|
+
unsupportedInput(adapter.name, "text");
|
|
162
|
+
return { input, mode: "native" };
|
|
163
|
+
}
|
|
164
|
+
if (input.type === "image") {
|
|
165
|
+
if (!adapter.capabilities.image)
|
|
166
|
+
unsupportedInput(adapter.name, "image");
|
|
167
|
+
return { input, mode: "native" };
|
|
168
|
+
}
|
|
169
|
+
if (adapter.capabilities.conversation === "unsupported") {
|
|
170
|
+
unsupportedInput(adapter.name, "conversation");
|
|
171
|
+
}
|
|
172
|
+
if (adapter.capabilities.conversation === "flattened") {
|
|
173
|
+
return {
|
|
174
|
+
input: { type: "text", text: flattenConversation(input) },
|
|
175
|
+
mode: "flattened",
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return { input, mode: "native" };
|
|
179
|
+
}
|
|
180
|
+
function unsupportedInput(adapter, inputType) {
|
|
181
|
+
throw new ModerationValidationError(`Moderation adapter "${adapter}" does not support ${inputType} input.`, { adapter, inputType });
|
|
182
|
+
}
|
|
183
|
+
async function attemptAdapter(input) {
|
|
184
|
+
const maxAttempts = input.retry?.maxAttempts ?? 1;
|
|
185
|
+
const shouldRetry = input.retry?.shouldRetry ?? ((error) => error.retryable);
|
|
186
|
+
const delayFor = input.retry?.delay ?? defaultDelay;
|
|
187
|
+
const name = input.candidate.adapter.name;
|
|
188
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
189
|
+
const hookEvent = {
|
|
190
|
+
adapter: name,
|
|
191
|
+
input: input.originalInput,
|
|
192
|
+
inputType: input.originalInput.type,
|
|
193
|
+
mode: input.candidate.mode,
|
|
194
|
+
attempt,
|
|
195
|
+
metadata: input.requestOptions?.metadata,
|
|
196
|
+
};
|
|
197
|
+
await invokeHook(input.hooks?.beforeModerate, hookEvent);
|
|
198
|
+
throwIfAborted(input.requestOptions?.signal);
|
|
199
|
+
try {
|
|
200
|
+
const context = {
|
|
201
|
+
adapter: name,
|
|
202
|
+
inputType: input.originalInput.type,
|
|
203
|
+
mode: input.candidate.mode,
|
|
204
|
+
attempt,
|
|
205
|
+
signal: input.requestOptions?.signal,
|
|
206
|
+
metadata: input.requestOptions?.metadata,
|
|
207
|
+
};
|
|
208
|
+
const operation = Promise.resolve(input.candidate.adapter.moderate(input.candidate.input, context));
|
|
209
|
+
const adapterResult = await raceWithAbort(operation, input.requestOptions?.signal);
|
|
210
|
+
const normalized = normalizeAdapterResult(name, adapterResult);
|
|
211
|
+
const result = {
|
|
212
|
+
...normalized,
|
|
213
|
+
inputType: input.originalInput.type,
|
|
214
|
+
mode: input.candidate.mode,
|
|
215
|
+
};
|
|
216
|
+
await invokeHook(input.hooks?.afterModerate, { ...hookEvent, result });
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
if (isAbortLike(error)) {
|
|
221
|
+
throw error instanceof ModerationAbortError
|
|
222
|
+
? error
|
|
223
|
+
: new ModerationAbortError(input.requestOptions?.signal?.reason ?? error);
|
|
224
|
+
}
|
|
225
|
+
if (error instanceof ModerationValidationError)
|
|
226
|
+
throw error;
|
|
227
|
+
const normalized = toAdapterError(name, error);
|
|
228
|
+
if (attempt >= maxAttempts) {
|
|
229
|
+
throw new AdapterAttemptFailure(normalized, attempt);
|
|
230
|
+
}
|
|
231
|
+
let retry;
|
|
232
|
+
try {
|
|
233
|
+
retry = shouldRetry(normalized, attempt);
|
|
234
|
+
}
|
|
235
|
+
catch (callbackError) {
|
|
236
|
+
throw new ModerationValidationError("The moderation retry shouldRetry callback threw an error.", callbackError);
|
|
237
|
+
}
|
|
238
|
+
if (!retry)
|
|
239
|
+
throw new AdapterAttemptFailure(normalized, attempt);
|
|
240
|
+
let delayMs;
|
|
241
|
+
try {
|
|
242
|
+
delayMs = delayFor(attempt, normalized);
|
|
243
|
+
}
|
|
244
|
+
catch (callbackError) {
|
|
245
|
+
throw new ModerationValidationError("The moderation retry delay callback threw an error.", callbackError);
|
|
246
|
+
}
|
|
247
|
+
if (!Number.isFinite(delayMs) || delayMs < 0) {
|
|
248
|
+
throw new ModerationValidationError("Moderation retry delay must be a non-negative number.", {
|
|
249
|
+
attempt,
|
|
250
|
+
delayMs,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
await invokeHook(input.hooks?.onRetry, {
|
|
254
|
+
...hookEvent,
|
|
255
|
+
error: normalized,
|
|
256
|
+
nextAttempt: attempt + 1,
|
|
257
|
+
delayMs,
|
|
258
|
+
});
|
|
259
|
+
await sleepWithAbort(delayMs, input.requestOptions?.signal);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
throw new ModerationValidationError("Moderation retry loop exited unexpectedly.");
|
|
263
|
+
}
|
|
264
|
+
class AdapterAttemptFailure {
|
|
265
|
+
error;
|
|
266
|
+
attempt;
|
|
267
|
+
constructor(error, attempt) {
|
|
268
|
+
this.error = error;
|
|
269
|
+
this.attempt = attempt;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function unwrapAttemptFailure(adapter, error) {
|
|
273
|
+
if (error instanceof AdapterAttemptFailure)
|
|
274
|
+
return error;
|
|
275
|
+
return new AdapterAttemptFailure(toAdapterError(adapter, error), 1);
|
|
276
|
+
}
|
|
277
|
+
function resolveRoute(defaultAdapter, clientFallback, requestOptions) {
|
|
278
|
+
const primary = requestOptions?.adapter ?? defaultAdapter;
|
|
279
|
+
const fallback = requestOptions?.fallback ?? clientFallback;
|
|
280
|
+
const names = [primary, ...(fallback?.adapters ?? [])].filter((name, index, route) => route.indexOf(name) === index);
|
|
281
|
+
return { primary, names, fallback };
|
|
282
|
+
}
|
|
283
|
+
function validateFallback(adapters, fallback) {
|
|
284
|
+
for (const name of fallback?.adapters ?? [])
|
|
285
|
+
requireAdapter(adapters, name);
|
|
286
|
+
}
|
|
287
|
+
function validateRetry(retry) {
|
|
288
|
+
if (retry?.maxAttempts === undefined)
|
|
289
|
+
return;
|
|
290
|
+
if (!Number.isInteger(retry.maxAttempts) || retry.maxAttempts < 1) {
|
|
291
|
+
throw new ModerationValidationError("Moderation retry maxAttempts must be an integer of at least 1.");
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function requireAdapter(adapters, name) {
|
|
295
|
+
const adapter = adapters.get(name);
|
|
296
|
+
if (!adapter)
|
|
297
|
+
throw new ModerationAdapterNotFoundError(name);
|
|
298
|
+
return adapter;
|
|
299
|
+
}
|
|
300
|
+
function mergeOptions(base, item) {
|
|
301
|
+
if (!base && !item)
|
|
302
|
+
return undefined;
|
|
303
|
+
return { ...base, ...item };
|
|
304
|
+
}
|
|
305
|
+
async function invokeHook(hook, event) {
|
|
306
|
+
try {
|
|
307
|
+
await hook?.(event);
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
// Hooks are best-effort observers and must never alter moderation behavior.
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type ModerationErrorCode = "validation_error" | "adapter_not_found" | "adapter_error" | "route_error" | "aborted" | "internal_error";
|
|
2
|
+
export type ModerationSdkErrorOptions = {
|
|
3
|
+
code: ModerationErrorCode | (string & {});
|
|
4
|
+
adapter?: string;
|
|
5
|
+
status?: number;
|
|
6
|
+
retryable?: boolean;
|
|
7
|
+
details?: unknown;
|
|
8
|
+
cause?: unknown;
|
|
9
|
+
};
|
|
10
|
+
export declare class ModerationSdkError extends Error {
|
|
11
|
+
readonly code: ModerationSdkErrorOptions["code"];
|
|
12
|
+
readonly adapter?: string;
|
|
13
|
+
readonly status?: number;
|
|
14
|
+
readonly retryable: boolean;
|
|
15
|
+
readonly details?: unknown;
|
|
16
|
+
constructor(message: string, options: ModerationSdkErrorOptions);
|
|
17
|
+
toJSON(): Readonly<Record<string, unknown>>;
|
|
18
|
+
}
|
|
19
|
+
export declare class ModerationValidationError extends ModerationSdkError {
|
|
20
|
+
constructor(message: string, details?: unknown);
|
|
21
|
+
}
|
|
22
|
+
export declare class ModerationAdapterNotFoundError extends ModerationSdkError {
|
|
23
|
+
constructor(adapter: string);
|
|
24
|
+
}
|
|
25
|
+
export type ModerationAdapterErrorOptions = Omit<ModerationSdkErrorOptions, "code" | "adapter"> & {
|
|
26
|
+
adapter: string;
|
|
27
|
+
code?: string;
|
|
28
|
+
};
|
|
29
|
+
export declare class ModerationAdapterError extends ModerationSdkError {
|
|
30
|
+
readonly adapter: string;
|
|
31
|
+
constructor(message: string, options: ModerationAdapterErrorOptions);
|
|
32
|
+
}
|
|
33
|
+
export declare class ModerationRouteError extends ModerationSdkError {
|
|
34
|
+
readonly failures: readonly ModerationAdapterError[];
|
|
35
|
+
constructor(failures: readonly ModerationAdapterError[]);
|
|
36
|
+
}
|
|
37
|
+
export declare class ModerationAbortError extends ModerationSdkError {
|
|
38
|
+
constructor(reason?: unknown);
|
|
39
|
+
}
|
|
40
|
+
export declare function isRetryableModerationError(error: unknown): error is ModerationSdkError;
|
|
41
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,SAAS,GACT,gBAAgB,CAAC;AAErB,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB;IAU/D,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAO5C;AAED,qBAAa,yBAA0B,SAAQ,kBAAkB;gBACnD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED,qBAAa,8BAA+B,SAAQ,kBAAkB;gBACxD,OAAO,EAAE,MAAM;CAO5B;AAED,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG;IAChG,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAiB,OAAO,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B;CAWpE;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;gBAEzC,QAAQ,EAAE,SAAS,sBAAsB,EAAE;CAUxD;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB;gBAC9C,MAAM,CAAC,EAAE,OAAO;CAO7B;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEtF"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export class ModerationSdkError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
adapter;
|
|
4
|
+
status;
|
|
5
|
+
retryable;
|
|
6
|
+
details;
|
|
7
|
+
constructor(message, options) {
|
|
8
|
+
super(message, { cause: options.cause });
|
|
9
|
+
this.name = "ModerationSdkError";
|
|
10
|
+
this.code = options.code;
|
|
11
|
+
this.adapter = options.adapter;
|
|
12
|
+
this.status = options.status;
|
|
13
|
+
this.retryable = options.retryable ?? false;
|
|
14
|
+
this.details = options.details;
|
|
15
|
+
}
|
|
16
|
+
toJSON() {
|
|
17
|
+
return Object.fromEntries([
|
|
18
|
+
...Object.entries(this),
|
|
19
|
+
["name", this.name],
|
|
20
|
+
["message", this.message],
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class ModerationValidationError extends ModerationSdkError {
|
|
25
|
+
constructor(message, details) {
|
|
26
|
+
super(message, { code: "validation_error", details });
|
|
27
|
+
this.name = "ModerationValidationError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class ModerationAdapterNotFoundError extends ModerationSdkError {
|
|
31
|
+
constructor(adapter) {
|
|
32
|
+
super(`Moderation adapter "${adapter}" is not registered.`, {
|
|
33
|
+
code: "adapter_not_found",
|
|
34
|
+
adapter,
|
|
35
|
+
});
|
|
36
|
+
this.name = "ModerationAdapterNotFoundError";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class ModerationAdapterError extends ModerationSdkError {
|
|
40
|
+
constructor(message, options) {
|
|
41
|
+
super(message, {
|
|
42
|
+
code: options.code ?? "adapter_error",
|
|
43
|
+
adapter: options.adapter,
|
|
44
|
+
status: options.status,
|
|
45
|
+
retryable: options.retryable,
|
|
46
|
+
details: options.details,
|
|
47
|
+
cause: options.cause,
|
|
48
|
+
});
|
|
49
|
+
this.name = "ModerationAdapterError";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class ModerationRouteError extends ModerationSdkError {
|
|
53
|
+
failures;
|
|
54
|
+
constructor(failures) {
|
|
55
|
+
super("Every moderation adapter in the route failed.", {
|
|
56
|
+
code: "route_error",
|
|
57
|
+
retryable: failures.some((failure) => failure.retryable),
|
|
58
|
+
details: failures,
|
|
59
|
+
cause: failures.at(-1),
|
|
60
|
+
});
|
|
61
|
+
this.name = "ModerationRouteError";
|
|
62
|
+
this.failures = failures;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export class ModerationAbortError extends ModerationSdkError {
|
|
66
|
+
constructor(reason) {
|
|
67
|
+
super("Moderation was aborted.", {
|
|
68
|
+
code: "aborted",
|
|
69
|
+
cause: reason,
|
|
70
|
+
});
|
|
71
|
+
this.name = "ModerationAbortError";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function isRetryableModerationError(error) {
|
|
75
|
+
return error instanceof ModerationSdkError && error.retryable;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function isRetryableHttpStatus(status: number): boolean;
|
|
2
|
+
export declare function requestJson<T>(input: {
|
|
3
|
+
adapter: string;
|
|
4
|
+
provider: string;
|
|
5
|
+
fetcher: typeof fetch;
|
|
6
|
+
url: string;
|
|
7
|
+
init: RequestInit;
|
|
8
|
+
}): Promise<T>;
|
|
9
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;CACnB,GAAG,OAAO,CAAC,CAAC,CAAC,CAmDb"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ModerationAbortError, ModerationAdapterError } from "./errors.js";
|
|
2
|
+
import { isAbortLike } from "./utils.js";
|
|
3
|
+
export function isRetryableHttpStatus(status) {
|
|
4
|
+
return status === 408 || status === 409 || status === 425 || status === 429 || status >= 500;
|
|
5
|
+
}
|
|
6
|
+
export async function requestJson(input) {
|
|
7
|
+
let response;
|
|
8
|
+
try {
|
|
9
|
+
response = await input.fetcher(input.url, input.init);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
if (input.init.signal?.aborted || isAbortLike(error)) {
|
|
13
|
+
throw new ModerationAbortError(input.init.signal?.reason ?? error);
|
|
14
|
+
}
|
|
15
|
+
throw new ModerationAdapterError(`${input.provider} request failed.`, {
|
|
16
|
+
adapter: input.adapter,
|
|
17
|
+
code: "network_error",
|
|
18
|
+
retryable: true,
|
|
19
|
+
cause: error,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
let body;
|
|
23
|
+
try {
|
|
24
|
+
body = await readBody(response);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (input.init.signal?.aborted || isAbortLike(error)) {
|
|
28
|
+
throw new ModerationAbortError(input.init.signal?.reason ?? error);
|
|
29
|
+
}
|
|
30
|
+
throw new ModerationAdapterError(`${input.provider} response could not be read.`, {
|
|
31
|
+
adapter: input.adapter,
|
|
32
|
+
code: "network_error",
|
|
33
|
+
status: response.status,
|
|
34
|
+
retryable: true,
|
|
35
|
+
cause: error,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
throw new ModerationAdapterError(httpErrorMessage(input.provider, response.status, body), {
|
|
40
|
+
adapter: input.adapter,
|
|
41
|
+
code: "http_error",
|
|
42
|
+
status: response.status,
|
|
43
|
+
retryable: isRetryableHttpStatus(response.status),
|
|
44
|
+
details: body,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (body === undefined || typeof body === "string") {
|
|
48
|
+
throw new ModerationAdapterError(`${input.provider} returned an invalid JSON response.`, {
|
|
49
|
+
adapter: input.adapter,
|
|
50
|
+
code: "invalid_response",
|
|
51
|
+
status: response.status,
|
|
52
|
+
details: body,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return body;
|
|
56
|
+
}
|
|
57
|
+
async function readBody(response) {
|
|
58
|
+
const text = await response.text();
|
|
59
|
+
if (!text)
|
|
60
|
+
return undefined;
|
|
61
|
+
try {
|
|
62
|
+
return JSON.parse(text);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return text;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function httpErrorMessage(provider, status, body) {
|
|
69
|
+
const detail = errorMessage(body);
|
|
70
|
+
return detail
|
|
71
|
+
? `${provider} request failed (${status}): ${detail}`
|
|
72
|
+
: `${provider} request failed (${status}).`;
|
|
73
|
+
}
|
|
74
|
+
function errorMessage(body) {
|
|
75
|
+
if (!body || typeof body !== "object")
|
|
76
|
+
return typeof body === "string" ? body.slice(0, 300) : undefined;
|
|
77
|
+
const record = body;
|
|
78
|
+
if (typeof record.message === "string")
|
|
79
|
+
return record.message.slice(0, 300);
|
|
80
|
+
if (record.error && typeof record.error === "object") {
|
|
81
|
+
const nested = record.error;
|
|
82
|
+
if (typeof nested.message === "string")
|
|
83
|
+
return nested.message.slice(0, 300);
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createModerationClient } from "./core.js";
|
|
2
|
+
export { ModerationAbortError, ModerationAdapterError, ModerationAdapterNotFoundError, ModerationRouteError, ModerationSdkError, ModerationValidationError, isRetryableModerationError, } from "./errors.js";
|
|
3
|
+
export type { BoundModerationClient, MaybePromise, ModerationAdapter, ModerationAdapterCapabilities, ModerationAdapterContext, ModerationAdapterResult, ModerationAdapterValidationContext, ModerationAfterEvent, ModerationCategoryAssessment, ModerationClient, ModerationClientOptions, ModerationConversationInput, ModerationErrorEvent, ModerationFallbackConfig, ModerationHookEvent, ModerationHooks, ModerationImageInput, ModerationImageSource, ModerationInput, ModerationInputType, ModerationItem, ModerationMessage, ModerationMessageRole, ModerationOptions, ModerationProcessingMode, ModerationResult, ModerationRetryConfig, ModerationSettledResult, ModerationTextInput, ModerationValidationResult, ModerationValidationRoute, } from "./types.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { createModerationClient } from "./core.js";
|
|
2
|
+
export { ModerationAbortError, ModerationAdapterError, ModerationAdapterNotFoundError, ModerationRouteError, ModerationSdkError, ModerationValidationError, isRetryableModerationError, } from "./errors.js";
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ModerationAdapter } from "./types.js";
|
|
2
|
+
export type MistralModeration = {
|
|
3
|
+
categories: Record<string, boolean>;
|
|
4
|
+
category_scores: Record<string, number>;
|
|
5
|
+
};
|
|
6
|
+
export type MistralModerationResponse = {
|
|
7
|
+
id: string;
|
|
8
|
+
model: string;
|
|
9
|
+
results: MistralModeration[];
|
|
10
|
+
};
|
|
11
|
+
export type MistralOptions = {
|
|
12
|
+
apiKey: string;
|
|
13
|
+
model?: string;
|
|
14
|
+
baseUrl?: string;
|
|
15
|
+
headers?: Readonly<Record<string, string>>;
|
|
16
|
+
fetch?: typeof fetch;
|
|
17
|
+
};
|
|
18
|
+
export type MistralAdapter = ModerationAdapter<"mistral", {
|
|
19
|
+
baseUrl: string;
|
|
20
|
+
model: string;
|
|
21
|
+
}, MistralModerationResponse>;
|
|
22
|
+
export declare function mistral(options: MistralOptions): MistralAdapter;
|
|
23
|
+
//# sourceMappingURL=mistral.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../src/mistral.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAC5C,SAAS,EACT;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAClC,yBAAyB,CAC1B,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAqE/D"}
|