fix: 更新 AssistantConfig 以启用共享功能,并优化本地用户检查逻辑
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
# .cnb/web_trigger.yml
|
|
||||||
branch:
|
|
||||||
# 如下按钮在分支名以 release 开头的分支详情页面显示
|
|
||||||
- reg: "^main"
|
|
||||||
buttons:
|
|
||||||
- name: 同步代码到gitea
|
|
||||||
description: 同步代码到gitea
|
|
||||||
event: web_trigger_sync_to_gitea
|
|
||||||
- name: 同步gitea代码到当前仓库
|
|
||||||
description: 同步gitea代码到当前仓库
|
|
||||||
event: web_trigger_sync_from_gitea
|
|
||||||
@@ -390,7 +390,7 @@ export class AssistantConfig {
|
|||||||
home: '/root/home',
|
home: '/root/home',
|
||||||
proxy: [],
|
proxy: [],
|
||||||
share: {
|
share: {
|
||||||
enabled: false,
|
enabled: true,
|
||||||
url: 'https://kevisual.cn/ws/proxy',
|
url: 'https://kevisual.cn/ws/proxy',
|
||||||
},
|
},
|
||||||
} as AssistantConfigData;
|
} as AssistantConfigData;
|
||||||
|
|||||||
@@ -301,11 +301,11 @@ const checkLocalUser = async (opts: { assistantApp: AssistantApp }) => {
|
|||||||
const config = assistantApp.config.getConfig();
|
const config = assistantApp.config.getConfig();
|
||||||
const auth = config?.auth || {};
|
const auth = config?.auth || {};
|
||||||
const isLogin = await assistantQuery.queryLogin.getToken();
|
const isLogin = await assistantQuery.queryLogin.getToken();
|
||||||
logger.log('[assistant] 正在检查本地用户登录状态...', auth, '是否已登录', !!isLogin);
|
logger.log('[assistant] 正在检查本地用户登录状态...', 'user', auth.username, '是否已登录', !!isLogin);
|
||||||
|
|
||||||
const saveAuth = (auth: typeof config.auth, opts: { appId?: string, username: string; share: 'protected' | 'private' }) => {
|
const saveAuth = (auth: typeof config.auth, opts: { appId?: string, username: string; share: 'protected' | 'private' }) => {
|
||||||
auth.username = opts.username;
|
auth.username = auth.username ?? opts.username;
|
||||||
auth.share = opts.share;
|
auth.share = auth.share ?? opts.share;
|
||||||
const app = config?.app || {};
|
const app = config?.app || {};
|
||||||
if (!app?.id) {
|
if (!app?.id) {
|
||||||
app.id = opts.appId || 'dev-cnb'
|
app.id = opts.appId || 'dev-cnb'
|
||||||
@@ -333,15 +333,23 @@ const checkLocalUser = async (opts: { assistantApp: AssistantApp }) => {
|
|||||||
const res = await assistantQuery.queryLogin.loginByCnb({ cnbToken })
|
const res = await assistantQuery.queryLogin.loginByCnb({ cnbToken })
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
const userInfo = await assistantQuery.queryLogin.checkLocalUser()
|
const userInfo = await assistantQuery.queryLogin.checkLocalUser()
|
||||||
|
if (!userInfo.username) {
|
||||||
saveAuth(auth, { username: userInfo.username, share: 'protected' })
|
saveAuth(auth, { username: userInfo.username, share: 'protected' })
|
||||||
|
}
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
logger.error('CNB登录失败,无法获取用户信息', res);
|
logger.error('CNB登录失败,无法获取用户信息', res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const kevisualToken = useKey('KEVISUAL_TOKEN');
|
const accessToken = useKey('KEVISUAL_TOKEN');
|
||||||
if (kevisualToken) {
|
if (accessToken) {
|
||||||
logger.info('[cnb]检测到 KEVISUAL_TOKEN,正在尝试使用 KEVISUAL_TOKEN 登录...');
|
logger.info('[cnb]检测到 KEVISUAL_TOKEN,正在尝试使用 KEVISUAL_TOKEN 登录...');
|
||||||
const res = await assistantQuery.queryLogin.refreshLoginUser(kevisualToken)
|
const res = await assistantQuery.queryLogin.refreshLoginUser({ accessToken, refreshToken: '' })
|
||||||
|
if (res.code === 200) {
|
||||||
|
if (!auth.username) {
|
||||||
|
const userInfo = await assistantQuery.queryLogin.checkLocalUser()
|
||||||
|
saveAuth(auth, { username: userInfo.username, share: 'protected' })
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,10 @@ import fs from 'node:fs';
|
|||||||
import glob from 'fast-glob';
|
import glob from 'fast-glob';
|
||||||
import { runCode } from './run.ts';
|
import { runCode } from './run.ts';
|
||||||
const codeDemoId = '0e700dc8-90dd-41b7-91dd-336ea51de3d2'
|
const codeDemoId = '0e700dc8-90dd-41b7-91dd-336ea51de3d2'
|
||||||
import { filter } from "@kevisual/js-filter";
|
|
||||||
import { getHash, getStringHash } from '../file-hash.ts';
|
import { getHash, getStringHash } from '../file-hash.ts';
|
||||||
import { AssistantConfig } from '@/lib.ts';
|
import { AssistantConfig } from '@/lib.ts';
|
||||||
import { assistantQuery } from '@/app.ts';
|
import { assistantQuery } from '@/app.ts';
|
||||||
|
import { logger } from '../logger.ts';
|
||||||
|
|
||||||
const codeDemo = `// 这是一个示例代码文件
|
const codeDemo = `// 这是一个示例代码文件
|
||||||
import {App} from '@kevisual/router';
|
import {App} from '@kevisual/router';
|
||||||
@@ -47,17 +47,17 @@ type LightCodeFile = {
|
|||||||
export const initLightCode = async (opts: Opts) => {
|
export const initLightCode = async (opts: Opts) => {
|
||||||
const token = await assistantQuery.getToken();
|
const token = await assistantQuery.getToken();
|
||||||
if (!token) {
|
if (!token) {
|
||||||
console.error('[light-code] 当前未登录,无法初始化 light-code');
|
logger.error('[light-code] 当前未登录,无法初始化 light-code');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 注册 light-code 路由
|
// 注册 light-code 路由
|
||||||
const config = opts.config as AssistantInit;
|
const config = opts.config as AssistantInit;
|
||||||
const app = opts.router;
|
const app = opts.router;
|
||||||
console.log('初始化 light-code 路由');
|
logger.log('[light-code] 初始化 light-code 路由');
|
||||||
const query = config.query;
|
const query = config.query;
|
||||||
const sync = opts.sync ?? 'remote';
|
const sync = opts.sync ?? 'remote';
|
||||||
if (!config || !app) {
|
if (!config || !app) {
|
||||||
console.error('[light-code] initLightCode 缺少必要参数, config 或 app');
|
logger.error('[light-code] initLightCode 缺少必要参数, config 或 app');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const lightcodeDir = opts.rootPath;
|
const lightcodeDir = opts.rootPath;
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
"metadata": {
|
|
||||||
"name": "kevisual",
|
|
||||||
"share": "public"
|
|
||||||
},
|
|
||||||
"checkDir": {
|
|
||||||
"./build/tools/kevisual-sync": {
|
|
||||||
"url": "https://kevisual.xiongxiao.me/root/ai/kevisual/tools/kevisual-sync/",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"syncDirectory": [
|
|
||||||
{
|
|
||||||
"files": [
|
|
||||||
"build/**/*"
|
|
||||||
],
|
|
||||||
"ignore": [
|
|
||||||
"build/ignore.md"
|
|
||||||
],
|
|
||||||
"registry": "https://kevisual.xiongxiao.me/root/ai/kevisual",
|
|
||||||
"replace": {
|
|
||||||
"build/": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"sync": {
|
|
||||||
"./build/01-summary.md": {
|
|
||||||
"url": "https://kevisual.xiongxiao.me/root/ai/kevisual/01-summary.md",
|
|
||||||
"meta": {
|
|
||||||
"share": "public"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,7 +19,9 @@ const checkAuth = (value: string = '', baseURL: string = '') => {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const DEFAULT_IGNORE = ['node_modules/**', '.git/**', '.next/**', '.astro/**', '.pack-dist/**'];
|
const DEFAULT_IGNORE = [
|
||||||
|
'node_modules/**', '.git/**', '.next/**', '.astro/**', '.pack-dist/**',
|
||||||
|
];
|
||||||
export class SyncBase {
|
export class SyncBase {
|
||||||
config: Config;
|
config: Config;
|
||||||
#filename: string;
|
#filename: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user