@m6d/cortex-server 1.1.1 → 1.1.2

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 (42) hide show
  1. package/README.md +38 -38
  2. package/dist/src/factory.d.ts +13 -1
  3. package/dist/src/ws/index.d.ts +1 -1
  4. package/package.json +54 -54
  5. package/src/adapters/database.ts +21 -28
  6. package/src/adapters/minio.ts +69 -69
  7. package/src/adapters/mssql.ts +171 -195
  8. package/src/adapters/storage.ts +4 -4
  9. package/src/ai/fetch.ts +31 -31
  10. package/src/ai/helpers.ts +18 -22
  11. package/src/ai/index.ts +101 -113
  12. package/src/ai/interceptors/resolve-captured-files.ts +42 -49
  13. package/src/ai/prompt.ts +80 -83
  14. package/src/ai/tools/call-endpoint.tool.ts +75 -82
  15. package/src/ai/tools/capture-files.tool.ts +15 -17
  16. package/src/ai/tools/execute-code.tool.ts +73 -80
  17. package/src/ai/tools/query-graph.tool.ts +17 -17
  18. package/src/auth/middleware.ts +51 -51
  19. package/src/cli/extract-endpoints.ts +436 -474
  20. package/src/config.ts +124 -134
  21. package/src/db/migrate.ts +13 -13
  22. package/src/db/migrations/20260309012148_cloudy_maria_hill/snapshot.json +303 -303
  23. package/src/db/schema.ts +46 -58
  24. package/src/factory.ts +136 -139
  25. package/src/graph/generate-cypher.ts +97 -97
  26. package/src/graph/helpers.ts +37 -37
  27. package/src/graph/index.ts +20 -20
  28. package/src/graph/neo4j.ts +82 -89
  29. package/src/graph/resolver.ts +201 -211
  30. package/src/graph/seed.ts +101 -114
  31. package/src/graph/types.ts +88 -88
  32. package/src/graph/validate.ts +55 -57
  33. package/src/index.ts +5 -5
  34. package/src/routes/chat.ts +23 -23
  35. package/src/routes/files.ts +75 -80
  36. package/src/routes/threads.ts +52 -54
  37. package/src/routes/ws.ts +22 -22
  38. package/src/types.ts +30 -30
  39. package/src/ws/connections.ts +11 -11
  40. package/src/ws/events.ts +2 -2
  41. package/src/ws/index.ts +1 -5
  42. package/src/ws/notify.ts +4 -4
package/src/config.ts CHANGED
@@ -4,153 +4,143 @@ import type { StorageAdapter } from "./adapters/storage";
4
4
  import type { DomainDef } from "./graph/types.ts";
5
5
 
6
6
  export type KnowledgeConfig = {
7
- swagger?: { url: string };
8
- domains?: Record<string, DomainDef>;
7
+ swagger?: { url: string };
8
+ domains?: Record<string, DomainDef>;
9
9
  };
10
10
 
11
11
  export type DatabaseConfig = {
12
- type: "mssql";
13
- connectionString: string;
12
+ type: "mssql";
13
+ connectionString: string;
14
14
  };
15
15
 
16
16
  export type StorageConfig = {
17
- endPoint: string;
18
- port: number;
19
- useSSL: boolean;
20
- accessKey: string;
21
- secretKey: string;
22
- bucketName?: string;
17
+ endPoint: string;
18
+ port: number;
19
+ useSSL: boolean;
20
+ accessKey: string;
21
+ secretKey: string;
22
+ bucketName?: string;
23
23
  };
24
24
 
