@apart-tech/intelligence-core 1.18.0 → 1.19.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 (35) hide show
  1. package/dist/auth/ability.d.ts +1 -1
  2. package/dist/auth/ability.d.ts.map +1 -1
  3. package/dist/auth/ability.js +15 -0
  4. package/dist/auth/ability.js.map +1 -1
  5. package/dist/auth/ability.test.js +45 -2
  6. package/dist/auth/ability.test.js.map +1 -1
  7. package/dist/db/tenant.d.ts.map +1 -1
  8. package/dist/db/tenant.js +10 -0
  9. package/dist/db/tenant.js.map +1 -1
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +6 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/services/chat-context-service.d.ts +33 -0
  15. package/dist/services/chat-context-service.d.ts.map +1 -0
  16. package/dist/services/chat-context-service.js +110 -0
  17. package/dist/services/chat-context-service.js.map +1 -0
  18. package/dist/services/chat-service.d.ts +83 -0
  19. package/dist/services/chat-service.d.ts.map +1 -0
  20. package/dist/services/chat-service.js +103 -0
  21. package/dist/services/chat-service.js.map +1 -0
  22. package/dist/services/chat-usage-service.d.ts +36 -0
  23. package/dist/services/chat-usage-service.d.ts.map +1 -0
  24. package/dist/services/chat-usage-service.js +89 -0
  25. package/dist/services/chat-usage-service.js.map +1 -0
  26. package/dist/services/llm-router-service.d.ts +29 -0
  27. package/dist/services/llm-router-service.d.ts.map +1 -0
  28. package/dist/services/llm-router-service.js +70 -0
  29. package/dist/services/llm-router-service.js.map +1 -0
  30. package/dist/services/org-llm-provider-service.d.ts +47 -0
  31. package/dist/services/org-llm-provider-service.d.ts.map +1 -0
  32. package/dist/services/org-llm-provider-service.js +126 -0
  33. package/dist/services/org-llm-provider-service.js.map +1 -0
  34. package/package.json +1 -1
  35. package/prisma/schema.prisma +108 -0
@@ -45,6 +45,11 @@ model Organization {
45
45
  nodeChunks NodeChunk[]
46
46
  piiQueryLogs PiiQueryLog[]
47
47
  documents Document[]
48
+ llmProviders OrgLlmProvider[]
49
+ chatSessions ChatSession[]
50
+ chatMessages ChatMessage[]
51
+ chatGuidelines OrgChatGuideline[]
52
+ priorityDocuments OrgPriorityDocument[]
48
53
 
49
54
  @@map("organizations")
50
55
  }
@@ -775,3 +780,106 @@ model SearchMetric {
775
780
  @@index([organizationId, createdAt], map: "idx_search_metrics_org_time")
776
781
  @@map("search_metrics")
777
782
  }
783
+
784
+ // ── Chat Gateway ────────────────────────────────────────────────────────────
785
+
786
+ model OrgLlmProvider {
787
+ id String @id @default(uuid()) @db.Uuid
788
+ organizationId String @map("organization_id") @db.Uuid
789
+ provider String @db.VarChar(30)
790
+ displayName String @map("display_name") @db.VarChar(200)
791
+ encryptedApiKey String @map("encrypted_api_key") @db.Text
792
+ baseUrl String? @map("base_url") @db.VarChar(500)
793
+ models String[]
794
+ defaultModel String? @map("default_model") @db.VarChar(100)
795
+ dataResidency String @default("any") @map("data_residency") @db.VarChar(10)
796
+ enabled Boolean @default(true)
797
+ priority Int @default(0)
798
+ maxTokensPerMin Int? @map("max_tokens_per_min")
799
+ createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
800
+ updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
801
+
802
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
803
+
804
+ @@unique([organizationId, provider], map: "uq_org_llm_provider_org_provider")
805
+ @@index([organizationId], map: "idx_org_llm_providers_org")
806
+ @@map("org_llm_providers")
807
+ }
808
+
809
+ model ChatSession {
810
+ id String @id @default(uuid()) @db.Uuid
811
+ organizationId String @map("organization_id") @db.Uuid
812
+ userId String @map("user_id") @db.Uuid
813
+ title String? @db.VarChar(500)
814
+ privacy String @default("private") @db.VarChar(20)
815
+ status String @default("active") @db.VarChar(20)
816
+ workspaceId String? @map("workspace_id") @db.Uuid
817
+ graphCaptured Boolean @default(false) @map("graph_captured")
818
+ createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
819
+ updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
820
+
821
+ messages ChatMessage[]
822
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
823
+
824
+ @@index([organizationId, userId, createdAt], map: "idx_chat_sessions_org_user_time")
825
+ @@index([organizationId, privacy, createdAt], map: "idx_chat_sessions_org_privacy_time")
826
+ @@map("chat_sessions")
827
+ }
828
+
829
+ model ChatMessage {
830
+ id String @id @default(uuid()) @db.Uuid
831
+ sessionId String @map("session_id") @db.Uuid
832
+ organizationId String @map("organization_id") @db.Uuid
833
+ role String @db.VarChar(20)
834
+ content String @db.Text
835
+ contentClean String? @map("content_clean") @db.Text
836
+ model String? @db.VarChar(100)
837
+ providerId String? @map("provider_id") @db.Uuid
838
+ tokensIn Int? @map("tokens_in")
839
+ tokensOut Int? @map("tokens_out")
840
+ costCents Int? @map("cost_cents")
841
+ durationMs Int? @map("duration_ms")
842
+ piiDetected Boolean @default(false) @map("pii_detected")
843
+ piiReport Json? @map("pii_report")
844
+ contextNodeIds String[] @default([]) @map("context_node_ids")
845
+ documentIds String[] @default([]) @map("document_ids")
846
+ createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
847
+
848
+ session ChatSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
849
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
850
+
851
+ @@index([sessionId, createdAt], map: "idx_chat_messages_session_time")
852
+ @@index([organizationId, createdAt], map: "idx_chat_messages_org_time")
853
+ @@map("chat_messages")
854
+ }
855
+
856
+ model OrgChatGuideline {
857
+ id String @id @default(uuid()) @db.Uuid
858
+ organizationId String @map("organization_id") @db.Uuid
859
+ title String @db.VarChar(200)
860
+ content String @db.Text
861
+ priority Int @default(0)
862
+ enabled Boolean @default(true)
863
+ createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
864
+ updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
865
+
866
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
867
+
868
+ @@index([organizationId], map: "idx_org_chat_guidelines_org")
869
+ @@map("org_chat_guidelines")
870
+ }
871
+
872
+ model OrgPriorityDocument {
873
+ id String @id @default(uuid()) @db.Uuid
874
+ organizationId String @map("organization_id") @db.Uuid
875
+ nodeId String @map("node_id") @db.Uuid
876
+ boostWeight Int @default(1) @map("boost_weight")
877
+ createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
878
+ updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
879
+
880
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
881
+
882
+ @@unique([organizationId, nodeId], map: "uq_org_priority_doc_org_node")
883
+ @@index([organizationId], map: "idx_org_priority_documents_org")
884
+ @@map("org_priority_documents")
885
+ }