feat(vscode): 头脑风暴 profile 独立 + codex 命令统一组装收尾

- 头脑风暴/实施/测试会话 profile 彻底独立,互不回退,各自空值回落默认
- 新建工单弹窗的 profile 选择改为头脑风暴专用 brainstormProfilePath
- 详情面板新增「头脑风暴配置文件」下拉
- 删除从未接线的死代码 reviewFlow.ts(runReview 全仓库无调用方)
- codexCommand 精简为仅 resume/interactive 两种终端命令形态
- 版本号 0.2.55 → 0.2.60
This commit is contained in:
2026-07-13 07:50:39 +08:00
parent 5188c23765
commit b585016cd7
22 changed files with 258 additions and 366 deletions
+8 -18
View File
@@ -99,13 +99,13 @@ export class KanbanWebviewPanel {
* terminal is shown; the session watcher fills in `sessionId` once cc
* starts writing its jsonl. The webhook coordinator drains entries via
* `takePendingIssueCreation` when the corresponding `issues opened`
* payload arrives, then merges the column / sessionId / profilePath /
* payload arrives, then merges the column / sessionId / brainstormProfilePath /
* color into the state-JSON comment and cleans up the inbox tmpdir.
*/
// internal: handler 模块访问
readonly pendingIssueCreations = new Map<string, {
sessionId?: string
profilePath?: string
brainstormProfilePath?: string
/** Palette id (e.g. `terminal.ansiBlue`) — same shape stored in state JSON. */
color: string
workspaceRoot: string
@@ -372,7 +372,7 @@ export class KanbanWebviewPanel {
return
}
if (msg.type === 'issue/create') {
void issues.handleIssueCreate(this, msg.userRequest, msg.images, msg.profilePath)
void issues.handleIssueCreate(this, msg.userRequest, msg.images, msg.brainstormProfilePath)
return
}
if (msg.type === 'profiles/list') {
@@ -470,6 +470,10 @@ export class KanbanWebviewPanel {
void issues.handleUpdateProfilePath(this, msg.issueNumber, msg.profilePath)
return
}
if (msg.type === 'issue/update-brainstorm-profile-path') {
void issues.handleUpdateBrainstormProfilePath(this, msg.issueNumber, msg.brainstormProfilePath)
return
}
if (msg.type === 'issue/update-test-profile-path') {
void issues.handleUpdateTestProfilePath(this, msg.issueNumber, msg.testProfilePath)
return
@@ -931,20 +935,6 @@ export class KanbanWebviewPanel {
}
}
/**
* Pick the profile.json that implement-class cc sessions
* (handleImplement / handleResumeSession when sessionKind === 'implement')
* should launch with. Priority:
* 1. The per-issue `profilePath` recorded in state JSON (preserves the
* brainstorm-time choice, overridable from the issue detail panel).
* 2. The hard-coded `DEFAULT_PROFILE_PATH` fallback.
*
* Conflict-resolution sessions use the global
* `settings.conflictResolutionProfilePath` instead of this helper.
* Brainstorm sessions deliberately don't go through this helper — they
* keep the legacy `profilePath || DEFAULT_PROFILE_PATH` so creators can
* still pick a profile per issue at brainstorm time.
*/
/**
* Resolve an issue number to its source identity, for routing state
* persistence. Unknown numbers default to gitea (back-compat / pre-load).
@@ -1058,7 +1048,7 @@ export class KanbanWebviewPanel {
// internal: handler 模块访问
takePendingIssueCreation(nonce: string): {
sessionId?: string
profilePath?: string
brainstormProfilePath?: string
color: string
workspaceRoot: string
inboxDir: string