25
25
  export type CortexAgentDefinition = {
26
- systemPrompt:
27
- | string
28
- | ((session: Record<string, unknown> | null) => string | Promise<string>);
29
- tools?: Record<string, unknown>;
30
- backendFetch?: {
31
- baseUrl: string;
32
- apiKey: string;
33
- headers?: Record<string, string>;
34
- transformRequestBody?: (
35
- body: Record<string, unknown>,
36
- context: { token: string },
37
- ) => Promise<Record<string, unknown>>;
38
- };
39
- loadSessionData?: (token: string) => Promise<Record<string, unknown>>;
40
- onToolCall?: (toolCall: {
41
- toolName: string;
42
- toolCallId: string;
43
- args: Record<string, unknown>;
44
- }) => void;
45
- onStreamFinish?: (result: {
46
- messages: UIMessage[];
47
- isAborted: boolean;
48
- }) => void;
49
- model?: {
50
- baseURL: string;
51
- apiKey: string;
52
- modelName: string;
53
- providerName?: string;
54
- };
55
- embedding?: {
56
- baseURL: string;
57
- apiKey: string;
58
- modelName: string;
59
- dimension: number;
60
- };
61
- neo4j?: {
62
- url: string;
63
- user: string;
64
- password: string;
65
- };
66
- reranker?: {
67
- url: string;
68
- apiKey: string;
69
- };
70
- knowledge?: KnowledgeConfig | null;
26
+ systemPrompt: string | ((session: Record<string, unknown> | null) => string | Promise<string>);
27
+ tools?: Record<string, unknown>;
28
+ backendFetch?: {
29
+ baseUrl: string;
30
+ apiKey: string;
31
+ headers?: Record<string, string>;
32
+ transformRequestBody?: (
33
+ body: Record<string, unknown>,
34
+ context: { token: string },
35
+ ) => Promise<Record<string, unknown>>;
36
+ };
37
+ loadSessionData?: (token: string) => Promise<Record<string, unknown>>;
38
+ onToolCall?: (toolCall: {
39
+ toolName: string;
40
+ toolCallId: string;
41
+ args: Record<string, unknown>;
42
+ }) => void;
43
+ onStreamFinish?: (result: { messages: UIMessage[]; isAborted: boolean }) => void;
44
+ model?: {
45
+ baseURL: string;
46
+ apiKey: string;
47
+ modelName: string;
48
+ providerName?: string;
49
+ };
50
+ embedding?: {
51
+ baseURL: string;
52
+ apiKey: string;
53
+ modelName: string;
54
+ dimension: number;
55
+ };
56
+ neo4j?: {
57
+ url: string;
58
+ user: string;
59
+ password: string;
60
+ };
61
+ reranker?: {
62
+ url: string;
63
+ apiKey: string;
64
+ };
65
+ knowledge?: KnowledgeConfig | null;
71
66
  };
72
67
 
73
68
  export type ResolvedCortexAgentConfig = {
74
- db: DatabaseAdapter;
75
- storage: StorageAdapter;
76
- model: {
77
- baseURL: string;
78
- apiKey: string;
79
- modelName: string;
80
- providerName?: string;
81
- };
82
- embedding: {
83
- baseURL: string;
84
- apiKey: string;
85
- modelName: string;
86
- dimension: number;
87
- };
88
- neo4j: {
89
- url: string;
90
- user: string;
91
- password: string;
92
- };
93
- reranker?: {
94
- url: string;
95
- apiKey: string;
96
- };
97
- systemPrompt:
98
- | string
99
- | ((session: Record<string, unknown> | null) => string | Promise<string>);
100
- tools?: Record<string, unknown>;
101
- backendFetch?: {
102
- baseUrl: string;
103
- apiKey: string;
104
- headers?: Record<string, string>;
105
- transformRequestBody?: (
106
- body: Record<string, unknown>,
107
- context: { token: string },
108
- ) => Promise<Record<string, unknown>>;
109
- };
110
- loadSessionData?: (token: string) => Promise<Record<string, unknown>>;
111
- onToolCall?: (toolCall: {
112
- toolName: string;
113
- toolCallId: string;
114
- args: Record<string, unknown>;
115
- }) => void;
116
- onStreamFinish?: (result: {
117
- messages: UIMessage[];
118
- isAborted: boolean;
119
- }) => void;
120
- knowledge?: KnowledgeConfig;
69
+ db: DatabaseAdapter;
70
+ storage: StorageAdapter;
71
+ model: {
72
+ baseURL: string;
73
+ apiKey: string;
74
+ modelName: string;
75
+ providerName?: string;
76
+ };
77
+ embedding: {
78
+ baseURL: string;
79
+ apiKey: string;
80
+ modelName: string;
81
+ dimension: number;
82
+ };
83
+ neo4j: {
84
+ url: string;
85
+ user: string;
86
+ password: string;
87
+ };
88
+ reranker?: {
89
+ url: string;
90
+ apiKey: string;
91
+ };
92
+ systemPrompt: string | ((session: Record<string, unknown> | null) => string | Promise<string>);
93
+ tools?: Record<string, unknown>;
94
+ backendFetch?: {
95
+ baseUrl: string;
96
+ apiKey: string;
97
+ headers?: Record<string, string>;
98
+ transformRequestBody?: (
99
+ body: Record<string, unknown>,
100
+ context: { token: string },
101
+ ) => Promise<Record<string, unknown>>;
102
+ };
103
+ loadSessionData?: (token: string) => Promise<Record<string, unknown>>;
104
+ onToolCall?: (toolCall: {
105
+ toolName: string;
106
+ toolCallId: string;
107
+ args: Record<string, unknown>;
108
+ }) => void;
109
+ onStreamFinish?: (result: { messages: UIMessage[]; isAborted: boolean }) => void;
110
+ knowledge?: KnowledgeConfig;
121
111
  };
