mirror of
https://github.com/labring/FastGPT.git
synced 2026-04-26 02:07:28 +08:00
aaa7d17ef1
* feat: encapsulate logger (#6535) * feat: encapsulate logger * update engines --------- Co-authored-by: archer <545436317@qq.com> * next config * dev shell * Agent sandbox (#6532) * docs: switch to docs layout and apply black theme (#6533) * feat: add Gemini 3.1 models - Add gemini-3.1-pro-preview (released February 19, 2026) - Add gemini-3.1-flash-lite-preview (released March 3, 2026) Both models support: - 1M context window - 64k max response - Vision - Tool choice * docs: switch to docs layout and apply black theme - Change layout from notebook to docs - Update logo to icon + text format - Apply fumadocs black theme - Simplify global.css (keep only navbar and TOC styles) - Fix icon components to properly accept className props - Add mobile text overflow handling - Update Node engine requirement to >=20.x * doc * doc * lock * fix: ts * doc * doc --------- Co-authored-by: archer <archer@archerdeMac-mini.local> Co-authored-by: archer <545436317@qq.com> * Doc (#6493) * cloud doc * doc refactor * doc move * seo * remove doc * yml * doc * fix: tsconfig * fix: tsconfig * sandbox version (#6497) * sandbox version * add sandbox log * update lock * fix * fix: sandbox * doc * add console * i18n * sandbxo in agent * feat: agent sandbox * lock * feat: sandbox ui * sandbox check exists * env tempalte * doc * lock * sandbox in chat window * sandbox entry * fix: test * rename var * sandbox config tip * update sandbox lifecircle * update prompt * rename provider test * sandbox logger * yml --------- Co-authored-by: Archer <archer@fastgpt.io> Co-authored-by: archer <archer@archerdeMac-mini.local> * perf: sandbox error tip * Add sandbox limit and fix some issue (#6550) * sandbox in plan * fix: some issue * fix: test * editor default path * fix: comment * perf: sandbox worksapce * doc * perf: del sandbox * sandbox build * fix: test * fix: pr comment --------- Co-authored-by: Ryo <whoeverimf5@gmail.com> Co-authored-by: Archer <archer@fastgpt.io> Co-authored-by: archer <archer@archerdeMac-mini.local>
68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import { connectionMongo, getMongoModel } from '../../../common/mongo';
|
||
const { Schema } = connectionMongo;
|
||
import type { SandboxInstanceSchemaType } from './type';
|
||
import { SandboxStatusEnum } from '@fastgpt/global/core/ai/sandbox/constants';
|
||
import { AppCollectionName } from '../../app/schema';
|
||
import { SandboxLimitSchema, SandboxProviderSchema } from './type';
|
||
|
||
export const collectionName = 'agent_sandbox_instances';
|
||
|
||
const SandboxInstanceSchema = new Schema({
|
||
provider: {
|
||
type: String,
|
||
enum: SandboxProviderSchema.options,
|
||
required: true
|
||
},
|
||
// 唯一 id,chat 模式下,由 3 个 id hash 获取。
|
||
sandboxId: {
|
||
type: String,
|
||
required: true
|
||
},
|
||
// Chat 模式下会关联会话。Skill editor 不需要 appId,userId,chatId
|
||
appId: {
|
||
type: Schema.Types.ObjectId,
|
||
ref: AppCollectionName
|
||
},
|
||
userId: String,
|
||
chatId: String,
|
||
|
||
status: {
|
||
type: String,
|
||
enum: Object.values(SandboxStatusEnum),
|
||
default: SandboxStatusEnum.running,
|
||
required: true
|
||
},
|
||
lastActiveAt: {
|
||
type: Date,
|
||
default: () => new Date(),
|
||
required: true
|
||
},
|
||
createdAt: {
|
||
type: Date,
|
||
default: () => new Date(),
|
||
required: true
|
||
},
|
||
limit: {
|
||
type: SandboxLimitSchema.shape
|
||
}
|
||
});
|
||
|
||
SandboxInstanceSchema.index(
|
||
{ appId: 1, userId: 1, chatId: 1 },
|
||
{
|
||
unique: true,
|
||
partialFilterExpression: {
|
||
appId: { $exists: true, $ne: null },
|
||
userId: { $exists: true, $ne: null },
|
||
chatId: { $exists: true, $ne: null }
|
||
}
|
||
}
|
||
);
|
||
SandboxInstanceSchema.index({ status: 1, lastActiveAt: 1 });
|
||
SandboxInstanceSchema.index({ provider: 1, sandboxId: 1 }, { unique: true });
|
||
|
||
export const MongoSandboxInstance = getMongoModel<SandboxInstanceSchemaType>(
|
||
collectionName,
|
||
SandboxInstanceSchema
|
||
);
|