diff --git a/.env.example b/.env.example index b9dd136..de346d6 100644 --- a/.env.example +++ b/.env.example @@ -5,4 +5,10 @@ POSTGRES_PORT=5432 POSTGRES_DB=postgres REDIS_HOST=localhost -REDIS_PORT=6379 \ No newline at end of file +REDIS_PORT=6379 + + +XHS_USER_ID= +XHS_USER_NAME= +XHS_API_SIGN_URL= +XHS_ROOT_COOKIE= \ No newline at end of file diff --git a/.github/workflows/git-sync.yml b/.github/workflows/git-sync.yml deleted file mode 100644 index ac08ba8..0000000 --- a/.github/workflows/git-sync.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Sync to CNB -on: - push: - branches: - # - main - - 'releases/**' - workflow_dispatch: - -# This workflow is triggered on push events to the repository. -jobs: - sync: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Sync to CNB Repository - run: | - docker run --rm \ - -v ${{ github.workspace }}:${{ github.workspace }} \ - -w ${{ github.workspace }} \ - -e PLUGIN_TARGET_URL="https://cnb.cool/kevisual/router-template.git" \ - -e PLUGIN_AUTH_TYPE="https" \ - -e PLUGIN_USERNAME="cnb" \ - -e PLUGIN_PASSWORD=${{ secrets.GIT_PASSWORD }} \ - -e PLUGIN_SYNC_MODE="rebase" \ - tencentcom/git-sync diff --git a/package.json b/package.json index 01cd3f3..0913e52 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "clean": "rm -rf dist", "turbo:build": "turbo run build", "pub": "npm run build && envision pack -p -u", - "cmd": "tsx cmd/index.ts " + "cmd": "bun packages/xhs/src/test/command.ts " }, "keywords": [], "author": "abearxiong ", @@ -36,43 +36,43 @@ "access": "public" }, "dependencies": { - "@kevisual/ai": "^0.0.8", - "@kevisual/code-center-module": "0.0.23", - "@kevisual/context": "^0.0.3", - "@kevisual/router": "0.0.23", - "@kevisual/use-config": "^1.0.19", - "cookie": "^1.0.2", - "dayjs": "^1.11.13", + "@kevisual/ai": "^0.0.19", + "@kevisual/code-center-module": "0.0.24", + "@kevisual/context": "^0.0.4", + "@kevisual/router": "0.0.49", + "@kevisual/use-config": "^1.0.21", + "cookie": "^1.1.1", + "dayjs": "^1.11.19", "formidable": "^3.5.4", - "lodash-es": "^4.17.21", - "nanoid": "^5.1.5" + "lodash-es": "^4.17.22", + "nanoid": "^5.1.6" }, "devDependencies": { - "@kevisual/app-assistant": "workspace:*", "@kevisual/logger": "^0.0.4", "@kevisual/social-prompts": "workspace:*", "@kevisual/types": "^0.0.10", - "@kevisual/use-config": "^1.0.19", + "@kevisual/use-config": "^1.0.21", "@kevisual/xhs": "workspace:*", - "@types/bun": "^1.2.16", + "@types/bun": "^1.3.5", "@types/crypto-js": "^4.2.2", - "@types/formidable": "^3.4.5", + "@types/formidable": "^3.4.6", "@types/lodash-es": "^4.17.12", - "@types/node": "^24.0.3", - "bullmq": "^5.55.0", - "commander": "^14.0.0", - "concurrently": "^9.1.2", - "cross-env": "^7.0.3", - "dotenv": "^16.5.0", + "@types/node": "^25.0.3", + "bullmq": "^5.66.2", + "commander": "^14.0.2", + "concurrently": "^9.2.1", + "cross-env": "^10.1.0", + "dotenv": "^17.2.3", "inquire": "^0.4.8", - "ioredis": "^5.6.1", - "nodemon": "^3.1.10", - "openai": "^5.6.0", - "pg": "^8.16.2", - "rimraf": "^6.0.1", + "ioredis": "^5.8.2", + "nodemon": "^3.1.11", + "openai": "^6.15.0", + "pg": "^8.16.3", + "rimraf": "^6.1.2", "sequelize": "^6.37.7", "tape": "^5.9.0", - "typescript": "^5.8.3" + "turbo": "^2.7.2", + "typescript": "^5.9.3" }, - "packageManager": "pnpm@10.12.1" + "packageManager": "pnpm@10.26.2" } \ No newline at end of file diff --git a/packages/app-assistant/.gitignore b/packages/app-assistant/.gitignore deleted file mode 100644 index d4f23be..0000000 --- a/packages/app-assistant/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -node_modules - -dist - -app.config.json5 - -apps.config.json - -deploy.tar.gz -cache-file - -/apps - -logs - -.env* -!.env.example \ No newline at end of file diff --git a/packages/app-assistant/package.json b/packages/app-assistant/package.json deleted file mode 100644 index caf413a..0000000 --- a/packages/app-assistant/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@kevisual/app-assistant", - "version": "0.0.1", - "description": "", - "main": "index.js", - "scripts": { - "dev": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "abearxiong (https://www.xiongxiao.me)", - "license": "MIT", - "packageManager": "pnpm@10.10.0", - "type": "module", - "devDependencies": { - "@types/node": "^22.15.3", - "bullmq": "^5.51.1" - }, - "dependencies": { - "nanoid": "^5.1.5" - } -} diff --git a/packages/app-assistant/src/index.ts b/packages/app-assistant/src/index.ts deleted file mode 100644 index 043ee78..0000000 --- a/packages/app-assistant/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './provider/comments/xhs.ts'; diff --git a/packages/app-assistant/src/provider/comments/xhs.ts b/packages/app-assistant/src/provider/comments/xhs.ts deleted file mode 100644 index 4bfa2b3..0000000 --- a/packages/app-assistant/src/provider/comments/xhs.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SocialBase } from '@/social/social-base.ts'; - -export class XHS extends SocialBase { - constructor() { - super(); - } -} diff --git a/packages/app-assistant/src/social/social-base.ts b/packages/app-assistant/src/social/social-base.ts deleted file mode 100644 index 309f397..0000000 --- a/packages/app-assistant/src/social/social-base.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { nanoid } from 'nanoid'; - -export class SocialBase { - id: string = ''; - /** - * 是否运行中 - */ - isRuning: boolean = false; - /** - * 应用的配置项 - */ - config: T; - constructor(opts?: any) { - this.config = opts?.config || {}; - this.id = opts?.id || nanoid(); - } - /** - * 获取用户信息 - */ - async getUserInfo() { - throw new Error('Method not implemented.'); - } - /** - * 获取被 call 的信息 - */ - async getMention() { - throw new Error('Method not implemented.'); - } - - /** - * 发送评论信息 - */ - async sendComment() { - // throw new Error('Method not implemented.'); - } - async getUnread() { - throw new Error('Method not implemented.'); - } -} diff --git a/packages/app-assistant/src/test/get-unread.ts b/packages/app-assistant/src/test/get-unread.ts deleted file mode 100644 index ff0c663..0000000 --- a/packages/app-assistant/src/test/get-unread.ts +++ /dev/null @@ -1,75 +0,0 @@ -const unreadUrl = 'https://edith.xiaohongshu.com/api/sns/web/unread_count'; -const cookie = - 'a1=xxxx;abRequestId=0a794332-4561-5f49-93f7-780b8b028e1f;access-token-creator.xiaohongshu.com=customer.creator.AT-68c517498636784561614544frjvxzj7yu8iewie;agora_session=6a0031373435393132333637323735343733393437313634000000000000;customerClientId=536706778174172;galaxy_creator_session_id=OhpHDDSoADhNEhnH5LLnQpletFLApu1fd91f;galaxy.creator.beaker.session.id=1745912429847011598150;gid=yjKqYfK0qDyYyj2DDSqd4ujxyW9kvxIuT62ddkMWhElyuxq8yDd6hl888q2WYy88j8i80yYD;loadts=1746020512562;sec_poison_id=441c932e-a6ac-4d8d-97ae-beb14adb1929;unread={%22ub%22:%2267eaf1fe000000001202c3ea%22%2C%22ue%22:%226803aa37000000001c0319d8%22%2C%22uc%22:35};web_session=040069b2e9c511ca302086ca253a4bde8b1cd1;webBuild=4.62.3;webId=97e5f097499594cad49aa0bd1a8ed83f;websectiga=3633fe24d49c7dd0eb923edc8205740f10fdb18b25d424d2a2322c6196d2a4ad;x-user-id-creator.xiaohongshu.com=639d86590000000026006076;xsecappid=xhs-pc-web;acw_tc=0a00df6217460205042195762e721fba339a0dbe8e4738b961a5ff15e74619;'; - -const cookieObj = cookie.split('; ').reduce((acc, item) => { - const [key, value] = item.split('='); - acc[key] = value; - return acc; -}, {} as Record); -const web_session = cookieObj['web_session'] || ''; -const a1 = cookieObj['a1'] || ''; - -const headers = { - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36', - Cookie: cookie, -}; - -const meUri = '/api/sns/web/v2/user/me'; -const getSign = async (uri: string, data: any, a1: string, web_session?: string) => { - const signs = await fetch('http://localhost:5006/sign', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - uri, - data, - a1, - web_session: web_session, - }), - }).then((res) => res.json()); - return signs; -}; - -const getUserMe = async () => { - const sign = await getSign(meUri, null, a1, web_session); - // const sign = { - // 'x-s': - // 'XYW_eyJzaWduU3ZuIjoiNTYiLCJzaWduVHlwZSI6IngyIiwiYXBwSWQiOiJsb2dpbiIsInNpZ25WZXJzaW9uIjoiMSIsInBheWxvYWQiOiJjYWE4NzYyMjk5NzQ0NDkzNGVhMWIxNDBjNzA0NTI2YmI0ZGZiYjcyMWJjMWQyZTEzNDhhNzZmNmM4MTI5NzljM2VkMWRmMjU0MGNkZDRkZmEyZGE0YjIzOTg0MDMyYmNmNGE4NDU1MzU4ZmZhZDQ0NjkxNzg4YWRjN2U2MmU3YjJmMzdmZGMzZTgwOWQ5NDNmOTRkM2JhMzVjNmQ3MzE4MjA1OWI3MTYyZGU0YjgxYzcyMDI2NmQyM2EzMmY1MGQ2NTQ5MmQ0ZTlhOTA3NmExY2JmMTYyZGJhMWJiMzAxNTg3MmY3MWU5MmIyNDllZGM3MmRkMjhiNGQ4Y2I4MjI2ZWY3YTdkYjI3NGQ2Y2YyMjVkZjk2ZjFmNWJlN2M2ZDkwNjY1MTE4MWJkYWNmYmQzYzVhMDk4Nzg3YjNmNThjMjc1ZWNjNDQzODFkOGNjNmU2ODAyNDFiZTRiODIwZjlkMDUyNTAyODk1ODZhYjM1NTRlMDJjYjhmZDlmNzIyNjM0NDMzZDBiZmNjMzg5NGU2ZDJmNGFiNGVlNGY0MzljMSJ9', - // 'x-t': '1746022429225', - // }; - console.log('sign', sign); - const baseURL = 'https://edith.xiaohongshu.com'; - const xhsMeUri = baseURL + '/api/sns/web/v2/user/me'; - const res = await fetch(xhsMeUri, { - method: 'GET', - headers: { - ...headers, - ...sign, - }, - }); - const data = await res.json(); - return data; -}; -getUserMe().then((res) => { - console.log('res', res); -}); - -export async function getUnread() { - const unreadUri = '/api/sns/web/unread_count'; - const sign = await getSign(unreadUri, null, a1, web_session); - console.log('sign', sign); - const res = await fetch(unreadUrl, { - method: 'GET', - headers: { - ...headers, - ...sign, - }, - }); - const data = await res.json(); - return data; -} -// getUnread().then((res) => { -// console.log('res', res); -// }); diff --git a/packages/app-assistant/tsconfig.json b/packages/app-assistant/tsconfig.json deleted file mode 100644 index 1bdfd4e..0000000 --- a/packages/app-assistant/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "@kevisual/types/json/backend.json", - "compilerOptions": { - "baseUrl": "./", - "paths": { - "@/*": [ - "src/*" - ] - } - }, - "include": [ - "src/**/*.ts", - ], - "exclude": [], -} \ No newline at end of file diff --git a/packages/xhs-core/src/index.js b/packages/xhs-core/src/index.js index dcd6944..5c1195c 100644 --- a/packages/xhs-core/src/index.js +++ b/packages/xhs-core/src/index.js @@ -1,9 +1,7 @@ import axios from 'axios'; import qs from 'querystring'; -import { get_xs } from './jsvmp/xhs'; -import fs from 'fs'; -import { getXCommon, getSearchId, SearchSortType, SearchNoteType } from './helper.js'; +import { getSearchId, SearchSortType, SearchNoteType } from './helper.js'; import { ErrorEnum, DataFetchError, IPBlockError, SignError, NeedVerifyError } from './exception'; const camelToUnderscore = (key) => { @@ -93,24 +91,6 @@ class XhsClient { config.headers = newHeaders; return config; } - _preHeaders(url, data = null) { - let a1 = this.cookieDict.a1; - let b1 = ''; - let x_s_result = get_xs(url, data, this.cookie); - const X_S = x_s_result['X-s']; - const X_t = x_s_result['X-t'].toString(); - const X_S_COMMON = getXCommon(a1, b1, X_S, X_t); - return { - headers: { - 'x-s': X_S, - 'x-t': X_t, - // 'x-s-common': X_S_COMMON, - }, - }; - } - getXCommon(a1, b1, x_s, x_t) { - return getXCommon(a1, b1 || '', x_s, String(x_t)); - } getCookieMap() { const cookie = this.cookie; let cookieDict = {}; @@ -145,16 +125,6 @@ class XhsClient { this.axiosInstance.defaults.headers.Cookie = cookieStr; this.cookie = cookieStr; } - /** - * Get X-S and X-T - * @param {*} url - * @param {*} data - * @param {*} cookie - * @returns - */ - get_xs(url, data, cookie) { - return get_xs(url, data, cookie); - } async request(method, url, config = {}) { try { @@ -277,17 +247,17 @@ class XhsClient { const endpoint = this.getEndpoint(config).endpoint; config = await this.requestSign(uri, data, config); this.printResult('post', { uri, data, config }); - if (data) { - return this.request('POST', `${endpoint}${uri}`, { - ...config, - data: jsonStr, - headers: { - ...config.headers, - 'Content-Type': 'application/json', - }, - }); - } - return this.request('POST', `${endpoint}${uri}`, { ...config, data }); + // if (data) { + // return this.request('POST', `${endpoint}${uri}`, { + // ...config, + // data: jsonStr, + // headers: { + // ...config.headers, + // 'Content-Type': 'application/json', + // }, + // }); + // } + // return this.request('POST', `${endpoint}${uri}`, { ...config, data }); } /** diff --git a/packages/xhs/src/libs/xhs-api/api.ts b/packages/xhs/src/libs/xhs-api/api.ts index 4ea0f0a..893e610 100644 --- a/packages/xhs/src/libs/xhs-api/api.ts +++ b/packages/xhs/src/libs/xhs-api/api.ts @@ -28,6 +28,12 @@ export const api: ApiInfo[] = [ needSign: true, description: '获取@我的消息', }, + { + uri: '/api/sns/web/v1/search/notes', + method: 'POST', + needSign: true, + description: '通过关键词搜索笔记', + } ]; type ReturnApiInfo = { diff --git a/packages/xhs/src/libs/xhs.ts b/packages/xhs/src/libs/xhs.ts index 50be948..f170a29 100644 --- a/packages/xhs/src/libs/xhs.ts +++ b/packages/xhs/src/libs/xhs.ts @@ -1,7 +1,7 @@ import { getApiInfo } from './xhs-api/api.ts'; import { XhsClient as XhsClientBase } from '@kevisual/xhs-core'; import { Mention, CommonentInfo, ResponseMession } from './xhs-type/mention.ts'; -import { pick } from 'lodash-es'; +import { method, pick } from 'lodash-es'; import { getNote } from './modules/get-note.ts'; export type Result = { code: number; // 0: success @@ -14,6 +14,7 @@ type SignInfo = { data: any; a1: string; web_session?: string; + method?: 'GET' | 'POST'; }; type SignResponse = { a1: string; @@ -27,10 +28,10 @@ type SignResponse = { }; type SignOptions = { signUrl?: string; + method?: 'GET' | 'POST'; }; export const getSign = async (signInfo: SignInfo, options?: SignOptions): Promise => { - const { uri, data, a1, web_session } = signInfo; - // console.log('getSign', uri, data, a1, web_session); + const { uri, data, a1, method } = signInfo; // let signUri = new URL(uri, 'http://light.xiongxiao.me:5006').pathname; // signUri = '/api/sns/web/v2/user/me'; try { @@ -48,7 +49,7 @@ export const getSign = async (signInfo: SignInfo, options?: SignOptions): Promis uri: uri, data, a1, - web_session: web_session, + method: signInfo.method || 'POST', }), }).then((res) => res.json()); return signs as SignResponse; @@ -92,6 +93,11 @@ export class XhsClient extends XhsClientBase { case 'sign': // console.log('sign', data); break; + case 'post': + console.log('post', data); + break; + default: + break; } } /** @@ -158,7 +164,7 @@ export class XhsClient extends XhsClientBase { const response = await this.get(url, { num, cursor }, { sign: this.sign.bind(this) }); return response as Result; } - async getComment(noteId: string, xsecToken?: string) {} + async getComment(noteId: string, xsecToken?: string) { } /** * * @uri /api/sns/web/v1/you/mentions @@ -183,23 +189,26 @@ export class XhsClient extends XhsClientBase { if (apiInfo && !apiInfo?.needSign) { return config || {}; } - const web_session = cookieDist['web_session']; const a1 = cookieDist['a1']; - const res = await getSign({ uri, data, a1, web_session }, this.signConfig); - const _sign = res.sign; + const res = await getSign({ uri, data, a1, method: 'POST' }, this.signConfig); + console.log('sign response', res); + const _sign = res.sign this.printResult('sign', { uri, apiInfo, res }); const xs = _sign?.['x-s']; const xt = _sign?.['x-t']; - const b1 = _sign?.['b1']; const newA1 = _sign?.['a1']; + const xsCommon = _sign?.['x-s-common']; + const xB3Traceid = _sign?.['x-b3-traceid']; if (a1 !== newA1) { this.setCookieMap({ a1: newA1 }); this.printResult('cookie change', a1); } + // throw new Error('disable sign'); if (res && xs) { headers['x-s'] = xs; headers['x-t'] = xt; - // headers['x-s-common'] = this.getXCommon(a1, b1, xs, xt); + headers['x-s-common'] = xsCommon; + headers['x-b3-traceid'] = xB3Traceid; config.headers = headers; } else { console.log('get sign error', res); @@ -257,6 +266,21 @@ export class XhsClient extends XhsClientBase { } } getNote = getNote; + async getNoteByKeyword(keyword: string, page?: number, pageSize?: number, sort?: string, noteType?: number): Promise { + const uri = '/api/sns/web/v1/search/notes'; + const data = { + keyword, + page: page || 1, + page_size: pageSize || 20, + sort: sort || SearchSortType.GENERAL, + note_type: noteType || SearchNoteType.ALL, + search_id: getSearchId(), + image_formats: ['jpg', 'webp', 'avif'], + ext_flags: [] + }; + const response = await this.post(uri, data, { sign: this.sign.bind(this) }); + return response; + } } type UnreadCount = { @@ -265,3 +289,29 @@ type UnreadCount = { connections: number; mentions: number; }; +function getSearchId() { + const e = BigInt(Date.now()) << 64n; + const t = Math.floor(Math.random() * 2147483647); + return base36encode(e + BigInt(t)); +} +function base36encode(num: bigint): string { + return num.toString(36).toUpperCase(); +} + +const SearchSortType = Object.freeze({ + // default + GENERAL: { value: "general" }, + // most popular + MOST_POPULAR: { value: "popularity_descending" }, + // Latest + LATEST: { value: "time_descending" } +}); + +const SearchNoteType = Object.freeze({ + // default + ALL: { value: 0 }, + // only video + VIDEO: { value: 1 }, + // only image + IMAGE: { value: 2 } +}); \ No newline at end of file diff --git a/packages/xhs/src/routes/mentions/mention.ts b/packages/xhs/src/routes/mentions/mention.ts index 56261c9..d336bbd 100644 --- a/packages/xhs/src/routes/mentions/mention.ts +++ b/packages/xhs/src/routes/mentions/mention.ts @@ -49,16 +49,16 @@ app path: 'mention', key: 'getNote', description: '获取笔记', - validator: { - node_id: { - type: 'string', - required: true, - }, - xsec_token: { - type: 'string', - required: true, - }, - }, + // validator: { + // node_id: { + // type: 'string', + // required: true, + // }, + // xsec_token: { + // type: 'string', + // required: true, + // }, + // }, isDebug: true, }) .define(async (ctx) => { @@ -108,13 +108,13 @@ app .route({ path: 'mention', key: 'getMention', - description: '获取提及列表', - validator: { - num: { - type: 'number', - required: true, - }, - }, + // description: '获取提及列表', + // validator: { + // num: { + // type: 'number', + // required: true, + // }, + // }, }) .define(async (ctx) => { const num = ctx.query.num; diff --git a/packages/xhs/src/test/command.ts b/packages/xhs/src/test/command.ts index d352a73..a1326bd 100644 --- a/packages/xhs/src/test/command.ts +++ b/packages/xhs/src/test/command.ts @@ -8,6 +8,9 @@ import './query/mention.ts' import './query/unread.ts'; import './query/get-userinfo.ts'; import './query/get-connections.ts' +import './query/query-keys.ts'; + + program .command('test') .description('test command') diff --git a/packages/xhs/src/test/common.ts b/packages/xhs/src/test/common.ts index 158d5d6..15c0f8a 100644 --- a/packages/xhs/src/test/common.ts +++ b/packages/xhs/src/test/common.ts @@ -1,6 +1,6 @@ import { xhsServices, app, xhsRootClient } from '../index.ts'; import { useConfig } from '@kevisual/use-config/env'; -const config = useConfig(); +export const config = useConfig(); import { program } from 'commander'; xhsRootClient.setCookie(config.XHS_ROOT_COOKIE || ''); diff --git a/packages/xhs/src/test/query/query-keys.ts b/packages/xhs/src/test/query/query-keys.ts new file mode 100644 index 0000000..3da8da6 --- /dev/null +++ b/packages/xhs/src/test/query/query-keys.ts @@ -0,0 +1,29 @@ +// getNoteByKeyword + +import { xhsServices, program, config } from '../common.ts'; +import util from 'node:util'; + +const getNoteByKeyword = async (keyword: string) => { + const client = xhsServices.getClient(); + xhsServices.setSignConfig({ + signUrl: config.XHS_API_SIGN_URL, + }); + const res = await client.getNoteByKeyword(keyword).then((res) => { + console.log(util.inspect(res, { depth: null })); + return res; + }); + console.log('type res', typeof res); + if (res.code === 0) { + console.log('total', res.data.total); + if (res.data.notes.length > 0) { + console.log('first note desc', res.data.notes[0].desc); + } + } +}; + +program + .command('get-note-by-keyword ') + .description('get note by keyword') + .action(async (keyword: string) => { + getNoteByKeyword(keyword); + }); \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed589c8..80e8673 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,35 +9,35 @@ importers: .: dependencies: '@kevisual/ai': - specifier: ^0.0.8 - version: 0.0.8 + specifier: ^0.0.19 + version: 0.0.19 '@kevisual/code-center-module': - specifier: 0.0.23 - version: 0.0.23(dotenv@16.5.0) + specifier: 0.0.24 + version: 0.0.24(dotenv@17.2.3) '@kevisual/context': - specifier: ^0.0.3 - version: 0.0.3 + specifier: ^0.0.4 + version: 0.0.4 '@kevisual/router': - specifier: 0.0.23 - version: 0.0.23 + specifier: 0.0.49 + version: 0.0.49 '@kevisual/use-config': - specifier: ^1.0.19 - version: 1.0.19(dotenv@16.5.0) + specifier: ^1.0.21 + version: 1.0.21(dotenv@17.2.3) cookie: - specifier: ^1.0.2 - version: 1.0.2 + specifier: ^1.1.1 + version: 1.1.1 dayjs: - specifier: ^1.11.13 - version: 1.11.13 + specifier: ^1.11.19 + version: 1.11.19 formidable: specifier: ^3.5.4 version: 3.5.4 lodash-es: - specifier: ^4.17.21 - version: 4.17.21 + specifier: ^4.17.22 + version: 4.17.22 nanoid: - specifier: ^5.1.5 - version: 5.1.5 + specifier: ^5.1.6 + version: 5.1.6 devDependencies: '@kevisual/app-assistant': specifier: workspace:* @@ -55,62 +55,65 @@ importers: specifier: workspace:* version: link:packages/xhs '@types/bun': - specifier: ^1.2.16 - version: 1.2.16 + specifier: ^1.3.5 + version: 1.3.5 '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 '@types/formidable': - specifier: ^3.4.5 - version: 3.4.5 + specifier: ^3.4.6 + version: 3.4.6 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^24.0.3 - version: 24.0.3 + specifier: ^25.0.3 + version: 25.0.3 bullmq: - specifier: ^5.55.0 - version: 5.55.0 + specifier: ^5.66.2 + version: 5.66.2 commander: - specifier: ^14.0.0 - version: 14.0.0 + specifier: ^14.0.2 + version: 14.0.2 concurrently: - specifier: ^9.1.2 - version: 9.1.2 + specifier: ^9.2.1 + version: 9.2.1 cross-env: - specifier: ^7.0.3 - version: 7.0.3 + specifier: ^10.1.0 + version: 10.1.0 dotenv: - specifier: ^16.5.0 - version: 16.5.0 + specifier: ^17.2.3 + version: 17.2.3 inquire: specifier: ^0.4.8 version: 0.4.8 ioredis: - specifier: ^5.6.1 - version: 5.6.1 + specifier: ^5.8.2 + version: 5.8.2 nodemon: - specifier: ^3.1.10 - version: 3.1.10 + specifier: ^3.1.11 + version: 3.1.11 openai: - specifier: ^5.6.0 - version: 5.6.0(ws@8.18.1)(zod@3.25.67) + specifier: ^6.15.0 + version: 6.15.0(ws@8.18.1)(zod@3.25.67) pg: - specifier: ^8.16.2 - version: 8.16.2 + specifier: ^8.16.3 + version: 8.16.3 rimraf: - specifier: ^6.0.1 - version: 6.0.1 + specifier: ^6.1.2 + version: 6.1.2 sequelize: specifier: ^6.37.7 - version: 6.37.7(pg@8.16.2)(sqlite3@5.1.7) + version: 6.37.7(pg@8.16.3)(sqlite3@5.1.7) tape: specifier: ^5.9.0 version: 5.9.0 + turbo: + specifier: ^2.7.2 + version: 2.7.2 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.3 + version: 5.9.3 packages/app-assistant: dependencies: @@ -137,26 +140,26 @@ importers: version: 5.1.5 sequelize: specifier: ^6.37.7 - version: 6.37.7(pg@8.16.2)(sqlite3@5.1.7) + version: 6.37.7(pg@8.16.3)(sqlite3@5.1.7) sqlite3: specifier: ^5.1.7 version: 5.1.7 devDependencies: '@kevisual/use-config': - specifier: ^1.0.14 - version: 1.0.14(dotenv@16.5.0) + specifier: ^1.0.19 + version: 1.0.21(dotenv@17.2.3) '@kevisual/xhs-core': - specifier: 0.0.3 - version: 0.0.3 + specifier: 0.0.4 + version: 0.0.4 '@types/node': - specifier: ^22.15.3 - version: 22.15.3 + specifier: ^24.0.3 + version: 24.0.3 packages/xhs-core: devDependencies: '@kevisual/dts': specifier: ^0.0.2 - version: 0.0.2(typescript@5.8.3) + version: 0.0.2(typescript@5.9.3) axios: specifier: ^1.9.0 version: 1.9.0 @@ -208,30 +211,40 @@ packages: resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@ioredis/commands@1.4.0': + resolution: {integrity: sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==} + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@kevisual/ai@0.0.8': - resolution: {integrity: sha512-MvK4U1iWf8hz7lj/+YBQV3qWRRDy42VH8fInKFVxjpEGPGaxfXOMP73C85T4Cf82OGU/fxOayiR0xLi2SyBTLw==} + '@kevisual/ai@0.0.19': + resolution: {integrity: sha512-AFc8m6OcHZNxCb88bvzhvwWTZ4EVYyPupBzPUsLKLpdNBvsqm9TRboKCM2brJj2cqHnm+H+RbAk9AcGJkYhRCA==} '@kevisual/auth@1.0.5': resolution: {integrity: sha512-GwsLj7unKXi7lmMiIIgdig4LwwLiDJnOy15HHZR5gMbyK6s5/uJiMY5RXPB2+onGzTNDqFo/hXjsD2wkerHPVg==} - '@kevisual/code-center-module@0.0.23': - resolution: {integrity: sha512-qusUc+BdheJAKFSCOfRJATxKOgE7uqhwMtB8fEI+N9NdbGAX7mshn3Pcq082RFFYrWLMNICsWq/6WczEFamgYw==} + '@kevisual/code-center-module@0.0.24': + resolution: {integrity: sha512-PRq+eOTt4vF6s4vCeS5ov0aHKF1PP+y4qHRE2rpHKJemw8NaTz0dLXaWjwl+hiCbvdRhypXC1jWG8c9Dt1ODUg==} - '@kevisual/context@0.0.3': - resolution: {integrity: sha512-cYpqVmoHVjv3NrGMU1e6iyiPDKRtNnK2wOWgbBU5d+8IHuC8VYHTg2GY5bnD/272GK7EYdr9x/c3QgsCIqR2BQ==} + '@kevisual/context@0.0.4': + resolution: {integrity: sha512-HJeLeZQLU+7tCluSfOyvkgKLs0HjCZrdJlZgEgKRSa8XTwZfMAUt6J7qZTbrZAHBlPtX68EPu/PI8JMCeu3WAQ==} '@kevisual/db@0.0.1': resolution: {integrity: sha512-FgDS5FzcU5Um2UV6EYQN4+D4R24M6/A7DANMPpvTpRioS94apKsnthZQWNL65e6gPc4ca3ys8zygrF6rd3ZA7Q==} @@ -246,27 +259,28 @@ packages: '@kevisual/logger@0.0.4': resolution: {integrity: sha512-+fpr92eokSxoGOW1SIRl/27lPuO+zyY+feR5o2Q4YCNlAdt2x64NwC/w8r/3NEC5QenLgd4K0azyKTI2mHbARw==} - '@kevisual/router@0.0.22': - resolution: {integrity: sha512-Cqv2vV+hPBHrMMfvWlfDIuNrQcmd260oQZ4S5QR/R4tV35XtMKiseqhnC9uR09oVBJUh+d5rW3YucDDddheeDQ==} + '@kevisual/permission@0.0.3': + resolution: {integrity: sha512-8JsA/5O5Ax/z+M+MYpFYdlioHE6jNmWMuFSokBWYs9CCAHNiSKMR01YLkoVDoPvncfH/Y8F5K/IEXRCbptuMNA==} + + '@kevisual/query@0.0.31': + resolution: {integrity: sha512-bBdepjmMICLpcj/a9fnn82/0CGGYUZiCV+usWsJZKAwVlZcnj+WtKmbgKT09KpP6g3jjYzYOaXHiNFB8N0bQAQ==} '@kevisual/router@0.0.23': resolution: {integrity: sha512-W6ehlhAzNe58vq4QeQt2XFoO84Qaw34A0PVOByJsJ2ICj4YKBTclAt+rOAoISCvUeSbeNOIuhUE3sLyPfplzUw==} + '@kevisual/router@0.0.49': + resolution: {integrity: sha512-2HXuOnnWdRfkO0LyqolWU9cvWHGXi8FV3OqEvWgfO+f7wx8GT8T6Bb8dCzdldDaAxve1dgLBavtdmnHyCkp+1Q==} + '@kevisual/types@0.0.10': resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==} - '@kevisual/use-config@1.0.14': - resolution: {integrity: sha512-U4fmPFJre+Ph+hdg+EKVaRGxdpD4T4ZoOz5QLEyC6o3ekg8NC4n1i7Myo1ektqATyoG9Y0q/bJdOhiJwnLEt4g==} + '@kevisual/use-config@1.0.21': + resolution: {integrity: sha512-czgy4+tBDBJI6QTnKh2PCwswET6ZpZ4ZqBE/SPkkOivEtlrcPzLs5elwMLZ3goD1XMD4VB3yjumb5WuW/8H8MA==} peerDependencies: - dotenv: ^16.4.7 + dotenv: ^17 - '@kevisual/use-config@1.0.19': - resolution: {integrity: sha512-Q1IH4eMqUe5w6Bq8etoqOSls9FPIy0xwwD3wHf26EsQLZadhccI9qkDuFzP/rFWDa57mwFPEfwbGE5UlqWOCkw==} - peerDependencies: - dotenv: ^16.4.7 - - '@kevisual/xhs-core@0.0.3': - resolution: {integrity: sha512-i1prOqtRSqsj4Nkcgw9GNNJXXLMeNnA2oAYX6Xrx/uskwTLoJfSwN41Z9k1XFyZfJ4oOu4ByFKeQLxVi4UkrqA==} + '@kevisual/xhs-core@0.0.4': + resolution: {integrity: sha512-bVlXjdkOE0kLas5NxgYNP4vXcb1hPl/x799dB9FErYlibZotQ494EJY9TGu11UrWE8DbaATRGy4WMZcdYEF6iw==} '@ljharb/resumer@0.1.3': resolution: {integrity: sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==} @@ -306,6 +320,10 @@ packages: cpu: [x64] os: [win32] + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -321,6 +339,40 @@ packages: '@paralleldrive/cuid2@2.2.2': resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + '@peculiar/asn1-cms@2.6.0': + resolution: {integrity: sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==} + + '@peculiar/asn1-csr@2.6.0': + resolution: {integrity: sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==} + + '@peculiar/asn1-ecc@2.6.0': + resolution: {integrity: sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==} + + '@peculiar/asn1-pfx@2.6.0': + resolution: {integrity: sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==} + + '@peculiar/asn1-pkcs8@2.6.0': + resolution: {integrity: sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==} + + '@peculiar/asn1-pkcs9@2.6.0': + resolution: {integrity: sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==} + + '@peculiar/asn1-rsa@2.6.0': + resolution: {integrity: sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==} + + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} + + '@peculiar/asn1-x509-attr@2.6.0': + resolution: {integrity: sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==} + + '@peculiar/asn1-x509@2.6.0': + resolution: {integrity: sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==} + + '@peculiar/x509@1.14.2': + resolution: {integrity: sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==} + engines: {node: '>=22.0.0'} + '@rollup/rollup-android-arm-eabi@4.40.1': resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} cpu: [arm] @@ -428,8 +480,8 @@ packages: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} - '@types/bun@1.2.16': - resolution: {integrity: sha512-1aCZJ/6nSiViw339RsaNhkNoEloLaPzZhxMOYEa7OzRzO41IGg5n/7I43/ZIAW/c+Q6cT12Vf7fOZOoVIzb5BQ==} + '@types/bun@1.3.5': + resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==} '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} @@ -443,8 +495,8 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - '@types/formidable@3.4.5': - resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + '@types/formidable@3.4.6': + resolution: {integrity: sha512-LI4Hk+KNsM5q7br4oMVoaWeb+gUqJpz1N8+Y2Q6Cz9cVH33ybahRKUWaRmMboVlkwSbOUGgwc/pEkS7yMSzoWg==} '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} @@ -464,6 +516,9 @@ packages: '@types/node@24.0.3': resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} + '@types/node@25.0.3': + resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} + '@types/validator@13.12.2': resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} @@ -494,18 +549,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -533,6 +580,10 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + asn1js@3.0.7: + resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} + engines: {node: '>=12.0.0'} + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -570,9 +621,6 @@ packages: brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -583,11 +631,15 @@ packages: bullmq@5.51.1: resolution: {integrity: sha512-JEZokH5Sb6p66HRjbfQjPNYuSilDRcB8UREmJzOBqTTaJFza8I92vsBF3J/zmtzd7KVv3dxhZyH9CYSLOJALRA==} - bullmq@5.55.0: - resolution: {integrity: sha512-LKaQZroyXBYSQd/SNP9EcmCZgiZjIImtQHBlnupUvhX1GmmJfIXjn0bf8lek3bvajMUbvVf8FrYdFD0ajAuy0g==} + bullmq@5.66.2: + resolution: {integrity: sha512-0PrkpIakIntkBcPLltPIRWdLC1FTLUa/VhJkmEfobb5YUQjoUwJdmmf7HX+o/vMonS5048JpP+abf9lVRUFEjA==} - bun-types@1.2.16: - resolution: {integrity: sha512-ciXLrHV4PXax9vHvUrkvun9VPVGOVwbbbBF/Ev1cXz12lyEZMoJpIJABOfPcN9gDJRaiKF9MVbSygLg4NXu3/A==} + bun-types@1.3.5: + resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==} + + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} cacache@15.3.0: resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} @@ -647,15 +699,15 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - commander@14.0.0: - resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@9.1.2: - resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==} + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} engines: {node: '>=18'} hasBin: true @@ -666,8 +718,8 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} cors@2.8.5: @@ -678,9 +730,9 @@ packages: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} hasBin: true cross-spawn@7.0.6: @@ -710,8 +762,8 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} @@ -731,6 +783,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.5.0: resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} @@ -779,8 +840,8 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} dotignore@0.1.2: @@ -794,18 +855,12 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -900,10 +955,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - form-data@4.0.2: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} @@ -973,10 +1024,9 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@11.0.1: - resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} - hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -1042,6 +1092,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} @@ -1108,6 +1162,10 @@ packages: resolution: {integrity: sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==} engines: {node: '>=12.22.0'} + ioredis@5.8.2: + resolution: {integrity: sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==} + engines: {node: '>=12.22.0'} + ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -1232,10 +1290,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@4.0.3: - resolution: {integrity: sha512-oSwM7q8PTHQWuZAlp995iPpPJ4Vkl7qT0ZRD+9duL9j2oBy6KcTfyxc8mEuHJYC+z/kbps80aJLkaNzTOrf/kw==} - engines: {node: 20 || >=22} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1251,8 +1305,8 @@ packages: canvas: optional: true - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.22: + resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -1305,12 +1359,16 @@ packages: resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -1383,11 +1441,19 @@ packages: msgpackr@1.11.2: resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} + msgpackr@1.11.5: + resolution: {integrity: sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==} + nanoid@5.1.5: resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} engines: {node: ^18 || >=20} hasBin: true + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} + engines: {node: ^18 || >=20} + hasBin: true + napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} @@ -1418,8 +1484,8 @@ packages: engines: {node: '>= 10.12.0'} hasBin: true - nodemon@3.1.10: - resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} + nodemon@3.1.11: + resolution: {integrity: sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==} engines: {node: '>=10'} hasBin: true @@ -1467,12 +1533,12 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - openai@5.6.0: - resolution: {integrity: sha512-jNH5z+hYAdOMZXyEt0yZ7246s+UZjg2AwFQqkAhZIPPjxNtHHO5mykOefau6FkOqj16aC94MOdJl/rZBcKj/cQ==} + openai@6.15.0: + resolution: {integrity: sha512-F1Lvs5BoVvmZtzkUEVyh8mDQPPFolq4F+xdsx/DO8Hee8YF3IGAlZqUIsF+DVGhqf4aU0a3bTghsxB6OIsRy1g==} hasBin: true peerDependencies: ws: ^8.18.0 - zod: ^3.23.8 + zod: ^3.25 || ^4.0 peerDependenciesMeta: ws: optional: true @@ -1512,8 +1578,11 @@ packages: resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} engines: {node: '>=16'} - pg-cloudflare@1.2.6: - resolution: {integrity: sha512-uxmJAnmIgmYgnSFzgOf2cqGQBzwnRYcrEgXuFjJNEkpedEIPBSEzxY7ph4uA9k1mI+l/GR0HjPNS6FKNZe8SBQ==} + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + + pg-cloudflare@1.2.7: + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} pg-connection-string@2.8.5: resolution: {integrity: sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==} @@ -1530,15 +1599,15 @@ packages: peerDependencies: pg: '>=8.0' - pg-protocol@1.10.2: - resolution: {integrity: sha512-Ci7jy8PbaWxfsck2dwZdERcDG2A0MG8JoQILs+uZNjABFuBuItAZCWUNz8sXRDMoui24rJw7WlXqgpMdBSN/vQ==} + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.16.2: - resolution: {integrity: sha512-OtLWF0mKLmpxelOt9BqVq83QV6bTfsS0XLegIeAKqKjurRnRKie1Dc1iL89MugmSLhftxw6NNCyZhm1yQFLMEQ==} + pg@8.16.3: + resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -1556,6 +1625,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + pkijs@3.3.3: + resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} + engines: {node: '>=16.0.0'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -1606,6 +1679,13 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -1630,6 +1710,9 @@ packages: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -1658,8 +1741,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + rimraf@6.1.2: + resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} engines: {node: 20 || >=22} hasBin: true @@ -1678,8 +1761,8 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} @@ -1707,15 +1790,28 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} + selfsigned@5.4.0: + resolution: {integrity: sha512-Yn8qZOOJv+NhcGY19iC+ngW6hlUCNpvWEkrKllXNhmkLgR9fcErm8EqZ/wev7/tiwjKC9qj17Fa/PtBNzb6q8g==} + engines: {node: '>=15.6.0'} + semver@7.7.1: resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + send@1.2.0: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + sequelize-pool@7.1.0: resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==} engines: {node: '>= 10.0.0'} @@ -1779,8 +1875,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} side-channel-list@1.0.0: @@ -1802,10 +1898,6 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -1872,10 +1964,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -1895,10 +1983,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -1971,12 +2055,53 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + turbo-darwin-64@2.7.2: + resolution: {integrity: sha512-dxY3X6ezcT5vm3coK6VGixbrhplbQMwgNsCsvZamS/+/6JiebqW9DKt4NwpgYXhDY2HdH00I7FWs3wkVuan4rA==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.7.2: + resolution: {integrity: sha512-1bXmuwPLqNFt3mzrtYcVx1sdJ8UYb124Bf48nIgcpMCGZy3kDhgxNv1503kmuK/37OGOZbsWSQFU4I08feIuSg==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.7.2: + resolution: {integrity: sha512-kP+TiiMaiPugbRlv57VGLfcjFNsFbo8H64wMBCPV2270Or2TpDCBULMzZrvEsvWFjT3pBFvToYbdp8/Kw0jAQg==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.7.2: + resolution: {integrity: sha512-VDJwQ0+8zjAfbyY6boNaWfP6RIez4ypKHxwkuB6SrWbOSk+vxTyW5/hEjytTwK8w/TsbKVcMDyvpora8tEsRFw==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.7.2: + resolution: {integrity: sha512-rPjqQXVnI6A6oxgzNEE8DNb6Vdj2Wwyhfv3oDc+YM3U9P7CAcBIlKv/868mKl4vsBtz4ouWpTQNXG8vljgJO+w==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.7.2: + resolution: {integrity: sha512-tcnHvBhO515OheIFWdxA+qUvZzNqqcHbLVFc1+n+TJ1rrp8prYicQtbtmsiKgMvr/54jb9jOabU62URAobnB7g==} + cpu: [arm64] + os: [win32] + + turbo@2.7.2: + resolution: {integrity: sha512-5JIA5aYBAJSAhrhbyag1ZuMSgUZnHtI+Sq3H8D3an4fL8PeF+L1yYvbEJg47akP1PFfATMf5ehkqFnxfkmuwZQ==} + hasBin: true + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -1993,8 +2118,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -2008,6 +2133,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.8.0: resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} @@ -2020,6 +2148,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -2087,10 +2219,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -2187,38 +2315,40 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} + '@epic-web/invariant@1.0.0': {} + '@gar/promisify@1.1.3': optional: true '@ioredis/commands@1.2.0': {} - '@isaacs/cliui@8.0.2': + '@ioredis/commands@1.4.0': {} + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/balanced-match': 4.0.1 '@jridgewell/sourcemap-codec@1.5.0': {} - '@kevisual/ai@0.0.8': + '@kevisual/ai@0.0.19': dependencies: '@kevisual/logger': 0.0.4 + '@kevisual/permission': 0.0.3 + '@kevisual/query': 0.0.31 '@kevisual/auth@1.0.5': {} - '@kevisual/code-center-module@0.0.23(dotenv@16.5.0)': + '@kevisual/code-center-module@0.0.24(dotenv@17.2.3)': dependencies: '@kevisual/auth': 1.0.5 - '@kevisual/context': 0.0.3 - '@kevisual/router': 0.0.22 - '@kevisual/use-config': 1.0.19(dotenv@16.5.0) - ioredis: 5.6.1 - nanoid: 5.1.5 - pg: 8.16.2 - sequelize: 6.37.7(pg@8.16.2)(sqlite3@5.1.7) + '@kevisual/router': 0.0.23 + '@kevisual/use-config': 1.0.21(dotenv@17.2.3) + ioredis: 5.8.2 + nanoid: 5.1.6 + pg: 8.16.3 + sequelize: 6.37.7(pg@8.16.3)(sqlite3@5.1.7) socket.io: 4.8.1 zod: 3.25.67 transitivePeerDependencies: @@ -2236,14 +2366,14 @@ snapshots: - tedious - utf-8-validate - '@kevisual/context@0.0.3': {} + '@kevisual/context@0.0.4': {} '@kevisual/db@0.0.1': {} - '@kevisual/dts@0.0.2(typescript@5.8.3)': + '@kevisual/dts@0.0.2(typescript@5.9.3)': dependencies: rollup: 4.40.1 - rollup-plugin-dts: 6.2.1(rollup@4.40.1)(typescript@5.8.3) + rollup-plugin-dts: 6.2.1(rollup@4.40.1)(typescript@5.9.3) transitivePeerDependencies: - typescript @@ -2253,10 +2383,9 @@ snapshots: '@kevisual/logger@0.0.4': {} - '@kevisual/router@0.0.22': - dependencies: - path-to-regexp: 8.2.0 - selfsigned: 2.4.1 + '@kevisual/permission@0.0.3': {} + + '@kevisual/query@0.0.31': {} '@kevisual/router@0.0.23': dependencies: @@ -2266,19 +2395,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@kevisual/router@0.0.49': + dependencies: + path-to-regexp: 8.3.0 + selfsigned: 5.4.0 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + '@kevisual/types@0.0.10': {} - '@kevisual/use-config@1.0.14(dotenv@16.5.0)': + '@kevisual/use-config@1.0.21(dotenv@17.2.3)': dependencies: '@kevisual/load': 0.0.6 - dotenv: 16.5.0 + dotenv: 17.2.3 - '@kevisual/use-config@1.0.19(dotenv@16.5.0)': - dependencies: - '@kevisual/load': 0.0.6 - dotenv: 16.5.0 - - '@kevisual/xhs-core@0.0.3': {} + '@kevisual/xhs-core@0.0.4': {} '@ljharb/resumer@0.1.3': dependencies: @@ -2307,6 +2439,8 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@noble/hashes@1.4.0': {} + '@noble/hashes@1.8.0': {} '@npmcli/fs@1.1.1': @@ -2325,6 +2459,96 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 + '@peculiar/asn1-cms@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + '@peculiar/asn1-x509-attr': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.6.0': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-pkcs8': 2.6.0 + '@peculiar/asn1-rsa': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.6.0': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-pfx': 2.6.0 + '@peculiar/asn1-pkcs8': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + '@peculiar/asn1-x509-attr': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.6.0': + dependencies: + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/x509@1.14.2': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-csr': 2.6.0 + '@peculiar/asn1-ecc': 2.6.0 + '@peculiar/asn1-pkcs9': 2.6.0 + '@peculiar/asn1-rsa': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@rollup/rollup-android-arm-eabi@4.40.1': optional: true @@ -2390,13 +2614,13 @@ snapshots: '@tootallnate/once@1.1.2': optional: true - '@types/bun@1.2.16': + '@types/bun@1.3.5': dependencies: - bun-types: 1.2.16 + bun-types: 1.3.5 '@types/cors@2.8.17': dependencies: - '@types/node': 24.0.3 + '@types/node': 25.0.3 '@types/crypto-js@4.2.2': {} @@ -2406,9 +2630,9 @@ snapshots: '@types/estree@1.0.7': {} - '@types/formidable@3.4.5': + '@types/formidable@3.4.6': dependencies: - '@types/node': 24.0.3 + '@types/node': 25.0.3 '@types/lodash-es@4.17.12': dependencies: @@ -2420,7 +2644,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 24.0.3 + '@types/node': 25.0.3 '@types/node@22.15.3': dependencies: @@ -2430,6 +2654,10 @@ snapshots: dependencies: undici-types: 7.8.0 + '@types/node@25.0.3': + dependencies: + undici-types: 7.16.0 + '@types/validator@13.12.2': {} abbrev@1.1.1: @@ -2462,14 +2690,10 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -2509,6 +2733,12 @@ snapshots: asap@2.0.6: {} + asn1js@3.0.7: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + async-function@1.0.0: {} asynckit@0.4.0: {} @@ -2548,10 +2778,6 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -2573,21 +2799,23 @@ snapshots: transitivePeerDependencies: - supports-color - bullmq@5.55.0: + bullmq@5.66.2: dependencies: cron-parser: 4.9.0 - ioredis: 5.6.1 - msgpackr: 1.11.2 + ioredis: 5.8.2 + msgpackr: 1.11.5 node-abort-controller: 3.1.1 - semver: 7.7.1 + semver: 7.7.3 tslib: 2.8.1 - uuid: 9.0.1 + uuid: 11.1.0 transitivePeerDependencies: - supports-color - bun-types@1.2.16: + bun-types@1.3.5: dependencies: - '@types/node': 24.0.3 + '@types/node': 25.0.3 + + bytestreamjs@2.0.1: {} cacache@15.3.0: dependencies: @@ -2675,16 +2903,15 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@14.0.0: {} + commander@14.0.2: {} concat-map@0.0.1: {} - concurrently@9.1.2: + concurrently@9.2.1: dependencies: chalk: 4.1.2 - lodash: 4.17.21 - rxjs: 7.8.1 - shell-quote: 1.8.2 + rxjs: 7.8.2 + shell-quote: 1.8.3 supports-color: 8.1.1 tree-kill: 1.2.2 yargs: 17.7.2 @@ -2694,7 +2921,7 @@ snapshots: cookie@0.7.2: {} - cookie@1.0.2: {} + cookie@1.1.1: {} cors@2.8.5: dependencies: @@ -2705,8 +2932,9 @@ snapshots: dependencies: luxon: 3.6.1 - cross-env@7.0.3: + cross-env@10.1.0: dependencies: + '@epic-web/invariant': 1.0.0 cross-spawn: 7.0.6 cross-spawn@7.0.6: @@ -2745,7 +2973,7 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - dayjs@1.11.13: {} + dayjs@1.11.19: {} debug@4.3.7: dependencies: @@ -2757,6 +2985,10 @@ snapshots: optionalDependencies: supports-color: 5.5.0 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decimal.js@10.5.0: {} decompress-response@6.0.0: @@ -2816,7 +3048,7 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 - dotenv@16.5.0: {} + dotenv@17.2.3: {} dotignore@0.1.2: dependencies: @@ -2830,14 +3062,10 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - encodeurl@2.0.0: {} encoding@0.1.13: @@ -2854,7 +3082,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 24.0.3 + '@types/node': 25.0.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -2984,11 +3212,6 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data@4.0.2: dependencies: asynckit: 0.4.0 @@ -3074,13 +3297,10 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@11.0.1: + glob@13.0.0: dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.3 - minimatch: 10.0.1 + minimatch: 10.1.1 minipass: 7.1.2 - package-json-from-dist: 1.0.1 path-scurry: 2.0.0 glob@7.2.3: @@ -3150,6 +3370,14 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-proxy-agent@4.0.1: dependencies: '@tootallnate/once': 1.1.2 @@ -3236,6 +3464,20 @@ snapshots: transitivePeerDependencies: - supports-color + ioredis@5.8.2: + dependencies: + '@ioredis/commands': 1.4.0 + cluster-key-slot: 1.1.2 + debug: 4.4.0(supports-color@5.5.0) + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + ip-address@9.0.5: dependencies: jsbn: 1.1.0 @@ -3367,10 +3609,6 @@ snapshots: isexe@2.0.0: {} - jackspeak@4.0.3: - dependencies: - '@isaacs/cliui': 8.0.2 - js-tokens@4.0.0: optional: true @@ -3404,7 +3642,7 @@ snapshots: - supports-color - utf-8-validate - lodash-es@4.17.21: {} + lodash-es@4.17.22: {} lodash.defaults@4.2.0: {} @@ -3464,11 +3702,15 @@ snapshots: dependencies: mime-db: 1.54.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mimic-response@3.1.0: {} - minimatch@10.0.1: + minimatch@10.1.1: dependencies: - brace-expansion: 2.0.1 + '@isaacs/brace-expansion': 5.0.0 minimatch@3.1.2: dependencies: @@ -3556,8 +3798,14 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.3 + msgpackr@1.11.5: + optionalDependencies: + msgpackr-extract: 3.0.3 + nanoid@5.1.5: {} + nanoid@5.1.6: {} + napi-build-utils@2.0.0: {} negotiator@0.6.3: {} @@ -3594,7 +3842,7 @@ snapshots: - supports-color optional: true - nodemon@3.1.10: + nodemon@3.1.11: dependencies: chokidar: 3.6.0 debug: 4.4.0(supports-color@5.5.0) @@ -3652,7 +3900,7 @@ snapshots: dependencies: wrappy: 1.0.2 - openai@5.6.0(ws@8.18.1)(zod@3.25.67): + openai@6.15.0(ws@8.18.1)(zod@3.25.67): optionalDependencies: ws: 8.18.1 zod: 3.25.67 @@ -3687,7 +3935,9 @@ snapshots: path-to-regexp@8.2.0: {} - pg-cloudflare@1.2.6: + path-to-regexp@8.3.0: {} + + pg-cloudflare@1.2.7: optional: true pg-connection-string@2.8.5: {} @@ -3696,11 +3946,11 @@ snapshots: pg-int8@1.0.1: {} - pg-pool@3.10.1(pg@8.16.2): + pg-pool@3.10.1(pg@8.16.3): dependencies: - pg: 8.16.2 + pg: 8.16.3 - pg-protocol@1.10.2: {} + pg-protocol@1.10.3: {} pg-types@2.2.0: dependencies: @@ -3710,15 +3960,15 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.16.2: + pg@8.16.3: dependencies: pg-connection-string: 2.9.1 - pg-pool: 3.10.1(pg@8.16.2) - pg-protocol: 1.10.2 + pg-pool: 3.10.1(pg@8.16.3) + pg-protocol: 1.10.3 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.6 + pg-cloudflare: 1.2.7 pgpass@1.0.5: dependencies: @@ -3729,6 +3979,15 @@ snapshots: picomatch@2.3.1: {} + pkijs@3.3.3: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.7 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + possible-typed-array-names@1.1.0: {} postgres-array@2.0.0: {} @@ -3776,6 +4035,12 @@ snapshots: punycode@2.3.1: {} + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + range-parser@1.2.1: {} rc@1.2.8: @@ -3801,6 +4066,8 @@ snapshots: dependencies: redis-errors: 1.2.0 + reflect-metadata@0.2.2: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -3839,16 +4106,16 @@ snapshots: glob: 7.2.3 optional: true - rimraf@6.0.1: + rimraf@6.1.2: dependencies: - glob: 11.0.1 + glob: 13.0.0 package-json-from-dist: 1.0.1 - rollup-plugin-dts@6.2.1(rollup@4.40.1)(typescript@5.8.3): + rollup-plugin-dts@6.2.1(rollup@4.40.1)(typescript@5.9.3): dependencies: magic-string: 0.30.17 rollup: 4.40.1 - typescript: 5.8.3 + typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.27.1 @@ -3880,7 +4147,7 @@ snapshots: rrweb-cssom@0.8.0: {} - rxjs@7.8.1: + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -3916,8 +4183,15 @@ snapshots: '@types/node-forge': 1.3.11 node-forge: 1.3.1 + selfsigned@5.4.0: + dependencies: + '@peculiar/x509': 1.14.2 + pkijs: 3.3.3 + semver@7.7.1: {} + semver@7.7.3: {} + send@1.2.0: dependencies: debug: 4.4.0(supports-color@5.5.0) @@ -3934,9 +4208,25 @@ snapshots: transitivePeerDependencies: - supports-color + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + sequelize-pool@7.1.0: {} - sequelize@6.37.7(pg@8.16.2)(sqlite3@5.1.7): + sequelize@6.37.7(pg@8.16.3)(sqlite3@5.1.7): dependencies: '@types/debug': 4.1.12 '@types/validator': 13.12.2 @@ -3955,7 +4245,7 @@ snapshots: validator: 13.12.0 wkx: 0.5.0 optionalDependencies: - pg: 8.16.2 + pg: 8.16.3 sqlite3: 5.1.7 transitivePeerDependencies: - supports-color @@ -3993,7 +4283,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.2: {} + shell-quote@1.8.3: {} side-channel-list@1.0.0: dependencies: @@ -4026,8 +4316,6 @@ snapshots: signal-exit@3.0.7: optional: true - signal-exit@4.1.0: {} - simple-concat@1.0.1: {} simple-get@4.0.1: @@ -4127,12 +4415,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 @@ -4164,10 +4446,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - strip-json-comments@2.0.1: {} supports-color@5.5.0: @@ -4261,12 +4539,45 @@ snapshots: tree-kill@1.2.2: {} + tslib@1.14.1: {} + tslib@2.8.1: {} + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + turbo-darwin-64@2.7.2: + optional: true + + turbo-darwin-arm64@2.7.2: + optional: true + + turbo-linux-64@2.7.2: + optional: true + + turbo-linux-arm64@2.7.2: + optional: true + + turbo-windows-64@2.7.2: + optional: true + + turbo-windows-arm64@2.7.2: + optional: true + + turbo@2.7.2: + optionalDependencies: + turbo-darwin-64: 2.7.2 + turbo-darwin-arm64: 2.7.2 + turbo-linux-64: 2.7.2 + turbo-linux-arm64: 2.7.2 + turbo-windows-64: 2.7.2 + turbo-windows-arm64: 2.7.2 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.3 @@ -4300,7 +4611,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.8.3: {} + typescript@5.9.3: {} unbox-primitive@1.1.0: dependencies: @@ -4313,6 +4624,8 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.16.0: {} + undici-types@7.8.0: {} unique-filename@1.1.1: @@ -4327,6 +4640,8 @@ snapshots: util-deprecate@1.0.2: {} + uuid@11.1.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -4403,7 +4718,7 @@ snapshots: wkx@0.5.0: dependencies: - '@types/node': 24.0.3 + '@types/node': 25.0.3 wrap-ansi@7.0.0: dependencies: @@ -4411,12 +4726,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} ws@8.17.1: {} diff --git a/src/agent/ai.ts b/src/agent/ai.ts index 177c1f8..717382e 100644 --- a/src/agent/ai.ts +++ b/src/agent/ai.ts @@ -5,7 +5,7 @@ import { config } from '../modules/config.ts'; const createBaiLian = () => { return new BailianProvider({ baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1', - model: 'qwen3-235b-a22b', + model: 'qwen-plus', apiKey: config.BAILIAN_API_KEY, }); }; @@ -17,8 +17,8 @@ console.log('Bailian AI initialized with model:', config.BAILIAN_API_KEY); export const bailianModel = useContextKey('bailianModel', () => { return { - turbo: 'qwen-turbo-2025-04-28', - plus: 'qwen-plus-2025-04-28', + turbo: 'qwen-turbo', + plus: 'qwen-plus', a22b235: 'qwen3-235b-a22b', }; }); diff --git a/tsconfig.json b/tsconfig.json index 1bdfd4e..010ba70 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,24 @@ { "extends": "@kevisual/types/json/backend.json", "compilerOptions": { - "baseUrl": "./", + "module": "NodeNext", + "target": "esnext", + "baseUrl": ".", + "typeRoots": [ + "./node_modules/@types", + "./node_modules/@kevisual/types/index.d.ts" + ], "paths": { "@/*": [ "src/*" + ], + "@agent/*": [ + "agent/*" ] - } + }, }, "include": [ - "src/**/*.ts", + "src/**/*", + "agent/**/*", ], - "exclude": [], } \ No newline at end of file