122
112
 
123
113
  export type CortexConfig = {
124
- port?: number;
125
- database: DatabaseConfig;
126
- storage: StorageConfig;
127
- auth: {
128
- jwksUri: string;
129
- issuer: string;
130
- tokenExtractor?: (req: Request) => string | null;
131
- cookieName?: string;
132
- };
133
- model: {
134
- baseURL: string;
135
- apiKey: string;
136
- modelName: string;
137
- providerName?: string;
138
- };
139
- embedding: {
140
- baseURL: string;
141
- apiKey: string;
142
- modelName: string;
143
- dimension: number;
144
- };
145
- neo4j: {
146
- url: string;
147
- user: string;
148
- password: string;
149
- };
150
- reranker?: {
151
- url: string;
152
- apiKey: string;
153
- };
154
- knowledge?: KnowledgeConfig;
155
- agents: Record<string, CortexAgentDefinition>;
114
+ port?: number;
115
+ database: DatabaseConfig;
116
+ storage: StorageConfig;
117
+ auth: {
118
+ jwksUri: string;
119
+ issuer: string;
120
+ tokenExtractor?: (req: Request) => string | null;
121
+ cookieName?: string;
122
+ };
123
+ model: {
124
+ baseURL: string;
125
+ apiKey: string;
126
+ modelName: string;
127
+ providerName?: string;
128
+ };
129
+ embedding: {
130
+ baseURL: string;
131
+ apiKey: string;
132
+ modelName: string;
133
+ dimension: number;
134
+ };
135
+ neo4j: {
136
+ url: string;
137
+ user: string;
138
+ password: string;
139
+ };
140
+ reranker?: {
141
+ url: string;
142
+ apiKey: string;
143
+ };
144
+ knowledge?: KnowledgeConfig;
145
+ agents: Record<string, CortexAgentDefinition>;
156
146
  };
package/src/db/migrate.ts CHANGED
@@ -4,18 +4,18 @@ import { migrate } from "drizzle-orm/node-mssql/migrator";
4
4
  import { resolve } from "path";
5
5
 
6
6
  export async function runMigrations(connectionString: string) {
7
- const pool = new mssql.ConnectionPool(connectionString);
8
- await pool.connect();
7
+ const pool = new mssql.ConnectionPool(connectionString);
8
+ await pool.connect();
9
9
 
10
- try {
11
- const db = drizzle({ client: pool, casing: "snake_case" });
12
- const migrationsFolder = resolve(import.meta.dir, "migrations");
13
- console.log("[cortex-server] Running migrations from:", migrationsFolder);
14
- await migrate(db, { migrationsFolder });
15
- console.log("[cortex-server] Migrations complete");
16
- } catch (e) {
17
- console.log(e);
18
- } finally {
19
- await pool.close();
20
- }
10
+ try {
11
+ const db = drizzle({ client: pool, casing: "snake_case" });
12
+ const migrationsFolder = resolve(import.meta.dir, "migrations");
13
+ console.log("[cortex-server] Running migrations from:", migrationsFolder);
14
+ await migrate(db, { migrationsFolder });
15
+ console.log("[cortex-server] Migrations complete");
16
+ } catch (e) {
17
+ console.log(e);
18
+ } finally {
19
+ await pool.close();
20
+ }
21
21
  }