chore(task-board): disable feature during refactor
This commit is contained in:
34
server.js
34
server.js
@@ -173,6 +173,7 @@ const CODEX_APP_CCWEB_MCP_TRANSPORT = normalizeCodexAppCcwebMcpTransport(process
|
||||
const CODEX_APP_WORKER_DISABLED = /^(0|false|no|off)$/i.test(String(process.env.CC_WEB_CODEX_APP_WORKER || ''));
|
||||
const CODEX_APP_WORKER_ENABLED = !CODEX_APP_WORKER_DISABLED;
|
||||
const USAGE_STATISTICS_ENABLED = !/^(0|false|no|off)$/i.test(String(process.env.CC_WEB_USAGE_STATISTICS || ''));
|
||||
const TASK_BOARD_ENABLED = /^(1|true|yes|on)$/i.test(String(process.env.CC_WEB_TASK_BOARD_ENABLED || ''));
|
||||
const CODEX_APP_PROCESS_ENV_STRIP_KEYS = [
|
||||
'CC_WEB_MCP_URL',
|
||||
'CC_WEB_MCP_TOKEN',
|
||||
@@ -2780,6 +2781,7 @@ function listComposerMcpItems(options = {}) {
|
||||
const seen = new Set();
|
||||
const push = (item) => {
|
||||
if (!item?.server && !item?.name) return;
|
||||
if (!TASK_BOARD_ENABLED && String(item.name || '').startsWith('ccweb_task_')) return;
|
||||
const key = `${item.kind || ''}:${item.server || ''}:${item.name || item.label || item.insertion || ''}`;
|
||||
if (seen.has(key)) return;
|
||||
seen.add(key);
|
||||
@@ -4574,7 +4576,7 @@ function createProductionTaskBoardService() {
|
||||
|
||||
taskBoardService = createProductionTaskBoardService();
|
||||
taskBoardMcpHandlers = createTaskBoardMcpHandlers(taskBoardService);
|
||||
taskBoardLifecycle = createTaskBoardLifecycle(taskBoardService, {
|
||||
taskBoardLifecycle = TASK_BOARD_ENABLED ? createTaskBoardLifecycle(taskBoardService, {
|
||||
isTrackingEnabled(sessionId) {
|
||||
try {
|
||||
return taskBoardService.getTask(sessionId).taskTracking.enabled;
|
||||
@@ -4585,8 +4587,8 @@ taskBoardLifecycle = createTaskBoardLifecycle(taskBoardService, {
|
||||
logger(level, event, data) {
|
||||
plog(String(level || '').toUpperCase() === 'ERROR' ? 'ERROR' : 'WARN', event, data);
|
||||
},
|
||||
});
|
||||
taskStatusClassifier = createTaskStatusClassifier({
|
||||
}) : null;
|
||||
taskStatusClassifier = TASK_BOARD_ENABLED ? createTaskStatusClassifier({
|
||||
taskBoardService,
|
||||
loadSession,
|
||||
resolveRuntime: resolveTaskStatusClassifierRuntime,
|
||||
@@ -4600,10 +4602,10 @@ taskStatusClassifier = createTaskStatusClassifier({
|
||||
});
|
||||
broadcastSessionList();
|
||||
},
|
||||
});
|
||||
}) : null;
|
||||
|
||||
function enqueueTaskStatusClassification(sessionId, event = {}) {
|
||||
if (!taskStatusClassifier || !sessionId) return Promise.resolve(null);
|
||||
if (!TASK_BOARD_ENABLED || !taskStatusClassifier || !sessionId) return Promise.resolve(null);
|
||||
return taskStatusClassifier.enqueue(sessionId, event).catch((error) => {
|
||||
plog('WARN', 'task_status_classification_enqueue_failed', {
|
||||
sessionId: String(sessionId).slice(0, 8),
|
||||
@@ -4615,7 +4617,7 @@ function enqueueTaskStatusClassification(sessionId, event = {}) {
|
||||
}
|
||||
|
||||
function taskBoardMcpToolDefinitionsForSession(sessionId) {
|
||||
if (!taskBoardService || !sessionId) return [];
|
||||
if (!TASK_BOARD_ENABLED || !taskBoardService || !sessionId) return [];
|
||||
try {
|
||||
return createTaskBoardMcpToolDefinitions(taskBoardService, {
|
||||
sourceSessionId: sanitizeId(sessionId),
|
||||
@@ -5320,7 +5322,7 @@ function broadcastTaskBoardEvent(eventName, subject = null, extra = {}) {
|
||||
}
|
||||
|
||||
function dispatchTaskBoardLifecycle(sessionId, event = {}) {
|
||||
if (!taskBoardLifecycle || !sessionId || event.trackingEnabled === false) return Promise.resolve(null);
|
||||
if (!TASK_BOARD_ENABLED || !taskBoardLifecycle || !sessionId || event.trackingEnabled === false) return Promise.resolve(null);
|
||||
return taskBoardLifecycle.handleEvent(sessionId, event).then((result) => {
|
||||
if (result?.changed && result.task) {
|
||||
broadcastTaskBoardEvent(`lifecycle:${event.type || result.eventType || 'updated'}`, result.task, {
|
||||
@@ -5349,6 +5351,14 @@ function sendTaskBoardWsResult(ws, request, payload = {}) {
|
||||
}
|
||||
|
||||
function handleTaskBoardWsMessage(ws, message = {}) {
|
||||
if (!TASK_BOARD_ENABLED) {
|
||||
sendTaskBoardWsResult(ws, message, {
|
||||
ok: false,
|
||||
code: 'task_board_disabled',
|
||||
message: '任务看板正在重构,暂不可用。',
|
||||
});
|
||||
return;
|
||||
}
|
||||
const actor = { source: 'user', id: 'ccweb-ui' };
|
||||
try {
|
||||
switch (message.type) {
|
||||
@@ -6577,6 +6587,9 @@ function callInternalMcpTool(tool, args, sourceSessionId, sourceHopCount) {
|
||||
case 'ccweb_prompt_user':
|
||||
return createCcwebPromptUser(args, sourceSessionId);
|
||||
case 'ccweb_task_update': {
|
||||
if (!TASK_BOARD_ENABLED) {
|
||||
return mcpToolError('task_board_disabled', '任务看板正在重构,暂不可用。');
|
||||
}
|
||||
const result = taskBoardMcpHandlers.ccweb_task_update(args, {
|
||||
sourceSessionId,
|
||||
actorId: `mcp:${String(sourceSessionId || '').slice(0, 32)}`,
|
||||
@@ -7717,7 +7730,10 @@ wss.on('connection', (ws, req) => {
|
||||
token: authToken,
|
||||
mustChangePassword: !!authConfig.mustChange,
|
||||
frontendAssetVersion: computeFrontendAssetVersion(),
|
||||
features: { usageStatistics: USAGE_STATISTICS_ENABLED },
|
||||
features: {
|
||||
usageStatistics: USAGE_STATISTICS_ENABLED,
|
||||
taskBoard: TASK_BOARD_ENABLED,
|
||||
},
|
||||
});
|
||||
sendSessionList(ws);
|
||||
} else {
|
||||
@@ -9232,7 +9248,7 @@ function handleNewSession(ws, msg) {
|
||||
});
|
||||
}
|
||||
let { session } = result;
|
||||
if (request.taskTrackingEnabled === true) {
|
||||
if (TASK_BOARD_ENABLED && request.taskTrackingEnabled === true) {
|
||||
try {
|
||||
const trackedTask = taskBoardService.setTracking(session.id, true, {
|
||||
source: 'user',
|
||||
|
||||
Reference in New Issue
Block a user