@apart-tech/intelligence-core 1.11.4 → 1.11.6
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/auth/ability.d.ts +148 -0
- package/dist/auth/ability.d.ts.map +1 -0
- package/dist/auth/ability.js +291 -0
- package/dist/auth/ability.js.map +1 -0
- package/dist/auth/ability.test.d.ts +2 -0
- package/dist/auth/ability.test.d.ts.map +1 -0
- package/dist/auth/ability.test.js +693 -0
- package/dist/auth/ability.test.js.map +1 -0
- package/dist/auth/delegation-jwt.d.ts +167 -0
- package/dist/auth/delegation-jwt.d.ts.map +1 -0
- package/dist/auth/delegation-jwt.js +237 -0
- package/dist/auth/delegation-jwt.js.map +1 -0
- package/dist/auth/delegation-jwt.test.d.ts +2 -0
- package/dist/auth/delegation-jwt.test.d.ts.map +1 -0
- package/dist/auth/delegation-jwt.test.js +283 -0
- package/dist/auth/delegation-jwt.test.js.map +1 -0
- package/dist/auth/principal.d.ts +94 -0
- package/dist/auth/principal.d.ts.map +1 -0
- package/dist/auth/principal.js +33 -0
- package/dist/auth/principal.js.map +1 -0
- package/dist/config/config.test.d.ts +2 -0
- package/dist/config/config.test.d.ts.map +1 -0
- package/dist/config/config.test.js +57 -0
- package/dist/config/config.test.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +22 -1
- package/dist/config/index.js.map +1 -1
- package/dist/db/tenant.d.ts.map +1 -1
- package/dist/db/tenant.js +8 -0
- package/dist/db/tenant.js.map +1 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/jwt.test.d.ts +2 -0
- package/dist/lib/__tests__/jwt.test.d.ts.map +1 -0
- package/dist/lib/__tests__/jwt.test.js +97 -0
- package/dist/lib/__tests__/jwt.test.js.map +1 -0
- package/dist/lib/jwt.d.ts +20 -0
- package/dist/lib/jwt.d.ts.map +1 -1
- package/dist/lib/jwt.js +56 -3
- package/dist/lib/jwt.js.map +1 -1
- package/dist/services/__tests__/chunk-service.test.d.ts +2 -0
- package/dist/services/__tests__/chunk-service.test.d.ts.map +1 -0
- package/dist/services/__tests__/chunk-service.test.js +111 -0
- package/dist/services/__tests__/chunk-service.test.js.map +1 -0
- package/dist/services/__tests__/chunker.test.d.ts +2 -0
- package/dist/services/__tests__/chunker.test.d.ts.map +1 -0
- package/dist/services/__tests__/chunker.test.js +113 -0
- package/dist/services/__tests__/chunker.test.js.map +1 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.d.ts +2 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.d.ts.map +1 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.js +211 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.js.map +1 -0
- package/dist/services/__tests__/node-service.test.d.ts +2 -0
- package/dist/services/__tests__/node-service.test.d.ts.map +1 -0
- package/dist/services/__tests__/node-service.test.js +207 -0
- package/dist/services/__tests__/node-service.test.js.map +1 -0
- package/dist/services/__tests__/pii-detector-service.test.js +51 -0
- package/dist/services/__tests__/pii-detector-service.test.js.map +1 -1
- package/dist/services/__tests__/pii-encryption-service.test.js +37 -0
- package/dist/services/__tests__/pii-encryption-service.test.js.map +1 -1
- package/dist/services/__tests__/search-service.test.d.ts +2 -0
- package/dist/services/__tests__/search-service.test.d.ts.map +1 -0
- package/dist/services/__tests__/search-service.test.js +163 -0
- package/dist/services/__tests__/search-service.test.js.map +1 -0
- package/dist/services/agent-run-service.d.ts +44 -7
- package/dist/services/agent-run-service.d.ts.map +1 -1
- package/dist/services/agent-run-service.js +14 -0
- package/dist/services/agent-run-service.js.map +1 -1
- package/dist/services/agent-schedule-service.d.ts +21 -0
- package/dist/services/agent-schedule-service.d.ts.map +1 -1
- package/dist/services/agent-schedule-service.js +12 -0
- package/dist/services/agent-schedule-service.js.map +1 -1
- package/dist/services/audit-event-service.d.ts +76 -0
- package/dist/services/audit-event-service.d.ts.map +1 -0
- package/dist/services/audit-event-service.js +48 -0
- package/dist/services/audit-event-service.js.map +1 -0
- package/dist/services/backfill-chunks.d.ts +30 -0
- package/dist/services/backfill-chunks.d.ts.map +1 -0
- package/dist/services/backfill-chunks.js +55 -0
- package/dist/services/backfill-chunks.js.map +1 -0
- package/dist/services/chunk-service.d.ts +45 -0
- package/dist/services/chunk-service.d.ts.map +1 -0
- package/dist/services/chunk-service.js +111 -0
- package/dist/services/chunk-service.js.map +1 -0
- package/dist/services/chunker.d.ts +32 -0
- package/dist/services/chunker.d.ts.map +1 -0
- package/dist/services/chunker.js +289 -0
- package/dist/services/chunker.js.map +1 -0
- package/dist/services/context-service.d.ts +3 -1
- package/dist/services/context-service.d.ts.map +1 -1
- package/dist/services/context-service.js +17 -1
- package/dist/services/context-service.js.map +1 -1
- package/dist/services/delegation-cleanup-service.d.ts +133 -0
- package/dist/services/delegation-cleanup-service.d.ts.map +1 -0
- package/dist/services/delegation-cleanup-service.js +111 -0
- package/dist/services/delegation-cleanup-service.js.map +1 -0
- package/dist/services/edge-service.d.ts.map +1 -1
- package/dist/services/edge-service.js +3 -0
- package/dist/services/edge-service.js.map +1 -1
- package/dist/services/node-service.d.ts +12 -1
- package/dist/services/node-service.d.ts.map +1 -1
- package/dist/services/node-service.js +54 -11
- package/dist/services/node-service.js.map +1 -1
- package/dist/services/org-agent-type-service.d.ts +15 -0
- package/dist/services/org-agent-type-service.d.ts.map +1 -1
- package/dist/services/org-agent-type-service.js +2 -0
- package/dist/services/org-agent-type-service.js.map +1 -1
- package/dist/services/pii-detector-service.d.ts +1 -0
- package/dist/services/pii-detector-service.d.ts.map +1 -1
- package/dist/services/pii-detector-service.js +95 -2
- package/dist/services/pii-detector-service.js.map +1 -1
- package/dist/services/pii-encryption-service.d.ts +10 -0
- package/dist/services/pii-encryption-service.d.ts.map +1 -1
- package/dist/services/pii-encryption-service.js +32 -0
- package/dist/services/pii-encryption-service.js.map +1 -1
- package/dist/services/search-service.d.ts +30 -1
- package/dist/services/search-service.d.ts.map +1 -1
- package/dist/services/search-service.js +262 -45
- package/dist/services/search-service.js.map +1 -1
- package/dist/services/tag-service.d.ts +78 -0
- package/dist/services/tag-service.d.ts.map +1 -0
- package/dist/services/tag-service.js +639 -0
- package/dist/services/tag-service.js.map +1 -0
- package/dist/services/tag-service.test.d.ts +2 -0
- package/dist/services/tag-service.test.d.ts.map +1 -0
- package/dist/services/tag-service.test.js +448 -0
- package/dist/services/tag-service.test.js.map +1 -0
- package/dist/services/usage-service.d.ts +48 -0
- package/dist/services/usage-service.d.ts.map +1 -0
- package/dist/services/usage-service.js +116 -0
- package/dist/services/usage-service.js.map +1 -0
- package/dist/services/user-service.d.ts.map +1 -1
- package/dist/services/user-service.js +24 -6
- package/dist/services/user-service.js.map +1 -1
- package/dist/services/user-service.test.d.ts +2 -0
- package/dist/services/user-service.test.d.ts.map +1 -0
- package/dist/services/user-service.test.js +86 -0
- package/dist/services/user-service.test.js.map +1 -0
- package/dist/services/workspace-service.d.ts +2 -0
- package/dist/services/workspace-service.d.ts.map +1 -1
- package/dist/services/workspace-service.js +7 -1
- package/dist/services/workspace-service.js.map +1 -1
- package/dist/types/index.d.ts +80 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/prisma/schema.prisma +335 -82
- package/dist/db/schema.d.ts +0 -507
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js +0 -77
- package/dist/db/schema.js.map +0 -1
package/prisma/schema.prisma
CHANGED
|
@@ -8,12 +8,17 @@ datasource db {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
model Organization {
|
|
11
|
-
id
|
|
12
|
-
name
|
|
13
|
-
slug
|
|
14
|
-
metadata
|
|
15
|
-
createdAt
|
|
16
|
-
auth0OrgId
|
|
11
|
+
id String @id @default(uuid()) @db.Uuid
|
|
12
|
+
name String @db.VarChar(200)
|
|
13
|
+
slug String @unique @db.VarChar(200)
|
|
14
|
+
metadata Json @default("{}")
|
|
15
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
16
|
+
auth0OrgId String? @unique @map("auth0_org_id") @db.VarChar(100)
|
|
17
|
+
authorizationMode String @default("internal") @map("authorization_mode") @db.VarChar(30)
|
|
18
|
+
plan String @default("free") @db.VarChar(20)
|
|
19
|
+
stripeCustomerId String? @unique @map("stripe_customer_id") @db.VarChar(255)
|
|
20
|
+
stripeSubscriptionId String? @map("stripe_subscription_id") @db.VarChar(255)
|
|
21
|
+
currentPeriodEnd DateTime? @map("current_period_end") @db.Timestamptz
|
|
17
22
|
|
|
18
23
|
nodes Node[]
|
|
19
24
|
edges Edge[]
|
|
@@ -29,23 +34,31 @@ model Organization {
|
|
|
29
34
|
invites Invite[]
|
|
30
35
|
orgAgentTypes OrgAgentType[]
|
|
31
36
|
orgMcpServers OrgMcpServer[]
|
|
37
|
+
usageRecords UsageRecord[]
|
|
38
|
+
tagDefinitions TagDefinition[]
|
|
39
|
+
nodeTags NodeTag[]
|
|
40
|
+
nodeChunks NodeChunk[]
|
|
41
|
+
piiQueryLogs PiiQueryLog[]
|
|
32
42
|
|
|
33
43
|
@@map("organizations")
|
|
34
44
|
}
|
|
35
45
|
|
|
36
46
|
model User {
|
|
37
|
-
id
|
|
38
|
-
auth0Sub
|
|
39
|
-
email
|
|
40
|
-
name
|
|
41
|
-
avatarUrl
|
|
42
|
-
createdAt
|
|
43
|
-
updatedAt
|
|
47
|
+
id String @id @default(uuid()) @db.Uuid
|
|
48
|
+
auth0Sub String @unique @map("auth0_sub") @db.VarChar(255)
|
|
49
|
+
email String @db.VarChar(320)
|
|
50
|
+
name String? @db.VarChar(200)
|
|
51
|
+
avatarUrl String? @map("avatar_url") @db.Text
|
|
52
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
53
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
44
54
|
claudeOauthTokenEncrypted String? @map("claude_oauth_token_encrypted") @db.Text
|
|
45
55
|
apartRefreshTokenEncrypted String? @map("apart_refresh_token_encrypted") @db.Text
|
|
46
56
|
agentSecretsEncrypted String? @map("agent_secrets_encrypted") @db.Text
|
|
47
57
|
|
|
48
|
-
memberships
|
|
58
|
+
memberships Membership[]
|
|
59
|
+
createdAgentTypes OrgAgentType[] @relation("OrgAgentTypeCreatedBy")
|
|
60
|
+
invokedAgentRuns AgentRun[] @relation("AgentRunInvokedBy")
|
|
61
|
+
scheduledAgents AgentSchedule[] @relation("AgentScheduleScheduledBy")
|
|
49
62
|
|
|
50
63
|
@@index([email], map: "idx_users_email")
|
|
51
64
|
@@map("users")
|
|
@@ -114,6 +127,22 @@ model OrgPiiConfig {
|
|
|
114
127
|
@@map("org_pii_config")
|
|
115
128
|
}
|
|
116
129
|
|
|
130
|
+
model PiiQueryLog {
|
|
131
|
+
id String @id @default(uuid()) @db.Uuid
|
|
132
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
133
|
+
queryHash String @map("query_hash") @db.Text
|
|
134
|
+
piiTypesDetected String[] @map("pii_types_detected")
|
|
135
|
+
matchCount Int @map("match_count")
|
|
136
|
+
source String @db.VarChar(20)
|
|
137
|
+
principalId String? @map("principal_id") @db.Text
|
|
138
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
139
|
+
|
|
140
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
141
|
+
|
|
142
|
+
@@index([organizationId, createdAt], map: "idx_pii_query_logs_org_time")
|
|
143
|
+
@@map("pii_query_logs")
|
|
144
|
+
}
|
|
145
|
+
|
|
117
146
|
model Domain {
|
|
118
147
|
id String @id @default(uuid()) @db.Uuid
|
|
119
148
|
name String @db.VarChar(200)
|
|
@@ -138,24 +167,27 @@ model Domain {
|
|
|
138
167
|
}
|
|
139
168
|
|
|
140
169
|
model Node {
|
|
141
|
-
id String
|
|
142
|
-
type String
|
|
143
|
-
title String
|
|
144
|
-
content String
|
|
170
|
+
id String @id @default(uuid()) @db.Uuid
|
|
171
|
+
type String @db.VarChar(100)
|
|
172
|
+
title String @db.VarChar(500)
|
|
173
|
+
content String @default("") @db.Text
|
|
145
174
|
embedding Unsupported("vector")?
|
|
146
|
-
searchVector Unsupported("tsvector")?
|
|
147
|
-
metadata Json
|
|
148
|
-
status String
|
|
149
|
-
createdBy String
|
|
150
|
-
createdAt DateTime
|
|
151
|
-
updatedAt DateTime
|
|
152
|
-
version Int
|
|
153
|
-
hasPii
|
|
154
|
-
|
|
155
|
-
|
|
175
|
+
searchVector Unsupported("tsvector")? @map("search_vector")
|
|
176
|
+
metadata Json @default("{}")
|
|
177
|
+
status String @default("draft") @db.VarChar(20)
|
|
178
|
+
createdBy String @map("created_by") @db.VarChar(255)
|
|
179
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
180
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
181
|
+
version Int @default(1)
|
|
182
|
+
hasPii Boolean @default(false) @map("has_pii")
|
|
183
|
+
embeddingPiiMode String? @map("embedding_pii_mode") @db.VarChar(20)
|
|
184
|
+
domainId String? @map("domain_id") @db.Uuid
|
|
185
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
156
186
|
|
|
157
187
|
sourceEdges Edge[] @relation("SourceNode")
|
|
158
188
|
targetEdges Edge[] @relation("TargetNode")
|
|
189
|
+
tags NodeTag[]
|
|
190
|
+
chunks NodeChunk[]
|
|
159
191
|
domain Domain? @relation(fields: [domainId], references: [id], onDelete: SetNull)
|
|
160
192
|
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
161
193
|
|
|
@@ -168,6 +200,30 @@ model Node {
|
|
|
168
200
|
@@map("nodes")
|
|
169
201
|
}
|
|
170
202
|
|
|
203
|
+
model NodeChunk {
|
|
204
|
+
id String @id @default(uuid()) @db.Uuid
|
|
205
|
+
nodeId String @map("node_id") @db.Uuid
|
|
206
|
+
chunkIndex Int @map("chunk_index")
|
|
207
|
+
content String @db.Text
|
|
208
|
+
tokenCount Int @map("token_count")
|
|
209
|
+
headingContext String? @map("heading_context") @db.VarChar(500)
|
|
210
|
+
startOffset Int @map("start_offset")
|
|
211
|
+
endOffset Int @map("end_offset")
|
|
212
|
+
overlapPrev Int @default(0) @map("overlap_prev")
|
|
213
|
+
embedding Unsupported("vector")?
|
|
214
|
+
embeddingPiiMode String? @map("embedding_pii_mode") @db.VarChar(20)
|
|
215
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
216
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
217
|
+
|
|
218
|
+
node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade)
|
|
219
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
220
|
+
|
|
221
|
+
@@unique([nodeId, chunkIndex], map: "uq_node_chunks_node_idx")
|
|
222
|
+
@@index([nodeId], map: "idx_node_chunks_node")
|
|
223
|
+
@@index([organizationId], map: "idx_node_chunks_org")
|
|
224
|
+
@@map("node_chunks")
|
|
225
|
+
}
|
|
226
|
+
|
|
171
227
|
model Edge {
|
|
172
228
|
id String @id @default(uuid()) @db.Uuid
|
|
173
229
|
sourceNodeId String @map("source_node_id") @db.Uuid
|
|
@@ -191,23 +247,23 @@ model Edge {
|
|
|
191
247
|
}
|
|
192
248
|
|
|
193
249
|
model Workspace {
|
|
194
|
-
id
|
|
195
|
-
name
|
|
196
|
-
slug
|
|
197
|
-
description
|
|
250
|
+
id String @id @default(uuid()) @db.Uuid
|
|
251
|
+
name String @db.VarChar(200)
|
|
252
|
+
slug String @db.VarChar(200)
|
|
253
|
+
description String @default("") @db.Text
|
|
198
254
|
|
|
199
255
|
// Filter rules
|
|
200
|
-
domainSlugs
|
|
201
|
-
nodeTypes
|
|
202
|
-
tags
|
|
256
|
+
domainSlugs Json @default("[]") @map("domain_slugs")
|
|
257
|
+
nodeTypes Json @default("[]") @map("node_types")
|
|
258
|
+
tags Json @default("[]") @map("tags")
|
|
203
259
|
|
|
204
260
|
// Context assembly overrides
|
|
205
|
-
maxDepth
|
|
206
|
-
maxNodes
|
|
207
|
-
includeDrafts
|
|
261
|
+
maxDepth Int? @map("max_depth")
|
|
262
|
+
maxNodes Int? @map("max_nodes")
|
|
263
|
+
includeDrafts Boolean @default(false) @map("include_drafts")
|
|
208
264
|
|
|
209
265
|
// Layer 1: map description for AI
|
|
210
|
-
systemPrompt
|
|
266
|
+
systemPrompt String @default("") @map("system_prompt") @db.Text
|
|
211
267
|
|
|
212
268
|
metadata Json @default("{}")
|
|
213
269
|
createdBy String @map("created_by") @db.VarChar(255)
|
|
@@ -251,11 +307,22 @@ model OrgAgentType {
|
|
|
251
307
|
createdBy String @map("created_by") @db.VarChar(255)
|
|
252
308
|
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
253
309
|
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
254
|
-
|
|
255
|
-
|
|
310
|
+
kind String @default("org_agent") @db.VarChar(30)
|
|
311
|
+
auth0ClientId String? @unique @map("auth0_client_id") @db.VarChar(255)
|
|
312
|
+
intrinsicPolicy Json @default("{}") @map("intrinsic_policy")
|
|
313
|
+
toolCatalogue String[] @default([]) @map("tool_catalogue")
|
|
314
|
+
requiresCiba Boolean @default(false) @map("requires_ciba")
|
|
315
|
+
createdByUserId String? @map("created_by_user_id") @db.Uuid
|
|
316
|
+
|
|
317
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
318
|
+
createdByUser User? @relation("OrgAgentTypeCreatedBy", fields: [createdByUserId], references: [id], onDelete: SetNull)
|
|
319
|
+
agentRuns AgentRun[] @relation("AgentRunAgent")
|
|
320
|
+
schedules AgentSchedule[] @relation("AgentScheduleAgent")
|
|
321
|
+
apiKeys ApiKey[] @relation("ApiKeyAgent")
|
|
256
322
|
|
|
257
323
|
@@unique([organizationId, slug], map: "uq_org_agent_type_org_slug")
|
|
258
324
|
@@index([organizationId], map: "idx_org_agent_types_organization")
|
|
325
|
+
@@index([createdByUserId], map: "idx_org_agent_types_created_by_user_id")
|
|
259
326
|
@@map("org_agent_types")
|
|
260
327
|
}
|
|
261
328
|
|
|
@@ -279,56 +346,75 @@ model OrgMcpServer {
|
|
|
279
346
|
}
|
|
280
347
|
|
|
281
348
|
model AgentRun {
|
|
282
|
-
id
|
|
283
|
-
organizationId
|
|
284
|
-
prompt
|
|
285
|
-
type
|
|
286
|
-
status
|
|
287
|
-
result
|
|
288
|
-
error
|
|
289
|
-
sandboxId
|
|
290
|
-
model
|
|
291
|
-
startedAt
|
|
292
|
-
completedAt
|
|
293
|
-
createdBy
|
|
294
|
-
scheduleId
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
349
|
+
id String @id @default(uuid()) @db.Uuid
|
|
350
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
351
|
+
prompt String @db.Text
|
|
352
|
+
type String @default("researcher") @db.VarChar(30)
|
|
353
|
+
status String @default("pending") @db.VarChar(20)
|
|
354
|
+
result String @default("") @db.Text
|
|
355
|
+
error String? @db.Text
|
|
356
|
+
sandboxId String? @map("sandbox_id") @db.VarChar(100)
|
|
357
|
+
model String @default("sonnet") @db.VarChar(50)
|
|
358
|
+
startedAt DateTime @default(now()) @map("started_at") @db.Timestamptz
|
|
359
|
+
completedAt DateTime? @map("completed_at") @db.Timestamptz
|
|
360
|
+
createdBy String @map("created_by") @db.VarChar(255)
|
|
361
|
+
scheduleId String? @map("schedule_id") @db.Uuid
|
|
362
|
+
agentId String? @map("agent_id") @db.Uuid
|
|
363
|
+
invokedByUserId String? @map("invoked_by_user_id") @db.Uuid
|
|
364
|
+
parentAgentRunId String? @map("parent_agent_run_id") @db.Uuid
|
|
365
|
+
actClaim Json? @map("act_claim")
|
|
366
|
+
capturedAbility Json? @map("captured_ability")
|
|
367
|
+
|
|
368
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
369
|
+
schedule AgentSchedule? @relation(fields: [scheduleId], references: [id], onDelete: SetNull)
|
|
370
|
+
agent OrgAgentType? @relation("AgentRunAgent", fields: [agentId], references: [id], onDelete: SetNull)
|
|
371
|
+
invokedByUser User? @relation("AgentRunInvokedBy", fields: [invokedByUserId], references: [id], onDelete: SetNull)
|
|
372
|
+
parent AgentRun? @relation("AgentRunParent", fields: [parentAgentRunId], references: [id], onDelete: SetNull)
|
|
373
|
+
children AgentRun[] @relation("AgentRunParent")
|
|
298
374
|
|
|
299
375
|
@@index([organizationId], map: "idx_agent_runs_organization")
|
|
300
376
|
@@index([status], map: "idx_agent_runs_status")
|
|
301
377
|
@@index([type], map: "idx_agent_runs_type")
|
|
302
378
|
@@index([scheduleId], map: "idx_agent_runs_schedule")
|
|
379
|
+
@@index([agentId], map: "idx_agent_runs_agent_id")
|
|
380
|
+
@@index([invokedByUserId], map: "idx_agent_runs_invoked_by_user_id")
|
|
381
|
+
@@index([parentAgentRunId], map: "idx_agent_runs_parent_agent_run_id")
|
|
303
382
|
@@map("agent_runs")
|
|
304
383
|
}
|
|
305
384
|
|
|
306
385
|
model AgentSchedule {
|
|
307
|
-
id
|
|
308
|
-
organizationId
|
|
309
|
-
name
|
|
310
|
-
description
|
|
311
|
-
cronExpression
|
|
312
|
-
timezone
|
|
313
|
-
agentType
|
|
314
|
-
prompt
|
|
315
|
-
model
|
|
316
|
-
workspace
|
|
317
|
-
enabled
|
|
318
|
-
apiKeyEncrypted
|
|
319
|
-
apiKeyHash
|
|
320
|
-
gcpJobName
|
|
321
|
-
lastTriggeredAt
|
|
322
|
-
lastRunId
|
|
323
|
-
createdBy
|
|
324
|
-
createdAt
|
|
325
|
-
updatedAt
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
386
|
+
id String @id @default(uuid()) @db.Uuid
|
|
387
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
388
|
+
name String @db.VarChar(200)
|
|
389
|
+
description String @default("") @db.Text
|
|
390
|
+
cronExpression String @map("cron_expression") @db.VarChar(100)
|
|
391
|
+
timezone String @default("UTC") @db.VarChar(50)
|
|
392
|
+
agentType String @default("researcher") @map("agent_type") @db.VarChar(30)
|
|
393
|
+
prompt String @db.Text
|
|
394
|
+
model String @default("sonnet") @db.VarChar(50)
|
|
395
|
+
workspace String? @db.VarChar(200)
|
|
396
|
+
enabled Boolean @default(true)
|
|
397
|
+
apiKeyEncrypted String @map("api_key_encrypted") @db.Text
|
|
398
|
+
apiKeyHash String @map("api_key_hash") @db.VarChar(64)
|
|
399
|
+
gcpJobName String? @map("gcp_job_name") @db.VarChar(500)
|
|
400
|
+
lastTriggeredAt DateTime? @map("last_triggered_at") @db.Timestamptz
|
|
401
|
+
lastRunId String? @map("last_run_id") @db.Uuid
|
|
402
|
+
createdBy String @map("created_by") @db.VarChar(255)
|
|
403
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
404
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
405
|
+
agentId String? @map("agent_id") @db.Uuid
|
|
406
|
+
scheduledByUserId String? @map("scheduled_by_user_id") @db.Uuid
|
|
407
|
+
capturedAbility Json? @map("captured_ability")
|
|
408
|
+
|
|
409
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
410
|
+
runs AgentRun[]
|
|
411
|
+
agent OrgAgentType? @relation("AgentScheduleAgent", fields: [agentId], references: [id], onDelete: SetNull)
|
|
412
|
+
scheduledByUser User? @relation("AgentScheduleScheduledBy", fields: [scheduledByUserId], references: [id], onDelete: SetNull)
|
|
329
413
|
|
|
330
414
|
@@index([organizationId], map: "idx_agent_schedules_organization")
|
|
331
415
|
@@index([apiKeyHash], map: "idx_agent_schedules_api_key_hash")
|
|
416
|
+
@@index([agentId], map: "idx_agent_schedules_agent_id")
|
|
417
|
+
@@index([scheduledByUserId], map: "idx_agent_schedules_scheduled_by_user_id")
|
|
332
418
|
@@map("agent_schedules")
|
|
333
419
|
}
|
|
334
420
|
|
|
@@ -341,17 +427,184 @@ model ApiKey {
|
|
|
341
427
|
lastUsedAt DateTime? @map("last_used_at") @db.Timestamptz
|
|
342
428
|
active Int @default(1)
|
|
343
429
|
organizationId String @map("organization_id") @db.Uuid
|
|
430
|
+
agentId String? @map("agent_id") @db.Uuid
|
|
344
431
|
|
|
345
|
-
organization Organization
|
|
432
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
433
|
+
agent OrgAgentType? @relation("ApiKeyAgent", fields: [agentId], references: [id], onDelete: SetNull)
|
|
346
434
|
|
|
347
435
|
@@index([organizationId], map: "idx_api_keys_organization")
|
|
436
|
+
@@index([agentId], map: "idx_api_keys_agent_id")
|
|
348
437
|
@@map("api_keys")
|
|
349
438
|
}
|
|
350
439
|
|
|
351
440
|
model EmbeddingCache {
|
|
352
|
-
contentHash String
|
|
441
|
+
contentHash String @id @map("content_hash") @db.VarChar(64)
|
|
353
442
|
embedding Unsupported("vector")
|
|
354
|
-
createdAt DateTime
|
|
443
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
355
444
|
|
|
356
445
|
@@map("embedding_cache")
|
|
357
446
|
}
|
|
447
|
+
|
|
448
|
+
model AuditEvent {
|
|
449
|
+
id String @id @default(uuid()) @db.Uuid
|
|
450
|
+
agentRunId String? @map("agent_run_id") @db.Uuid
|
|
451
|
+
principalType String @map("principal_type") @db.VarChar(30)
|
|
452
|
+
principalId String @map("principal_id") @db.VarChar(255)
|
|
453
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
454
|
+
action String @db.VarChar(100)
|
|
455
|
+
subjectType String? @map("subject_type") @db.VarChar(100)
|
|
456
|
+
subjectId String? @map("subject_id") @db.VarChar(255)
|
|
457
|
+
effectiveAbility Json @default("{}") @map("effective_ability")
|
|
458
|
+
result String @db.VarChar(20)
|
|
459
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
460
|
+
|
|
461
|
+
@@index([organizationId], map: "idx_audit_events_organization_id")
|
|
462
|
+
@@index([agentRunId], map: "idx_audit_events_agent_run_id")
|
|
463
|
+
@@index([createdAt], map: "idx_audit_events_created_at")
|
|
464
|
+
@@map("audit_events")
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
model UsageRecord {
|
|
468
|
+
id String @id @default(uuid()) @db.Uuid
|
|
469
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
470
|
+
metric String @db.VarChar(50)
|
|
471
|
+
periodStart DateTime @map("period_start") @db.Date
|
|
472
|
+
count Int @default(0)
|
|
473
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
474
|
+
|
|
475
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
476
|
+
|
|
477
|
+
@@unique([organizationId, metric, periodStart], map: "uq_usage_org_metric_period")
|
|
478
|
+
@@index([organizationId], map: "idx_usage_records_organization")
|
|
479
|
+
@@map("usage_records")
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// ── Tag System ──────────────────────────────────────────────────────────────
|
|
483
|
+
|
|
484
|
+
model TagDefinition {
|
|
485
|
+
id String @id @default(uuid()) @db.Uuid
|
|
486
|
+
organizationId String? @map("organization_id") @db.Uuid
|
|
487
|
+
tagName String @map("tag_name") @db.VarChar(100)
|
|
488
|
+
tagType String @map("tag_type") @db.VarChar(20)
|
|
489
|
+
cardinality String @default("singleton") @db.VarChar(10)
|
|
490
|
+
source String @default("extracted") @db.VarChar(20)
|
|
491
|
+
status String @default("active") @map("status") @db.VarChar(20)
|
|
492
|
+
description String @default("") @db.Text
|
|
493
|
+
category String? @map("category") @db.VarChar(50)
|
|
494
|
+
labels Json? @map("labels") @db.JsonB
|
|
495
|
+
applicableNodeTypes Json @default("[]") @map("applicable_node_types")
|
|
496
|
+
requiredForNodeTypes Json @default("[]") @map("required_for_node_types")
|
|
497
|
+
enumValues Json? @map("enum_values")
|
|
498
|
+
enumVersion Int @default(1) @map("enum_version")
|
|
499
|
+
dependsOn Json @default("[]") @map("depends_on")
|
|
500
|
+
autoAcceptThreshold Float? @map("auto_accept_threshold") @db.Real
|
|
501
|
+
parentDefinitionId String? @map("parent_definition_id") @db.Uuid
|
|
502
|
+
replacedBy String? @map("replaced_by") @db.Uuid
|
|
503
|
+
deprecatedAt DateTime? @map("deprecated_at") @db.Timestamptz
|
|
504
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
505
|
+
createdBy String @map("created_by") @db.VarChar(255)
|
|
506
|
+
|
|
507
|
+
organization Organization? @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
508
|
+
parentDef TagDefinition? @relation("TagDefHierarchy", fields: [parentDefinitionId], references: [id])
|
|
509
|
+
childDefs TagDefinition[] @relation("TagDefHierarchy")
|
|
510
|
+
replacementDef TagDefinition? @relation("TagDefReplacement", fields: [replacedBy], references: [id])
|
|
511
|
+
replacedDefs TagDefinition[] @relation("TagDefReplacement")
|
|
512
|
+
tags NodeTag[]
|
|
513
|
+
|
|
514
|
+
@@unique([organizationId, tagName], map: "uq_tag_def_org_name")
|
|
515
|
+
@@index([organizationId], map: "idx_tag_defs_org")
|
|
516
|
+
@@index([parentDefinitionId], map: "idx_tag_defs_parent")
|
|
517
|
+
@@map("tag_definitions")
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
model NodeTag {
|
|
521
|
+
id String @id @default(uuid()) @db.Uuid
|
|
522
|
+
nodeId String @map("node_id") @db.Uuid
|
|
523
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
524
|
+
tagDefinitionId String @map("tag_definition_id") @db.Uuid
|
|
525
|
+
tagName String @map("tag_name") @db.VarChar(100)
|
|
526
|
+
isSingleton Boolean @default(false) @map("is_singleton")
|
|
527
|
+
|
|
528
|
+
valueText String? @map("value_text") @db.Text
|
|
529
|
+
valueNum Float? @map("value_num") @db.DoublePrecision
|
|
530
|
+
valueCurrency String? @map("value_currency") @db.Char(3)
|
|
531
|
+
valueUnit String? @map("value_unit") @db.VarChar(20)
|
|
532
|
+
valueDate DateTime? @map("value_date") @db.Timestamptz
|
|
533
|
+
valueRef String? @map("value_ref") @db.Uuid
|
|
534
|
+
|
|
535
|
+
textSpan String? @map("text_span") @db.Text
|
|
536
|
+
offsetStart Int? @map("offset_start")
|
|
537
|
+
offsetEnd Int? @map("offset_end")
|
|
538
|
+
contentVersion Int? @map("content_version")
|
|
539
|
+
attrs Json @default("{}") @db.JsonB
|
|
540
|
+
|
|
541
|
+
taggedBy String @map("tagged_by") @db.VarChar(255)
|
|
542
|
+
modelId String? @map("model_id") @db.VarChar(100)
|
|
543
|
+
modelVersion String? @map("model_version") @db.VarChar(50)
|
|
544
|
+
confidence Float? @db.Real
|
|
545
|
+
verificationStatus String @default("unverified") @map("verification_status") @db.VarChar(20)
|
|
546
|
+
verifiedBy String? @map("verified_by") @db.VarChar(255)
|
|
547
|
+
verifiedAt DateTime? @map("verified_at") @db.Timestamptz
|
|
548
|
+
supersededBy String? @map("superseded_by") @db.Uuid
|
|
549
|
+
batchId String? @map("batch_id") @db.Uuid
|
|
550
|
+
|
|
551
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
552
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
553
|
+
|
|
554
|
+
node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade)
|
|
555
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
556
|
+
tagDefinition TagDefinition @relation(fields: [tagDefinitionId], references: [id])
|
|
557
|
+
supersedes NodeTag? @relation("TagSupersession", fields: [supersededBy], references: [id])
|
|
558
|
+
supersededTags NodeTag[] @relation("TagSupersession")
|
|
559
|
+
|
|
560
|
+
@@index([nodeId], map: "idx_node_tags_node")
|
|
561
|
+
@@index([organizationId, tagName], map: "idx_node_tags_org_name")
|
|
562
|
+
@@index([valueRef], map: "idx_node_tags_ref")
|
|
563
|
+
@@index([batchId], map: "idx_node_tags_batch")
|
|
564
|
+
@@map("node_tags")
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
model NodeTagHistory {
|
|
568
|
+
id String @id @default(uuid()) @db.Uuid
|
|
569
|
+
tagId String @map("tag_id") @db.Uuid
|
|
570
|
+
nodeId String @map("node_id") @db.Uuid
|
|
571
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
572
|
+
tagName String @map("tag_name") @db.VarChar(100)
|
|
573
|
+
|
|
574
|
+
valueText String? @map("value_text") @db.Text
|
|
575
|
+
valueNum Float? @map("value_num") @db.DoublePrecision
|
|
576
|
+
valueCurrency String? @map("value_currency") @db.Char(3)
|
|
577
|
+
valueUnit String? @map("value_unit") @db.VarChar(20)
|
|
578
|
+
valueDate DateTime? @map("value_date") @db.Timestamptz
|
|
579
|
+
valueRef String? @map("value_ref") @db.Uuid
|
|
580
|
+
|
|
581
|
+
validFrom DateTime @map("valid_from") @db.Timestamptz
|
|
582
|
+
validUntil DateTime @map("valid_until") @db.Timestamptz
|
|
583
|
+
systemFrom DateTime @map("system_from") @db.Timestamptz
|
|
584
|
+
systemTo DateTime? @map("system_to") @db.Timestamptz
|
|
585
|
+
|
|
586
|
+
replacedBy String @map("replaced_by") @db.VarChar(255)
|
|
587
|
+
|
|
588
|
+
@@index([nodeId, tagName, validFrom], map: "idx_tag_history_node_name_time")
|
|
589
|
+
@@index([organizationId, tagName, validFrom], map: "idx_tag_history_org_name_time")
|
|
590
|
+
@@index([nodeId, tagName, systemFrom], map: "idx_tag_history_node_name_system_time")
|
|
591
|
+
@@map("node_tag_history")
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
model NodeTagAudit {
|
|
595
|
+
id String @id @default(uuid()) @db.Uuid
|
|
596
|
+
tagId String @map("tag_id") @db.Uuid
|
|
597
|
+
nodeId String @map("node_id") @db.Uuid
|
|
598
|
+
orgId String @map("organization_id") @db.Uuid
|
|
599
|
+
action String @map("action") @db.VarChar(20)
|
|
600
|
+
oldValue Json? @map("old_value") @db.JsonB
|
|
601
|
+
newValue Json? @map("new_value") @db.JsonB
|
|
602
|
+
actorId String @map("actor_id") @db.Uuid
|
|
603
|
+
reason String? @db.Text
|
|
604
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
605
|
+
|
|
606
|
+
@@index([tagId], map: "idx_tag_audit_tag")
|
|
607
|
+
@@index([nodeId], map: "idx_tag_audit_node")
|
|
608
|
+
@@index([orgId, createdAt], map: "idx_tag_audit_org_time")
|
|
609
|
+
@@map("node_tag_audit")
|
|
610
|
+
}
|