merge: feature/page-data-dev-aider into main
Bring in Page Data Aider dev loop, adm code-run policy UI, and customer order demo. Keep system disclosure policy and agent code-run admin wiring side by side. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+38
-8
@@ -216,6 +216,7 @@ import { createMemoryV2AdminConfigService } from './memory-v2-admin-config.mjs';
|
||||
import { createEpisodicMemoryService } from './episodic-memory.mjs';
|
||||
import { createSkillRuntimeAdminConfigService } from './skill-runtime-admin-config.mjs';
|
||||
import { createSystemDisclosurePolicyService } from './system-disclosure-policy.mjs';
|
||||
import { createAgentCodeRunAdminConfigService } from './agent-code-run-admin-config.mjs';
|
||||
import { createWechatScheduleLlmConfigService } from './wechat-schedule-llm-config.mjs';
|
||||
import { createExperienceService } from './experience-service.mjs';
|
||||
import { attachAsrRoutes } from './asr-proxy.mjs';
|
||||
@@ -388,6 +389,7 @@ let episodicMemoryService = null;
|
||||
let memoryV2ConfigService = null;
|
||||
let skillRuntimeConfigService = null;
|
||||
let systemDisclosurePolicyService = null;
|
||||
let agentCodeRunPolicyService = null;
|
||||
let wechatScheduleLlmConfigService = null;
|
||||
let mindSpace = null;
|
||||
let mindSpaceAssets = null;
|
||||
@@ -725,6 +727,7 @@ async function bootstrapUserAuth() {
|
||||
skillRuntimeConfigService = createSkillRuntimeAdminConfigService(pool, { h5Root: __dirname });
|
||||
systemDisclosurePolicyService = createSystemDisclosurePolicyService(pool);
|
||||
await systemDisclosurePolicyService.initialize();
|
||||
agentCodeRunPolicyService = createAgentCodeRunAdminConfigService(pool, { env: process.env });
|
||||
wechatScheduleLlmConfigService = createWechatScheduleLlmConfigService(pool);
|
||||
conversationMemoryService = createConversationMemoryService(pool, {
|
||||
llmProviderService,
|
||||
@@ -1033,6 +1036,16 @@ async function resolveSkillRuntimeForClient() {
|
||||
}
|
||||
}
|
||||
|
||||
async function resolveAgentCodeRunForClient(userId) {
|
||||
if (!agentCodeRunPolicyService?.getPublicClientPolicy) return null;
|
||||
try {
|
||||
return await agentCodeRunPolicyService.getPublicClientPolicy(userId);
|
||||
} catch (err) {
|
||||
console.warn('[AgentCodeRun] public policy unavailable:', err instanceof Error ? err.message : err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
app.get('/auth/status', async (req, res) => {
|
||||
await userAuthReady;
|
||||
if (userAuth) {
|
||||
@@ -1042,6 +1055,7 @@ app.get('/auth/status', async (req, res) => {
|
||||
const row = await userAuth.getUserById(me.id);
|
||||
const capabilityState = await userAuth.resolveUserCapabilities(row);
|
||||
const skillRuntime = await resolveSkillRuntimeForClient();
|
||||
const agentCodeRun = await resolveAgentCodeRunForClient(me.id);
|
||||
return res.json({
|
||||
authenticated: true,
|
||||
user: me,
|
||||
@@ -1050,6 +1064,7 @@ app.get('/auth/status', async (req, res) => {
|
||||
grantedSkills: capabilityState.grantedSkills ?? [],
|
||||
unrestricted: capabilityState.unrestricted,
|
||||
skillRuntime,
|
||||
agentCodeRun,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('[Auth] status failed:', err instanceof Error ? err.message : err);
|
||||
@@ -2238,12 +2253,21 @@ function runtimeCsvList(value) {
|
||||
}
|
||||
|
||||
function runtimeCodeRunPolicyStatus() {
|
||||
return {
|
||||
enabled: runtimeEnvFlag(process.env.MEMIND_AGENT_CODE_RUNS_ENABLED),
|
||||
userAllowlist: runtimeCsvList(process.env.MEMIND_AGENT_CODE_RUNS_USER_IDS),
|
||||
taskTypeAllowlist: runtimeCsvList(process.env.MEMIND_AGENT_CODE_RUN_TASK_TYPES),
|
||||
requireValidation: runtimeEnvFlag(process.env.MEMIND_AGENT_CODE_RUNS_REQUIRE_VALIDATION),
|
||||
};
|
||||
return agentCodeRunPolicyService?.getRuntimeStatusSummary
|
||||
? agentCodeRunPolicyService.getRuntimeStatusSummary()
|
||||
: Promise.resolve({
|
||||
source: 'env',
|
||||
enabled: runtimeEnvFlag(process.env.MEMIND_AGENT_CODE_RUNS_ENABLED),
|
||||
clientEnabled: runtimeEnvFlag(process.env.VITE_AGENT_CODE_RUNS_ENABLED),
|
||||
userAllowlist: runtimeCsvList(process.env.MEMIND_AGENT_CODE_RUNS_USER_IDS),
|
||||
taskTypeAllowlist: runtimeCsvList(process.env.MEMIND_AGENT_CODE_RUN_TASK_TYPES),
|
||||
requireValidation: runtimeEnvFlag(process.env.MEMIND_AGENT_CODE_RUNS_REQUIRE_VALIDATION),
|
||||
pageDataDevAutodetect: runtimeEnvFlag(process.env.VITE_AGENT_PAGE_DATA_DEV_AUTODETECT),
|
||||
generalAutodetect: runtimeEnvFlag(process.env.VITE_AGENT_CODE_RUNS_AUTODETECT),
|
||||
envOverrideActive: String(process.env.MEMIND_CODE_RUN_POLICY_SOURCE ?? '').trim().toLowerCase() === 'env',
|
||||
updatedAt: null,
|
||||
updatedBy: null,
|
||||
});
|
||||
}
|
||||
|
||||
api.get('/runtime/status', async (_req, res) => {
|
||||
@@ -2271,7 +2295,7 @@ api.get('/runtime/status', async (_req, res) => {
|
||||
if (toolQueue) {
|
||||
status.toolRuntime = {
|
||||
...(status.toolRuntime ?? {}),
|
||||
codeRunPolicy: runtimeCodeRunPolicyStatus(),
|
||||
codeRunPolicy: await runtimeCodeRunPolicyStatus(),
|
||||
queue: toolQueue,
|
||||
};
|
||||
}
|
||||
@@ -5109,7 +5133,13 @@ api.post('/agent/runs', async (req, res, next) => {
|
||||
[
|
||||
tkmindProxy.requireUser,
|
||||
tkmindProxy.ensureChatAllowed,
|
||||
createPostAgentRunsHandler({ userAuth, sessionAccess, agentRunGateway, mindSpaceAssetAgent }),
|
||||
createPostAgentRunsHandler({
|
||||
userAuth,
|
||||
sessionAccess,
|
||||
agentRunGateway,
|
||||
mindSpaceAssetAgent,
|
||||
codeRunPolicyService: agentCodeRunPolicyService,
|
||||
}),
|
||||
],
|
||||
req,
|
||||
res,
|
||||
|
||||
Reference in New Issue
Block a user