Externalize audit pipeline services
This commit is contained in:
@@ -7,6 +7,8 @@ import {
|
||||
RUN_EVENT_LEVELS,
|
||||
RUN_STATUSES,
|
||||
RUN_TYPES,
|
||||
USAGE_EVENT_OPERATIONS,
|
||||
USAGE_EVENT_PROVIDERS,
|
||||
} from "./domain";
|
||||
|
||||
const campaignStatus = v.union(v.literal("active"), v.literal("paused"));
|
||||
@@ -146,6 +148,12 @@ const pageSpeedErrorType = v.union(
|
||||
v.literal("api_error"),
|
||||
v.literal("unknown"),
|
||||
);
|
||||
const usageEventProvider = v.union(
|
||||
...USAGE_EVENT_PROVIDERS.map((provider) => v.literal(provider)),
|
||||
);
|
||||
const usageEventOperation = v.union(
|
||||
...USAGE_EVENT_OPERATIONS.map((operation) => v.literal(operation)),
|
||||
);
|
||||
const settingsValue = v.union(v.string(), v.number(), v.boolean(), v.null());
|
||||
const auditMetricSummary = v.object({
|
||||
performanceScore: v.optional(v.number()),
|
||||
@@ -282,8 +290,9 @@ export default defineSchema({
|
||||
usedSkills: v.optional(
|
||||
v.array(
|
||||
v.object({
|
||||
id: v.optional(v.string()),
|
||||
name: v.string(),
|
||||
category: v.string(),
|
||||
category: v.optional(v.string()),
|
||||
version: v.optional(v.string()),
|
||||
source: v.optional(v.string()),
|
||||
}),
|
||||
@@ -399,6 +408,39 @@ export default defineSchema({
|
||||
.index("by_stage", ["stage"])
|
||||
.index("by_leadId_and_stage", ["leadId", "stage"]),
|
||||
|
||||
usageEvents: defineTable({
|
||||
provider: usageEventProvider,
|
||||
operation: usageEventOperation,
|
||||
runId: v.optional(v.id("agentRuns")),
|
||||
leadId: v.optional(v.id("leads")),
|
||||
auditId: v.optional(v.id("audits")),
|
||||
estimatedCostUsd: v.number(),
|
||||
tokens: v.optional(
|
||||
v.object({
|
||||
inputTokens: v.optional(v.number()),
|
||||
outputTokens: v.optional(v.number()),
|
||||
promptTokens: v.optional(v.number()),
|
||||
completionTokens: v.optional(v.number()),
|
||||
totalTokens: v.optional(v.number()),
|
||||
cacheReadTokens: v.optional(v.number()),
|
||||
}),
|
||||
),
|
||||
callCounts: v.optional(
|
||||
v.object({
|
||||
requests: v.optional(v.number()),
|
||||
pages: v.optional(v.number()),
|
||||
screenshots: v.optional(v.number()),
|
||||
lookups: v.optional(v.number()),
|
||||
}),
|
||||
),
|
||||
createdAt: v.number(),
|
||||
})
|
||||
.index("by_runId_and_createdAt", ["runId", "createdAt"])
|
||||
.index("by_leadId_and_createdAt", ["leadId", "createdAt"])
|
||||
.index("by_auditId_and_createdAt", ["auditId", "createdAt"])
|
||||
.index("by_provider_and_createdAt", ["provider", "createdAt"])
|
||||
.index("by_createdAt", ["createdAt"]),
|
||||
|
||||
websiteCrawlPages: defineTable({
|
||||
leadId: v.id("leads"),
|
||||
runId: v.optional(v.id("agentRuns")),
|
||||
|
||||
Reference in New Issue
Block a user