755bf80858
新增 Godot 项目选择、校验、导入和项目上下文切换入口。 只在所选项目根保留 .agent 元数据,并让总控使用标准运行档。 修复发布版原生 API 访问和 React runtime 重复加载问题。 收紧 Provider 工具 Schema 子集并增加回归门禁。 补充 Rust、前端测试及 PRD、技术方案和共享决策记录。
92 lines
2.1 KiB
TypeScript
92 lines
2.1 KiB
TypeScript
import { existsSync, readFileSync } from 'node:fs';
|
|
import { dirname, resolve } from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
import react from '@vitejs/plugin-react';
|
|
import { defineConfig } from 'vite';
|
|
|
|
const appRoot = dirname(fileURLToPath(import.meta.url));
|
|
const repoRoot = resolve(appRoot, '../..');
|
|
|
|
function resolveDevApiTarget() {
|
|
const statePath = resolve(repoRoot, '.app/dev-stack.json');
|
|
if (!existsSync(statePath)) {
|
|
return 'http://127.0.0.1:8082';
|
|
}
|
|
try {
|
|
const state = JSON.parse(readFileSync(statePath, 'utf8')) as {
|
|
services?: {
|
|
'api-server'?: {
|
|
status?: string;
|
|
url?: string;
|
|
};
|
|
};
|
|
};
|
|
const apiServer = state.services?.['api-server'];
|
|
if (
|
|
apiServer &&
|
|
['running', 'reused', 'starting'].includes(apiServer.status ?? '') &&
|
|
apiServer.url
|
|
) {
|
|
return apiServer.url;
|
|
}
|
|
return 'http://127.0.0.1:8082';
|
|
} catch {
|
|
return 'http://127.0.0.1:8082';
|
|
}
|
|
}
|
|
|
|
const apiTarget = resolveDevApiTarget();
|
|
|
|
export default defineConfig({
|
|
root: appRoot,
|
|
resolve: {
|
|
dedupe: ['react', 'react-dom'],
|
|
},
|
|
plugins: [
|
|
tailwindcss(),
|
|
react(),
|
|
{
|
|
name: 'genarrative-ai-game-creator-dev-marker',
|
|
configureServer(server) {
|
|
server.middlewares.use(
|
|
'/__agc_dev_server.json',
|
|
(_request, response) => {
|
|
response.setHeader(
|
|
'Content-Type',
|
|
'application/json; charset=utf-8',
|
|
);
|
|
response.end(
|
|
JSON.stringify({
|
|
schemaVersion: 1,
|
|
app: 'ai-game-creator-shell',
|
|
port: server.config.server.port,
|
|
apiTarget,
|
|
}),
|
|
);
|
|
},
|
|
);
|
|
},
|
|
},
|
|
],
|
|
server: {
|
|
host: '127.0.0.1',
|
|
port: 3080,
|
|
strictPort: true,
|
|
fs: {
|
|
allow: [repoRoot],
|
|
},
|
|
proxy: {
|
|
'/api': {
|
|
target: apiTarget,
|
|
changeOrigin: true,
|
|
},
|
|
},
|
|
},
|
|
build: {
|
|
outDir: resolve(appRoot, 'dist'),
|
|
emptyOutDir: true,
|
|
},
|
|
});
|