@librechat/data-schemas 0.0.40 → 0.0.42
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/index.cjs +4810 -284
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +4783 -283
- package/dist/index.es.js.map +1 -1
- package/dist/types/admin/capabilities.d.ts +71 -0
- package/dist/types/admin/index.d.ts +1 -0
- package/dist/types/app/index.d.ts +1 -0
- package/dist/types/app/resolution.d.ts +13 -0
- package/dist/types/config/tenantContext.d.ts +20 -0
- package/dist/types/index.d.ts +5 -1
- package/dist/types/methods/aclEntry.d.ts +10 -1
- package/dist/types/methods/action.d.ts +34 -0
- package/dist/types/methods/agent.d.ts +89 -0
- package/dist/types/methods/assistant.d.ts +39 -0
- package/dist/types/methods/banner.d.ts +31 -0
- package/dist/types/methods/categories.d.ts +34 -0
- package/dist/types/methods/config.d.ts +39 -0
- package/dist/types/methods/conversation.d.ts +82 -0
- package/dist/types/methods/conversationTag.d.ts +93 -0
- package/dist/types/methods/index.d.ts +35 -4
- package/dist/types/methods/memory.d.ts +1 -0
- package/dist/types/methods/message.d.ts +77 -0
- package/dist/types/methods/preset.d.ts +88 -0
- package/dist/types/methods/prompt.d.ts +410 -0
- package/dist/types/methods/role.d.ts +13 -1
- package/dist/types/methods/spendTokens.d.ts +63 -0
- package/dist/types/methods/systemGrant.d.ts +59 -0
- package/dist/types/methods/test-helpers.d.ts +18 -0
- package/dist/types/methods/toolCall.d.ts +82 -0
- package/dist/types/methods/transaction.d.ts +67 -13
- package/dist/types/methods/tx.d.ts +108 -0
- package/dist/types/methods/userGroup.d.ts +6 -0
- package/dist/types/migrations/index.d.ts +1 -0
- package/dist/types/migrations/tenantIndexes.d.ts +52 -0
- package/dist/types/models/accessRole.d.ts +0 -3
- package/dist/types/models/aclEntry.d.ts +0 -3
- package/dist/types/models/action.d.ts +0 -3
- package/dist/types/models/agent.d.ts +0 -3
- package/dist/types/models/agentCategory.d.ts +0 -3
- package/dist/types/models/assistant.d.ts +0 -3
- package/dist/types/models/balance.d.ts +0 -3
- package/dist/types/models/banner.d.ts +0 -3
- package/dist/types/models/{project.d.ts → config.d.ts} +1 -4
- package/dist/types/models/conversationTag.d.ts +0 -3
- package/dist/types/models/convo.d.ts +0 -3
- package/dist/types/models/file.d.ts +0 -3
- package/dist/types/models/group.d.ts +0 -3
- package/dist/types/models/index.d.ts +2 -1
- package/dist/types/models/key.d.ts +0 -3
- package/dist/types/models/mcpServer.d.ts +0 -3
- package/dist/types/models/message.d.ts +0 -3
- package/dist/types/models/pluginAuth.d.ts +0 -3
- package/dist/types/models/plugins/tenantIsolation.d.ts +38 -0
- package/dist/types/models/preset.d.ts +0 -3
- package/dist/types/models/prompt.d.ts +0 -3
- package/dist/types/models/promptGroup.d.ts +0 -3
- package/dist/types/models/role.d.ts +0 -3
- package/dist/types/models/session.d.ts +0 -3
- package/dist/types/models/sharedLink.d.ts +0 -3
- package/dist/types/models/systemGrant.d.ts +33 -0
- package/dist/types/models/token.d.ts +0 -3
- package/dist/types/models/toolCall.d.ts +0 -3
- package/dist/types/models/transaction.d.ts +0 -3
- package/dist/types/models/user.d.ts +0 -3
- package/dist/types/schema/agentApiKey.d.ts +1 -0
- package/dist/types/schema/banner.d.ts +1 -0
- package/dist/types/schema/categories.d.ts +1 -0
- package/dist/types/schema/{project.d.ts → config.d.ts} +9 -13
- package/dist/types/schema/conversationTag.d.ts +1 -0
- package/dist/types/schema/index.d.ts +2 -1
- package/dist/types/schema/key.d.ts +1 -0
- package/dist/types/schema/preset.d.ts +1 -0
- package/dist/types/schema/share.d.ts +1 -0
- package/dist/types/schema/systemGrant.d.ts +39 -0
- package/dist/types/schema/toolCall.d.ts +1 -0
- package/dist/types/schema/transaction.d.ts +1 -0
- package/dist/types/types/accessRole.d.ts +1 -0
- package/dist/types/types/aclEntry.d.ts +1 -0
- package/dist/types/types/action.d.ts +1 -0
- package/dist/types/types/admin.d.ts +98 -0
- package/dist/types/types/agent.d.ts +3 -5
- package/dist/types/types/agentApiKey.d.ts +1 -0
- package/dist/types/types/agentCategory.d.ts +1 -0
- package/dist/types/types/app.d.ts +3 -1
- package/dist/types/types/assistant.d.ts +1 -0
- package/dist/types/types/balance.d.ts +11 -0
- package/dist/types/types/banner.d.ts +1 -0
- package/dist/types/types/config.d.ts +58 -0
- package/dist/types/types/convo.d.ts +1 -0
- package/dist/types/types/file.d.ts +1 -0
- package/dist/types/types/group.d.ts +1 -0
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/mcp.d.ts +1 -0
- package/dist/types/types/memory.d.ts +1 -0
- package/dist/types/types/message.d.ts +7 -2
- package/dist/types/types/pluginAuth.d.ts +1 -0
- package/dist/types/types/prompts.d.ts +2 -1
- package/dist/types/types/role.d.ts +1 -0
- package/dist/types/types/session.d.ts +1 -0
- package/dist/types/types/systemGrant.d.ts +47 -0
- package/dist/types/types/token.d.ts +2 -0
- package/dist/types/types/user.d.ts +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/principal.d.ts +34 -0
- package/dist/types/utils/retry.d.ts +41 -0
- package/dist/types/utils/string.d.ts +4 -0
- package/dist/types/utils/tempChatRetention.d.ts +25 -0
- package/package.json +1 -1
- package/dist/types/app/web.spec.d.ts +0 -1
- package/dist/types/methods/accessRole.spec.d.ts +0 -1
- package/dist/types/methods/aclEntry.spec.d.ts +0 -1
- package/dist/types/methods/file.spec.d.ts +0 -1
- package/dist/types/methods/mcpServer.spec.d.ts +0 -1
- package/dist/types/methods/token.spec.d.ts +0 -1
- package/dist/types/methods/user.methods.spec.d.ts +0 -1
- package/dist/types/methods/userGroup.methods.spec.d.ts +0 -1
- package/dist/types/methods/userGroup.roles.spec.d.ts +0 -1
- package/dist/types/methods/userGroup.spec.d.ts +0 -1
- package/dist/types/models/plugins/mongoMeili.spec.d.ts +0 -1
|
@@ -24,12 +24,24 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
|
|
27
|
+
import type { IRole } from '~/types';
|
|
28
|
+
export interface RoleDeps {
|
|
29
|
+
/** Returns a cache store for the given key. Injected from getLogStores. */
|
|
30
|
+
getCache?: (key: string) => {
|
|
31
|
+
get: (k: string) => Promise<unknown>;
|
|
32
|
+
set: (k: string, v: unknown) => Promise<void>;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export declare function createRoleMethods(mongoose: typeof import('mongoose'), deps?: RoleDeps): {
|
|
28
36
|
listRoles: () => Promise<(import("mongoose").FlattenMaps<any> & Required<{
|
|
29
37
|
_id: unknown;
|
|
30
38
|
}> & {
|
|
31
39
|
__v: number;
|
|
32
40
|
})[]>;
|
|
33
41
|
initializeRoles: () => Promise<void>;
|
|
42
|
+
getRoleByName: (roleName: string, fieldsToSelect?: string | string[] | null) => Promise<IRole>;
|
|
43
|
+
updateRoleByName: (roleName: string, updates: Partial<IRole>) => Promise<IRole>;
|
|
44
|
+
updateAccessPermissions: (roleName: string, permissionsUpdate: Record<string, Record<string, boolean>>, roleData?: IRole) => Promise<void>;
|
|
45
|
+
migrateRoleSchema: (roleName?: string) => Promise<number>;
|
|
34
46
|
};
|
|
35
47
|
export type RoleMethods = ReturnType<typeof createRoleMethods>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose" />
|
|
25
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
26
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
+
import type { TxData, TransactionResult } from './transaction';
|
|
28
|
+
/** Base transaction context passed by callers — does not include fields added internally */
|
|
29
|
+
export interface SpendTxData {
|
|
30
|
+
user: string | import('mongoose').Types.ObjectId;
|
|
31
|
+
conversationId?: string;
|
|
32
|
+
model?: string;
|
|
33
|
+
context?: string;
|
|
34
|
+
endpointTokenConfig?: Record<string, Record<string, number>> | null;
|
|
35
|
+
balance?: {
|
|
36
|
+
enabled?: boolean;
|
|
37
|
+
};
|
|
38
|
+
transactions?: {
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
};
|
|
41
|
+
valueKey?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function createSpendTokensMethods(_mongoose: typeof import('mongoose'), transactionMethods: {
|
|
44
|
+
createTransaction: (txData: TxData) => Promise<TransactionResult | undefined>;
|
|
45
|
+
createStructuredTransaction: (txData: TxData) => Promise<TransactionResult | undefined>;
|
|
46
|
+
}): {
|
|
47
|
+
spendTokens: (txData: SpendTxData, tokenUsage: {
|
|
48
|
+
promptTokens?: number;
|
|
49
|
+
completionTokens?: number;
|
|
50
|
+
}) => Promise<void>;
|
|
51
|
+
spendStructuredTokens: (txData: SpendTxData, tokenUsage: {
|
|
52
|
+
promptTokens?: {
|
|
53
|
+
input?: number;
|
|
54
|
+
write?: number;
|
|
55
|
+
read?: number;
|
|
56
|
+
};
|
|
57
|
+
completionTokens?: number;
|
|
58
|
+
}) => Promise<{
|
|
59
|
+
prompt: TransactionResult | undefined;
|
|
60
|
+
completion: TransactionResult | undefined;
|
|
61
|
+
}>;
|
|
62
|
+
};
|
|
63
|
+
export type SpendTokensMethods = ReturnType<typeof createSpendTokensMethods>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
26
|
+
import { PrincipalType } from 'librechat-data-provider';
|
|
27
|
+
import type { Types, ClientSession } from 'mongoose';
|
|
28
|
+
import type { SystemCapability } from '~/types/admin';
|
|
29
|
+
import type { ISystemGrant } from '~/types';
|
|
30
|
+
export declare function createSystemGrantMethods(mongoose: typeof import('mongoose')): {
|
|
31
|
+
grantCapability: ({ principalType, principalId, capability, tenantId, grantedBy, }: {
|
|
32
|
+
principalType: PrincipalType;
|
|
33
|
+
principalId: string | Types.ObjectId;
|
|
34
|
+
capability: SystemCapability;
|
|
35
|
+
tenantId?: string | undefined;
|
|
36
|
+
grantedBy?: string | Types.ObjectId | undefined;
|
|
37
|
+
}, session?: ClientSession) => Promise<ISystemGrant | null>;
|
|
38
|
+
seedSystemGrants: () => Promise<void>;
|
|
39
|
+
revokeCapability: ({ principalType, principalId, capability, tenantId, }: {
|
|
40
|
+
principalType: PrincipalType;
|
|
41
|
+
principalId: string | Types.ObjectId;
|
|
42
|
+
capability: SystemCapability;
|
|
43
|
+
tenantId?: string | undefined;
|
|
44
|
+
}, session?: ClientSession) => Promise<void>;
|
|
45
|
+
hasCapabilityForPrincipals: ({ principals, capability, tenantId, }: {
|
|
46
|
+
principals: Array<{
|
|
47
|
+
principalType: PrincipalType;
|
|
48
|
+
principalId?: string | Types.ObjectId;
|
|
49
|
+
}>;
|
|
50
|
+
capability: SystemCapability;
|
|
51
|
+
tenantId?: string | undefined;
|
|
52
|
+
}) => Promise<boolean>;
|
|
53
|
+
getCapabilitiesForPrincipal: ({ principalType, principalId, tenantId, }: {
|
|
54
|
+
principalType: PrincipalType;
|
|
55
|
+
principalId: string | Types.ObjectId;
|
|
56
|
+
tenantId?: string | undefined;
|
|
57
|
+
}) => Promise<ISystemGrant[]>;
|
|
58
|
+
};
|
|
59
|
+
export type SystemGrantMethods = ReturnType<typeof createSystemGrantMethods>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inlined utility functions previously imported from @librechat/api.
|
|
3
|
+
* These are used only by test files in data-schemas.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Finds the first matching pattern in a tokens/values map by reverse-iterating
|
|
7
|
+
* and checking if the model name (lowercased) includes the key.
|
|
8
|
+
*
|
|
9
|
+
* Inlined from @librechat/api findMatchingPattern
|
|
10
|
+
*/
|
|
11
|
+
export declare function findMatchingPattern(modelName: string, tokensMap: Record<string, number | Record<string, number>>): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Matches a model name to a canonical key. When no maxTokensMap is available
|
|
14
|
+
* (as in data-schemas tests), returns the model name as-is.
|
|
15
|
+
*
|
|
16
|
+
* Inlined from @librechat/api matchModelName (simplified for test use)
|
|
17
|
+
*/
|
|
18
|
+
export declare function matchModelName(modelName: string, _endpoint?: string): string | undefined;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose" />
|
|
25
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
26
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
+
interface IToolCallData {
|
|
28
|
+
messageId?: string;
|
|
29
|
+
conversationId?: string;
|
|
30
|
+
user?: string;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
export declare function createToolCallMethods(mongoose: typeof import('mongoose')): {
|
|
34
|
+
createToolCall: (toolCallData: IToolCallData) => Promise<import("mongoose").Document<unknown, {}, IToolCallData> & IToolCallData & {
|
|
35
|
+
_id: import("mongoose").Types.ObjectId;
|
|
36
|
+
} & {
|
|
37
|
+
__v: number;
|
|
38
|
+
}>;
|
|
39
|
+
updateToolCall: (id: string, updateData: Partial<IToolCallData>) => Promise<(import("mongoose").FlattenMaps<{
|
|
40
|
+
[x: string]: unknown;
|
|
41
|
+
messageId?: string | undefined;
|
|
42
|
+
conversationId?: string | undefined;
|
|
43
|
+
user?: string | undefined;
|
|
44
|
+
}> & {
|
|
45
|
+
_id: import("mongoose").Types.ObjectId;
|
|
46
|
+
} & {
|
|
47
|
+
__v: number;
|
|
48
|
+
}) | null>;
|
|
49
|
+
deleteToolCalls: (userId: string, conversationId?: string) => Promise<import("mongodb").DeleteResult>;
|
|
50
|
+
getToolCallById: (id: string) => Promise<(import("mongoose").FlattenMaps<{
|
|
51
|
+
[x: string]: unknown;
|
|
52
|
+
messageId?: string | undefined;
|
|
53
|
+
conversationId?: string | undefined;
|
|
54
|
+
user?: string | undefined;
|
|
55
|
+
}> & {
|
|
56
|
+
_id: import("mongoose").Types.ObjectId;
|
|
57
|
+
} & {
|
|
58
|
+
__v: number;
|
|
59
|
+
}) | null>;
|
|
60
|
+
getToolCallsByConvo: (conversationId: string, userId: string) => Promise<(import("mongoose").FlattenMaps<{
|
|
61
|
+
[x: string]: unknown;
|
|
62
|
+
messageId?: string | undefined;
|
|
63
|
+
conversationId?: string | undefined;
|
|
64
|
+
user?: string | undefined;
|
|
65
|
+
}> & {
|
|
66
|
+
_id: import("mongoose").Types.ObjectId;
|
|
67
|
+
} & {
|
|
68
|
+
__v: number;
|
|
69
|
+
})[]>;
|
|
70
|
+
getToolCallsByMessage: (messageId: string, userId: string) => Promise<(import("mongoose").FlattenMaps<{
|
|
71
|
+
[x: string]: unknown;
|
|
72
|
+
messageId?: string | undefined;
|
|
73
|
+
conversationId?: string | undefined;
|
|
74
|
+
user?: string | undefined;
|
|
75
|
+
}> & {
|
|
76
|
+
_id: import("mongoose").Types.ObjectId;
|
|
77
|
+
} & {
|
|
78
|
+
__v: number;
|
|
79
|
+
})[]>;
|
|
80
|
+
};
|
|
81
|
+
export type ToolCallMethods = ReturnType<typeof createToolCallMethods>;
|
|
82
|
+
export {};
|
|
@@ -21,26 +21,80 @@
|
|
|
21
21
|
/// <reference types="mongoose/types/utility" />
|
|
22
22
|
/// <reference types="mongoose/types/validation" />
|
|
23
23
|
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
-
/// <reference types="mongoose" />
|
|
25
24
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
25
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
import type {
|
|
28
|
-
|
|
26
|
+
import type { FilterQuery, Types } from 'mongoose';
|
|
27
|
+
import type { IBalance, IBalanceUpdate, TransactionData } from '~/types';
|
|
28
|
+
import type { ITransaction } from '~/schema/transaction';
|
|
29
|
+
type MultiplierParams = {
|
|
30
|
+
model?: string;
|
|
31
|
+
valueKey?: string;
|
|
32
|
+
tokenType?: 'prompt' | 'completion';
|
|
33
|
+
inputTokenCount?: number;
|
|
34
|
+
endpointTokenConfig?: Record<string, Record<string, number>>;
|
|
35
|
+
};
|
|
36
|
+
type CacheMultiplierParams = {
|
|
37
|
+
cacheType?: 'write' | 'read';
|
|
38
|
+
model?: string;
|
|
39
|
+
endpointTokenConfig?: Record<string, Record<string, number>>;
|
|
40
|
+
};
|
|
41
|
+
/** Input data for creating a transaction */
|
|
42
|
+
export interface TxData {
|
|
43
|
+
user: string | Types.ObjectId;
|
|
44
|
+
conversationId?: string;
|
|
45
|
+
model?: string;
|
|
46
|
+
context?: string;
|
|
47
|
+
tokenType?: 'prompt' | 'completion' | 'credits';
|
|
48
|
+
rawAmount?: number;
|
|
49
|
+
valueKey?: string;
|
|
50
|
+
endpointTokenConfig?: Record<string, Record<string, number>> | null;
|
|
51
|
+
inputTokenCount?: number;
|
|
52
|
+
inputTokens?: number;
|
|
53
|
+
writeTokens?: number;
|
|
54
|
+
readTokens?: number;
|
|
55
|
+
balance?: {
|
|
56
|
+
enabled?: boolean;
|
|
57
|
+
};
|
|
58
|
+
transactions?: {
|
|
59
|
+
enabled?: boolean;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Return value from a successful transaction that also updates the balance */
|
|
63
|
+
export interface TransactionResult {
|
|
64
|
+
rate: number;
|
|
29
65
|
user: string;
|
|
30
|
-
|
|
31
|
-
|
|
66
|
+
balance: number;
|
|
67
|
+
prompt?: number;
|
|
68
|
+
completion?: number;
|
|
69
|
+
credits?: number;
|
|
32
70
|
}
|
|
33
|
-
export declare function createTransactionMethods(mongoose: typeof import('mongoose')
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
71
|
+
export declare function createTransactionMethods(mongoose: typeof import('mongoose'), txMethods: {
|
|
72
|
+
getMultiplier: (params: MultiplierParams) => number;
|
|
73
|
+
getCacheMultiplier: (params: CacheMultiplierParams) => number | null;
|
|
74
|
+
}): {
|
|
75
|
+
updateBalance: ({ user, incrementValue, setValues, }: {
|
|
76
|
+
user: string;
|
|
77
|
+
incrementValue: number;
|
|
78
|
+
setValues?: IBalanceUpdate | undefined;
|
|
79
|
+
}) => Promise<IBalance>;
|
|
80
|
+
bulkInsertTransactions: (docs: TransactionData[]) => Promise<void>;
|
|
81
|
+
findBalanceByUser: (user: string) => Promise<IBalance | null>;
|
|
82
|
+
upsertBalanceFields: (user: string, fields: IBalanceUpdate) => Promise<IBalance | null>;
|
|
83
|
+
getTransactions: (filter: FilterQuery<ITransaction>) => Promise<(import("mongoose").FlattenMaps<any> & Required<{
|
|
39
84
|
_id: unknown;
|
|
40
85
|
}> & {
|
|
41
86
|
__v: number;
|
|
42
|
-
})>;
|
|
43
|
-
|
|
87
|
+
})[]>;
|
|
88
|
+
deleteTransactions: (filter: FilterQuery<ITransaction>) => Promise<import("mongodb").DeleteResult>;
|
|
89
|
+
deleteBalances: (filter: FilterQuery<IBalance>) => Promise<import("mongodb").DeleteResult>;
|
|
90
|
+
createTransaction: (_txData: TxData) => Promise<TransactionResult | undefined>;
|
|
91
|
+
createAutoRefillTransaction: (txData: TxData) => Promise<{
|
|
92
|
+
rate: number;
|
|
93
|
+
user: string;
|
|
94
|
+
balance: number;
|
|
95
|
+
transaction: any;
|
|
96
|
+
} | undefined>;
|
|
97
|
+
createStructuredTransaction: (_txData: TxData) => Promise<TransactionResult | undefined>;
|
|
44
98
|
};
|
|
45
99
|
export type TransactionMethods = ReturnType<typeof createTransactionMethods>;
|
|
46
100
|
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Pricing Configuration
|
|
3
|
+
*
|
|
4
|
+
* Pattern Matching
|
|
5
|
+
* ================
|
|
6
|
+
* `findMatchingPattern` uses `modelName.includes(key)` and selects the **longest**
|
|
7
|
+
* matching key. If a key's length equals the model name's length (exact match), it
|
|
8
|
+
* returns immediately — no further keys are checked.
|
|
9
|
+
*
|
|
10
|
+
* For keys of different lengths, definition order does not affect the result — the
|
|
11
|
+
* longest match always wins. For **same-length ties**, the function iterates in
|
|
12
|
+
* reverse, so the last-defined key wins. Key ordering therefore matters for:
|
|
13
|
+
* 1. **Performance**: list older/legacy models first, newer models last — newer
|
|
14
|
+
* models are more commonly used and will match earlier in the reverse scan.
|
|
15
|
+
* 2. **Same-length tie-breaking**: when two keys of equal length both match,
|
|
16
|
+
* the last-defined key wins.
|
|
17
|
+
*/
|
|
18
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
19
|
+
/// <reference types="mongoose/types/callback" />
|
|
20
|
+
/// <reference types="mongoose/types/collection" />
|
|
21
|
+
/// <reference types="mongoose/types/connection" />
|
|
22
|
+
/// <reference types="mongoose/types/cursor" />
|
|
23
|
+
/// <reference types="mongoose/types/document" />
|
|
24
|
+
/// <reference types="mongoose/types/error" />
|
|
25
|
+
/// <reference types="mongoose/types/expressions" />
|
|
26
|
+
/// <reference types="mongoose/types/helpers" />
|
|
27
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
28
|
+
/// <reference types="mongoose/types/indexes" />
|
|
29
|
+
/// <reference types="mongoose/types/models" />
|
|
30
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
31
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
32
|
+
/// <reference types="mongoose/types/populate" />
|
|
33
|
+
/// <reference types="mongoose/types/query" />
|
|
34
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
35
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
36
|
+
/// <reference types="mongoose/types/session" />
|
|
37
|
+
/// <reference types="mongoose/types/types" />
|
|
38
|
+
/// <reference types="mongoose/types/utility" />
|
|
39
|
+
/// <reference types="mongoose/types/validation" />
|
|
40
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
41
|
+
/// <reference types="mongoose" />
|
|
42
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
43
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
44
|
+
export interface TxDeps {
|
|
45
|
+
/** From @librechat/api — matches a model name to a canonical key. */
|
|
46
|
+
matchModelName: (model: string, endpoint?: string) => string | undefined;
|
|
47
|
+
/** From @librechat/api — finds the longest key in `values` whose key is a substring of `model`. */
|
|
48
|
+
findMatchingPattern: (model: string, values: Record<string, number | Record<string, number>>) => string | undefined;
|
|
49
|
+
}
|
|
50
|
+
export declare const defaultRate = 6;
|
|
51
|
+
/**
|
|
52
|
+
* Mapping of model token sizes to their respective multipliers for prompt and completion.
|
|
53
|
+
* The rates are 1 USD per 1M tokens.
|
|
54
|
+
*/
|
|
55
|
+
export declare const tokenValues: Record<string, {
|
|
56
|
+
prompt: number;
|
|
57
|
+
completion: number;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Mapping of model token sizes to their respective multipliers for cached input, read and write.
|
|
61
|
+
* The rates are 1 USD per 1M tokens.
|
|
62
|
+
*/
|
|
63
|
+
export declare const cacheTokenValues: Record<string, {
|
|
64
|
+
write: number;
|
|
65
|
+
read: number;
|
|
66
|
+
}>;
|
|
67
|
+
/**
|
|
68
|
+
* Premium (tiered) pricing for models whose rates change based on prompt size.
|
|
69
|
+
*/
|
|
70
|
+
export declare const premiumTokenValues: Record<string, {
|
|
71
|
+
threshold: number;
|
|
72
|
+
prompt: number;
|
|
73
|
+
completion: number;
|
|
74
|
+
}>;
|
|
75
|
+
export declare function createTxMethods(_mongoose: typeof import('mongoose'), txDeps: TxDeps): {
|
|
76
|
+
tokenValues: Record<string, {
|
|
77
|
+
prompt: number;
|
|
78
|
+
completion: number;
|
|
79
|
+
}>;
|
|
80
|
+
premiumTokenValues: Record<string, {
|
|
81
|
+
threshold: number;
|
|
82
|
+
prompt: number;
|
|
83
|
+
completion: number;
|
|
84
|
+
}>;
|
|
85
|
+
getValueKey: (model: string, endpoint?: string) => string | undefined;
|
|
86
|
+
getMultiplier: ({ model, valueKey, endpoint, tokenType, inputTokenCount, endpointTokenConfig, }: {
|
|
87
|
+
model?: string | undefined;
|
|
88
|
+
valueKey?: string | undefined;
|
|
89
|
+
endpoint?: string | undefined;
|
|
90
|
+
tokenType?: "prompt" | "completion" | undefined;
|
|
91
|
+
inputTokenCount?: number | undefined;
|
|
92
|
+
endpointTokenConfig?: Record<string, Record<string, number>> | undefined;
|
|
93
|
+
}) => number;
|
|
94
|
+
getPremiumRate: (valueKey: string, tokenType: string, inputTokenCount?: number) => number | null;
|
|
95
|
+
getCacheMultiplier: ({ valueKey, cacheType, model, endpoint, endpointTokenConfig, }: {
|
|
96
|
+
valueKey?: string | undefined;
|
|
97
|
+
cacheType?: "read" | "write" | undefined;
|
|
98
|
+
model?: string | undefined;
|
|
99
|
+
endpoint?: string | undefined;
|
|
100
|
+
endpointTokenConfig?: Record<string, Record<string, number>> | undefined;
|
|
101
|
+
}) => number | null;
|
|
102
|
+
defaultRate: number;
|
|
103
|
+
cacheTokenValues: Record<string, {
|
|
104
|
+
write: number;
|
|
105
|
+
read: number;
|
|
106
|
+
}>;
|
|
107
|
+
};
|
|
108
|
+
export type TxMethods = ReturnType<typeof createTxMethods>;
|
|
@@ -43,6 +43,12 @@ export declare function createUserGroupMethods(mongoose: typeof import('mongoose
|
|
|
43
43
|
user: IUser;
|
|
44
44
|
group: IGroup | null;
|
|
45
45
|
}>;
|
|
46
|
+
removeUserFromAllGroups: (userId: string | Types.ObjectId) => Promise<void>;
|
|
47
|
+
findGroupByQuery: (filter: Record<string, unknown>, session?: ClientSession) => Promise<IGroup | null>;
|
|
48
|
+
updateGroupById: (groupId: string | Types.ObjectId, data: Record<string, unknown>, session?: ClientSession) => Promise<IGroup | null>;
|
|
49
|
+
bulkUpdateGroups: (filter: Record<string, unknown>, update: Record<string, unknown>, options?: {
|
|
50
|
+
session?: ClientSession;
|
|
51
|
+
}) => Promise<import("mongoose").UpdateWriteOpResult>;
|
|
46
52
|
getUserGroups: (userId: string | Types.ObjectId, session?: ClientSession) => Promise<IGroup[]>;
|
|
47
53
|
getUserPrincipals: (params: {
|
|
48
54
|
userId: string | Types.ObjectId;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { dropSupersededTenantIndexes } from './tenantIndexes';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
26
|
+
import type { Connection } from 'mongoose';
|
|
27
|
+
/**
|
|
28
|
+
* Indexes that were superseded by compound tenant-scoped indexes.
|
|
29
|
+
* Each entry maps a collection name to the old index names that must be dropped
|
|
30
|
+
* before multi-tenancy can function (old unique indexes enforce global uniqueness,
|
|
31
|
+
* blocking same-value-different-tenant writes).
|
|
32
|
+
*
|
|
33
|
+
* These are only the indexes whose uniqueness constraints conflict with multi-tenancy.
|
|
34
|
+
* Non-unique indexes that were extended with tenantId are harmless (queries still work,
|
|
35
|
+
* just with slightly less optimal plans) and are not included here.
|
|
36
|
+
*/
|
|
37
|
+
declare const SUPERSEDED_INDEXES: Record<string, string[]>;
|
|
38
|
+
interface MigrationResult {
|
|
39
|
+
dropped: string[];
|
|
40
|
+
skipped: string[];
|
|
41
|
+
errors: string[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Drops superseded unique indexes that block multi-tenant operation.
|
|
45
|
+
* Idempotent — skips indexes that don't exist. Safe to run on fresh databases.
|
|
46
|
+
*
|
|
47
|
+
* Call this before enabling multi-tenant middleware on an existing deployment.
|
|
48
|
+
* On a fresh database (no pre-existing data), this is a no-op.
|
|
49
|
+
*/
|
|
50
|
+
export declare function dropSupersededTenantIndexes(connection: Connection): Promise<MigrationResult>;
|
|
51
|
+
/** Exported for testing — the raw index map */
|
|
52
|
+
export { SUPERSEDED_INDEXES };
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the AccessRole model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createAccessRoleModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the AclEntry model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createAclEntryModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the Action model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createActionModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the Agent model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createAgentModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the AgentCategory model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createAgentCategoryModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the Assistant model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createAssistantModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the Balance model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createBalanceModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the Banner model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createBannerModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
|
|
28
|
-
* Creates or returns the Project model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
|
-
export declare function createProjectModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
27
|
+
export declare function createConfigModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the ConversationTag model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createConversationTagModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the Conversation model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createConversationModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|
|
@@ -24,7 +24,4 @@
|
|
|
24
24
|
/// <reference types="mongoose" />
|
|
25
25
|
/// <reference types="mongoose/types/inferschematype" />
|
|
26
26
|
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
27
|
-
/**
|
|
28
|
-
* Creates or returns the File model using the provided mongoose instance and schema
|
|
29
|
-
*/
|
|
30
27
|
export declare function createFileModel(mongoose: typeof import('mongoose')): import("mongoose").Model<any, {}, {}, {}, any, any>;
|