@actuate-media/cms-core 0.44.0 → 0.47.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/__tests__/ai/brand-voice.test.d.ts +2 -0
- package/dist/__tests__/ai/brand-voice.test.d.ts.map +1 -0
- package/dist/__tests__/ai/brand-voice.test.js +82 -0
- package/dist/__tests__/ai/brand-voice.test.js.map +1 -0
- package/dist/__tests__/ai/runtime.test.d.ts +2 -0
- package/dist/__tests__/ai/runtime.test.d.ts.map +1 -0
- package/dist/__tests__/ai/runtime.test.js +292 -0
- package/dist/__tests__/ai/runtime.test.js.map +1 -0
- package/dist/__tests__/api/ai-quality.test.js +178 -0
- package/dist/__tests__/api/ai-quality.test.js.map +1 -1
- package/dist/__tests__/api/health.test.js +9 -5
- package/dist/__tests__/api/health.test.js.map +1 -1
- package/dist/__tests__/api/updates-routes.test.d.ts +2 -0
- package/dist/__tests__/api/updates-routes.test.d.ts.map +1 -0
- package/dist/__tests__/api/updates-routes.test.js +248 -0
- package/dist/__tests__/api/updates-routes.test.js.map +1 -0
- package/dist/__tests__/upgrade/version-check.test.d.ts +2 -0
- package/dist/__tests__/upgrade/version-check.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade/version-check.test.js +98 -0
- package/dist/__tests__/upgrade/version-check.test.js.map +1 -0
- package/dist/ai/brand-voice.d.ts +37 -0
- package/dist/ai/brand-voice.d.ts.map +1 -0
- package/dist/ai/brand-voice.js +85 -0
- package/dist/ai/brand-voice.js.map +1 -0
- package/dist/ai/index.d.ts +6 -4
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +6 -4
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/providers/anthropic.d.ts +2 -1
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +28 -1
- package/dist/ai/providers/anthropic.js.map +1 -1
- package/dist/ai/providers/custom.d.ts +2 -1
- package/dist/ai/providers/custom.d.ts.map +1 -1
- package/dist/ai/providers/custom.js +7 -1
- package/dist/ai/providers/custom.js.map +1 -1
- package/dist/ai/providers/http.d.ts +30 -0
- package/dist/ai/providers/http.d.ts.map +1 -1
- package/dist/ai/providers/http.js +51 -0
- package/dist/ai/providers/http.js.map +1 -1
- package/dist/ai/providers/index.d.ts +4 -2
- package/dist/ai/providers/index.d.ts.map +1 -1
- package/dist/ai/providers/index.js +3 -0
- package/dist/ai/providers/index.js.map +1 -1
- package/dist/ai/providers/openai.d.ts +2 -1
- package/dist/ai/providers/openai.d.ts.map +1 -1
- package/dist/ai/providers/openai.js +4 -1
- package/dist/ai/providers/openai.js.map +1 -1
- package/dist/ai/providers/xai.d.ts +2 -1
- package/dist/ai/providers/xai.d.ts.map +1 -1
- package/dist/ai/providers/xai.js +4 -1
- package/dist/ai/providers/xai.js.map +1 -1
- package/dist/ai/runtime.d.ts +86 -0
- package/dist/ai/runtime.d.ts.map +1 -0
- package/dist/ai/runtime.js +177 -0
- package/dist/ai/runtime.js.map +1 -0
- package/dist/ai/types.d.ts +24 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/api/handlers.d.ts.map +1 -1
- package/dist/api/handlers.js +333 -130
- package/dist/api/handlers.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/upgrade/changelog.d.ts +6 -1
- package/dist/upgrade/changelog.d.ts.map +1 -1
- package/dist/upgrade/changelog.js +10 -4
- package/dist/upgrade/changelog.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -2
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +1 -1
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/version-check.d.ts +38 -6
- package/dist/upgrade/version-check.d.ts.map +1 -1
- package/dist/upgrade/version-check.js +68 -0
- package/dist/upgrade/version-check.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Governed AI runtime — the single execution path that turns the Settings > AI
|
|
3
|
+
* configuration into actual model calls.
|
|
4
|
+
*
|
|
5
|
+
* Everything that wants to run an LLM inside Actuate should go through here so
|
|
6
|
+
* that one DB-backed config drives behavior end-to-end:
|
|
7
|
+
* - feature toggles are ENFORCED (a disabled feature can't run),
|
|
8
|
+
* - per-feature model routing is RESOLVED ({@link resolveFeatureModel}),
|
|
9
|
+
* - the API key is resolved from env or the encrypted store,
|
|
10
|
+
* - the monthly token budget is checked (when `disableWhenExceeded`),
|
|
11
|
+
* - real token usage is RECORDED so the usage meter reflects reality.
|
|
12
|
+
*
|
|
13
|
+
* It is intentionally provider-agnostic: the provider adapters
|
|
14
|
+
* (`./providers/*`) speak HTTP, this module decides *whether* and *with what*
|
|
15
|
+
* to call them.
|
|
16
|
+
*/
|
|
17
|
+
import type { AIProviderKey } from './types.js';
|
|
18
|
+
/** Why a feature could not run. Distinct codes let callers map to HTTP status. */
|
|
19
|
+
export type RuntimeErrorCode = 'feature_disabled' | 'no_provider' | 'no_model' | 'no_key' | 'budget_exceeded' | 'provider_error';
|
|
20
|
+
export interface RuntimeError {
|
|
21
|
+
ok: false;
|
|
22
|
+
code: RuntimeErrorCode;
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
/** A fully-resolved, ready-to-call runtime for a feature. */
|
|
26
|
+
export interface ResolvedFeatureRuntime {
|
|
27
|
+
ok: true;
|
|
28
|
+
featureKey: string;
|
|
29
|
+
providerKey: AIProviderKey;
|
|
30
|
+
connectionId: string;
|
|
31
|
+
baseUrl?: string;
|
|
32
|
+
apiKey: string;
|
|
33
|
+
/** Catalog id (`provider:modelId`) selected for this feature. */
|
|
34
|
+
modelId: string;
|
|
35
|
+
/** Provider-native model id sent on the wire. */
|
|
36
|
+
providerModelId: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Is a configured AI feature turned on? Unknown keys default to enabled so that
|
|
40
|
+
* callers gating on a key the config doesn't track yet don't silently break.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isAiFeatureEnabled(db: unknown, featureKey: string): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Resolve provider + model + key + budget for a feature, enforcing the toggle.
|
|
45
|
+
* Pure resolution — performs no model call. Returns a discriminated result so
|
|
46
|
+
* callers can branch (e.g. fall back to a legacy provider on `no_provider`).
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveFeatureRuntime(db: unknown, featureKey: string): Promise<ResolvedFeatureRuntime | RuntimeError>;
|
|
49
|
+
export interface GenerateForFeatureInput {
|
|
50
|
+
prompt: string;
|
|
51
|
+
system?: string;
|
|
52
|
+
maxTokens?: number;
|
|
53
|
+
temperature?: number;
|
|
54
|
+
/** Recorded on the usage audit entry so spend is attributable. */
|
|
55
|
+
userId?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Prepend the active brand voice (if enabled) to the system prompt. Content
|
|
58
|
+
* features (co-author, SEO copy) opt in; structured/metadata features leave
|
|
59
|
+
* it off. Defaults to false so callers are explicit.
|
|
60
|
+
*/
|
|
61
|
+
useBrandVoice?: boolean;
|
|
62
|
+
/** Injectable fetch for tests; forwarded to the provider adapter. */
|
|
63
|
+
fetchImpl?: typeof fetch;
|
|
64
|
+
/** Per-call timeout override (ms). */
|
|
65
|
+
timeoutMs?: number;
|
|
66
|
+
}
|
|
67
|
+
export interface GenerateForFeatureSuccess {
|
|
68
|
+
ok: true;
|
|
69
|
+
text: string;
|
|
70
|
+
usage: {
|
|
71
|
+
promptTokens: number;
|
|
72
|
+
completionTokens: number;
|
|
73
|
+
totalTokens: number;
|
|
74
|
+
};
|
|
75
|
+
modelId: string;
|
|
76
|
+
providerModelId: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Run a text generation for a feature through the governed path: resolve →
|
|
80
|
+
* enforce → call → record usage. Returns a discriminated result; never throws
|
|
81
|
+
* for the expected "not configured / disabled / budget" cases (those are
|
|
82
|
+
* {@link RuntimeError}). Genuine provider/transport failures surface as a
|
|
83
|
+
* `provider_error` RuntimeError too, so callers have a single shape to handle.
|
|
84
|
+
*/
|
|
85
|
+
export declare function generateTextForFeature(db: unknown, featureKey: string, input: GenerateForFeatureInput): Promise<GenerateForFeatureSuccess | RuntimeError>;
|
|
86
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAA;AAGrE,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,KAAK,CAAA;IACT,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,IAAI,CAAA;IACR,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,aAAa,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAA;CACxB;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1F;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,GAAG,YAAY,CAAC,CAuDhD;AAQD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,yBAAyB,GAAG,YAAY,CAAC,CAsDnD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Governed AI runtime — the single execution path that turns the Settings > AI
|
|
3
|
+
* configuration into actual model calls.
|
|
4
|
+
*
|
|
5
|
+
* Everything that wants to run an LLM inside Actuate should go through here so
|
|
6
|
+
* that one DB-backed config drives behavior end-to-end:
|
|
7
|
+
* - feature toggles are ENFORCED (a disabled feature can't run),
|
|
8
|
+
* - per-feature model routing is RESOLVED ({@link resolveFeatureModel}),
|
|
9
|
+
* - the API key is resolved from env or the encrypted store,
|
|
10
|
+
* - the monthly token budget is checked (when `disableWhenExceeded`),
|
|
11
|
+
* - real token usage is RECORDED so the usage meter reflects reality.
|
|
12
|
+
*
|
|
13
|
+
* It is intentionally provider-agnostic: the provider adapters
|
|
14
|
+
* (`./providers/*`) speak HTTP, this module decides *whether* and *with what*
|
|
15
|
+
* to call them.
|
|
16
|
+
*/
|
|
17
|
+
import { applyBrandVoice } from './brand-voice.js';
|
|
18
|
+
import { getAIConfig, resolveProviderKey } from './config-store.js';
|
|
19
|
+
import { getModels } from './models.js';
|
|
20
|
+
import { generateText as adapterGenerateText } from './providers/index.js';
|
|
21
|
+
import { AdapterHttpError } from './providers/http.js';
|
|
22
|
+
import { resolveFeatureModel } from './resolve.js';
|
|
23
|
+
import { getUsageSummary } from './usage.js';
|
|
24
|
+
function err(code, message) {
|
|
25
|
+
return { ok: false, code, message };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Is a configured AI feature turned on? Unknown keys default to enabled so that
|
|
29
|
+
* callers gating on a key the config doesn't track yet don't silently break.
|
|
30
|
+
*/
|
|
31
|
+
export async function isAiFeatureEnabled(db, featureKey) {
|
|
32
|
+
const config = await getAIConfig(db);
|
|
33
|
+
const feature = config.settings.features.find((f) => f.key === featureKey);
|
|
34
|
+
return feature ? feature.enabled : true;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve provider + model + key + budget for a feature, enforcing the toggle.
|
|
38
|
+
* Pure resolution — performs no model call. Returns a discriminated result so
|
|
39
|
+
* callers can branch (e.g. fall back to a legacy provider on `no_provider`).
|
|
40
|
+
*/
|
|
41
|
+
export async function resolveFeatureRuntime(db, featureKey) {
|
|
42
|
+
const config = await getAIConfig(db);
|
|
43
|
+
const feature = config.settings.features.find((f) => f.key === featureKey);
|
|
44
|
+
if (feature && !feature.enabled) {
|
|
45
|
+
return err('feature_disabled', `The "${feature.label}" AI feature is turned off.`);
|
|
46
|
+
}
|
|
47
|
+
const catalog = await getModels(db);
|
|
48
|
+
const resolved = resolveFeatureModel(config, featureKey, catalog);
|
|
49
|
+
if (!resolved.modelId) {
|
|
50
|
+
return err('no_model', 'No AI model is configured. Choose a default model in Settings > AI.');
|
|
51
|
+
}
|
|
52
|
+
if (!resolved.providerId) {
|
|
53
|
+
return err('no_provider', 'No connected AI provider can serve the selected model.');
|
|
54
|
+
}
|
|
55
|
+
const connection = config.providers.find((p) => p.id === resolved.providerId);
|
|
56
|
+
if (!connection) {
|
|
57
|
+
return err('no_provider', 'No AI provider connection is configured for this model.');
|
|
58
|
+
}
|
|
59
|
+
if (connection.enabled === false) {
|
|
60
|
+
return err('no_provider', `The "${connection.displayName}" provider is disabled.`);
|
|
61
|
+
}
|
|
62
|
+
const apiKey = await resolveProviderKey(connection);
|
|
63
|
+
if (!apiKey) {
|
|
64
|
+
return err('no_key', `No API key is set for the "${connection.displayName}" provider.`);
|
|
65
|
+
}
|
|
66
|
+
// Budget gate: only blocks when the operator opted into hard enforcement.
|
|
67
|
+
const budget = config.settings.budget;
|
|
68
|
+
if (budget.disableWhenExceeded && typeof budget.monthlyTokenLimit === 'number') {
|
|
69
|
+
const usage = await getUsageSummary(db);
|
|
70
|
+
if (usage.totalTokens >= budget.monthlyTokenLimit) {
|
|
71
|
+
return err('budget_exceeded', 'The monthly AI token budget has been reached. Raise the limit in Settings > AI.');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const providerModelId = resolved.model?.providerModelId ?? stripProviderPrefix(resolved.modelId, connection);
|
|
75
|
+
return {
|
|
76
|
+
ok: true,
|
|
77
|
+
featureKey,
|
|
78
|
+
providerKey: connection.provider,
|
|
79
|
+
connectionId: connection.id,
|
|
80
|
+
baseUrl: connection.baseUrl,
|
|
81
|
+
apiKey,
|
|
82
|
+
modelId: resolved.modelId,
|
|
83
|
+
providerModelId,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** `openai:gpt-4o` -> `gpt-4o`; leaves bare ids untouched. */
|
|
87
|
+
function stripProviderPrefix(modelId, connection) {
|
|
88
|
+
const prefix = `${connection.provider}:`;
|
|
89
|
+
return modelId.startsWith(prefix) ? modelId.slice(prefix.length) : modelId;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Run a text generation for a feature through the governed path: resolve →
|
|
93
|
+
* enforce → call → record usage. Returns a discriminated result; never throws
|
|
94
|
+
* for the expected "not configured / disabled / budget" cases (those are
|
|
95
|
+
* {@link RuntimeError}). Genuine provider/transport failures surface as a
|
|
96
|
+
* `provider_error` RuntimeError too, so callers have a single shape to handle.
|
|
97
|
+
*/
|
|
98
|
+
export async function generateTextForFeature(db, featureKey, input) {
|
|
99
|
+
const resolved = await resolveFeatureRuntime(db, featureKey);
|
|
100
|
+
if (!resolved.ok)
|
|
101
|
+
return resolved;
|
|
102
|
+
// Inject the active brand voice into the system prompt when the caller opts
|
|
103
|
+
// in (content-writing surfaces do; metadata/structured ones don't).
|
|
104
|
+
let system = input.system;
|
|
105
|
+
if (input.useBrandVoice) {
|
|
106
|
+
const config = await getAIConfig(db);
|
|
107
|
+
system = applyBrandVoice(system, config.settings.brandVoice);
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const result = await adapterGenerateText(resolved.providerKey, {
|
|
111
|
+
apiKey: resolved.apiKey,
|
|
112
|
+
baseUrl: resolved.baseUrl,
|
|
113
|
+
fetchImpl: input.fetchImpl,
|
|
114
|
+
timeoutMs: input.timeoutMs,
|
|
115
|
+
}, {
|
|
116
|
+
model: resolved.providerModelId,
|
|
117
|
+
prompt: input.prompt,
|
|
118
|
+
system,
|
|
119
|
+
maxTokens: input.maxTokens,
|
|
120
|
+
temperature: input.temperature,
|
|
121
|
+
});
|
|
122
|
+
await recordUsage(db, {
|
|
123
|
+
featureKey,
|
|
124
|
+
modelId: resolved.modelId,
|
|
125
|
+
providerKey: resolved.providerKey,
|
|
126
|
+
userId: input.userId,
|
|
127
|
+
usage: result.usage,
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
ok: true,
|
|
131
|
+
text: result.text,
|
|
132
|
+
usage: result.usage,
|
|
133
|
+
modelId: resolved.modelId,
|
|
134
|
+
providerModelId: resolved.providerModelId,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
const message = e instanceof AdapterHttpError
|
|
139
|
+
? e.message
|
|
140
|
+
: e instanceof Error
|
|
141
|
+
? e.message
|
|
142
|
+
: 'The AI provider request failed.';
|
|
143
|
+
return err('provider_error', message);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Record a usage entry in the audit log. Best-effort: a logging failure must
|
|
148
|
+
* never fail the generation that already succeeded. The field names match what
|
|
149
|
+
* {@link getUsageSummary} reads (`details.totalTokensUsed` + prompt/completion).
|
|
150
|
+
*/
|
|
151
|
+
async function recordUsage(db, entry) {
|
|
152
|
+
const d = db;
|
|
153
|
+
if (!d?.auditLog?.create)
|
|
154
|
+
return;
|
|
155
|
+
try {
|
|
156
|
+
await d.auditLog.create({
|
|
157
|
+
data: {
|
|
158
|
+
event: 'ai_usage',
|
|
159
|
+
userId: entry.userId ?? 'system',
|
|
160
|
+
timestamp: new Date(),
|
|
161
|
+
details: {
|
|
162
|
+
source: 'ai-runtime',
|
|
163
|
+
feature: entry.featureKey,
|
|
164
|
+
model: entry.modelId,
|
|
165
|
+
provider: entry.providerKey,
|
|
166
|
+
totalTokensUsed: entry.usage.totalTokens,
|
|
167
|
+
promptTokens: entry.usage.promptTokens,
|
|
168
|
+
completionTokens: entry.usage.completionTokens,
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Swallow — usage metering is observational, not transactional.
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/types.d.ts
CHANGED
|
@@ -109,6 +109,28 @@ export interface AIBudgetSettings {
|
|
|
109
109
|
perFeatureLimits?: Record<string, number>;
|
|
110
110
|
perUserLimits?: Record<string, number>;
|
|
111
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Brand voice profile. A reusable description of how generated copy should
|
|
114
|
+
* sound, injected into the system prompt of content-generation features so
|
|
115
|
+
* every AI surface writes in one consistent, on-brand voice. Contains no
|
|
116
|
+
* secrets — safe to return to the client.
|
|
117
|
+
*/
|
|
118
|
+
export interface BrandVoiceProfile {
|
|
119
|
+
/** When false, the profile is stored but not injected into prompts. */
|
|
120
|
+
enabled: boolean;
|
|
121
|
+
/** Friendly label (e.g. "Acme Marketing"). */
|
|
122
|
+
name: string;
|
|
123
|
+
/** Tone descriptors (e.g. "confident, warm, plain-spoken"). */
|
|
124
|
+
tone: string;
|
|
125
|
+
/** Who the copy speaks to (e.g. "busy IT directors at mid-market SaaS"). */
|
|
126
|
+
audience?: string;
|
|
127
|
+
/** Free-form do/don't rules the model must follow. */
|
|
128
|
+
guidelines?: string;
|
|
129
|
+
/** Representative on-brand copy the model can pattern-match against. */
|
|
130
|
+
sampleText?: string;
|
|
131
|
+
updatedAt?: string;
|
|
132
|
+
updatedBy?: string;
|
|
133
|
+
}
|
|
112
134
|
export interface AISettings {
|
|
113
135
|
defaultProviderId?: string;
|
|
114
136
|
defaultModelId?: string;
|
|
@@ -120,6 +142,8 @@ export interface AISettings {
|
|
|
120
142
|
features: AIFeatureConfig[];
|
|
121
143
|
budget: AIBudgetSettings;
|
|
122
144
|
logsRetentionDays: number;
|
|
145
|
+
/** Active brand voice. Absent until an admin configures it. */
|
|
146
|
+
brandVoice?: BrandVoiceProfile;
|
|
123
147
|
}
|
|
124
148
|
/**
|
|
125
149
|
* Cached, normalized model catalog keyed by provider connection id. Persisted in
|
package/dist/ai/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/api/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/api/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AA+lC5C,iFAAiF;AACjF,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AA8JD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9E;AAiVD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsvYzD"}
|