feat(csm): bootstrap discussion callback flow

This commit is contained in:
zhi
2026-04-02 02:35:08 +00:00
parent 9fa71f37bf
commit 62cd2f20cf
9 changed files with 450 additions and 3 deletions

View File

@@ -17,8 +17,10 @@ import { ensureTurnOrder, recordChannelAccount } from "./core/turn-bootstrap.js"
import { debugCtxSummary, pickDefined, shouldDebugLog } from "./core/utils.js";
import { resolveDiscordUserId, sendModeratorMessage } from "./core/moderator-discord.js";
import { startNoReplyApi, stopNoReplyApi } from "./core/no-reply-process.js";
import { createDiscussionService } from "./core/discussion-service.js";
import {
DECISION_TTL_MS,
forceNoReplySessions,
pruneDecisionMap,
sessionAccountId,
sessionAllowed,
@@ -113,11 +115,21 @@ export default {
api.logger.info("dirigent: gateway stopping, services shut down");
});
const discussionService = createDiscussionService({
api,
moderatorBotToken: baseConfig.moderatorBotToken,
workspaceRoot: process.cwd(),
forceNoReplyForSession: (sessionKey: string) => {
if (sessionKey) forceNoReplySessions.add(sessionKey);
},
});
// Register tools
registerDirigentTools({
api,
baseConfig,
pickDefined,
discussionService,
});
// Turn management is handled internally by the plugin (not exposed as tools).
@@ -133,6 +145,7 @@ export default {
recordChannelAccount,
extractMentionedUserIds,
buildUserIdToAccountIdMap,
discussionService,
});
registerBeforeModelResolveHook({
@@ -142,6 +155,7 @@ export default {
sessionAllowed,
sessionChannelId,
sessionAccountId,
forceNoReplySessions,
policyState,
DECISION_TTL_MS,
ensurePolicyStateLoaded,
@@ -188,6 +202,7 @@ export default {
ensureTurnOrder,
resolveDiscordUserId,
sendModeratorMessage,
discussionService,
});
// Turn advance: when an agent sends a message, check if it signals end of turn