claude-code-workflow 6.3.26 → 6.3.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.claude/CLAUDE.md +7 -1
  2. package/.claude/agents/action-planning-agent.md +1 -0
  3. package/.claude/agents/cli-discuss-agent.md +391 -0
  4. package/.claude/agents/cli-execution-agent.md +2 -0
  5. package/.claude/agents/cli-explore-agent.md +2 -1
  6. package/.claude/agents/cli-lite-planning-agent.md +1 -0
  7. package/.claude/agents/cli-planning-agent.md +1 -0
  8. package/.claude/agents/code-developer.md +1 -0
  9. package/.claude/agents/conceptual-planning-agent.md +2 -0
  10. package/.claude/agents/context-search-agent.md +1 -0
  11. package/.claude/agents/debug-explore-agent.md +2 -0
  12. package/.claude/agents/doc-generator.md +1 -0
  13. package/.claude/agents/issue-plan-agent.md +2 -1
  14. package/.claude/agents/issue-queue-agent.md +2 -1
  15. package/.claude/agents/memory-bridge.md +2 -0
  16. package/.claude/agents/test-context-search-agent.md +2 -0
  17. package/.claude/agents/test-fix-agent.md +1 -0
  18. package/.claude/agents/ui-design-agent.md +2 -0
  19. package/.claude/agents/universal-executor.md +1 -0
  20. package/.claude/commands/issue/execute.md +141 -163
  21. package/.claude/commands/workflow/lite-lite-lite.md +798 -0
  22. package/.claude/commands/workflow/multi-cli-plan.md +510 -0
  23. package/.claude/skills/ccw/SKILL.md +262 -372
  24. package/.claude/skills/ccw/command.json +547 -0
  25. package/.claude/skills/ccw-help/SKILL.md +46 -107
  26. package/.claude/skills/ccw-help/command.json +511 -0
  27. package/.claude/skills/skill-tuning/SKILL.md +303 -0
  28. package/.claude/skills/skill-tuning/phases/actions/action-abort.md +164 -0
  29. package/.claude/skills/skill-tuning/phases/actions/action-analyze-requirements.md +406 -0
  30. package/.claude/skills/skill-tuning/phases/actions/action-apply-fix.md +206 -0
  31. package/.claude/skills/skill-tuning/phases/actions/action-complete.md +195 -0
  32. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-agent.md +317 -0
  33. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-context.md +243 -0
  34. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-dataflow.md +318 -0
  35. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-docs.md +299 -0
  36. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-memory.md +269 -0
  37. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-token-consumption.md +200 -0
  38. package/.claude/skills/skill-tuning/phases/actions/action-gemini-analysis.md +322 -0
  39. package/.claude/skills/skill-tuning/phases/actions/action-generate-report.md +228 -0
  40. package/.claude/skills/skill-tuning/phases/actions/action-init.md +149 -0
  41. package/.claude/skills/skill-tuning/phases/actions/action-propose-fixes.md +317 -0
  42. package/.claude/skills/skill-tuning/phases/actions/action-verify.md +222 -0
  43. package/.claude/skills/skill-tuning/phases/orchestrator.md +377 -0
  44. package/.claude/skills/skill-tuning/phases/state-schema.md +378 -0
  45. package/.claude/skills/skill-tuning/specs/category-mappings.json +284 -0
  46. package/.claude/skills/skill-tuning/specs/dimension-mapping.md +212 -0
  47. package/.claude/skills/skill-tuning/specs/problem-taxonomy.md +318 -0
  48. package/.claude/skills/skill-tuning/specs/quality-gates.md +263 -0
  49. package/.claude/skills/skill-tuning/specs/skill-authoring-principles.md +189 -0
  50. package/.claude/skills/skill-tuning/specs/tuning-strategies.md +1537 -0
  51. package/.claude/skills/skill-tuning/templates/diagnosis-report.md +153 -0
  52. package/.claude/skills/skill-tuning/templates/fix-proposal.md +204 -0
  53. package/.claude/workflows/cli-templates/schemas/multi-cli-discussion-schema.json +421 -0
  54. package/.claude/workflows/cli-tools-usage.md +0 -41
  55. package/ccw/dist/core/auth/csrf-middleware.d.ts.map +1 -1
  56. package/ccw/dist/core/auth/csrf-middleware.js +3 -1
  57. package/ccw/dist/core/auth/csrf-middleware.js.map +1 -1
  58. package/ccw/dist/core/data-aggregator.d.ts +2 -0
  59. package/ccw/dist/core/data-aggregator.d.ts.map +1 -1
  60. package/ccw/dist/core/data-aggregator.js +5 -2
  61. package/ccw/dist/core/data-aggregator.js.map +1 -1
  62. package/ccw/dist/core/lite-scanner.d.ts +2 -1
  63. package/ccw/dist/core/lite-scanner.d.ts.map +1 -1
  64. package/ccw/dist/core/lite-scanner.js +295 -6
  65. package/ccw/dist/core/lite-scanner.js.map +1 -1
  66. package/ccw/dist/core/routes/codexlens/config-handlers.d.ts.map +1 -1
  67. package/ccw/dist/core/routes/codexlens/config-handlers.js +5 -5
  68. package/ccw/dist/core/routes/codexlens/config-handlers.js.map +1 -1
  69. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  70. package/ccw/dist/core/routes/session-routes.js +166 -48
  71. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  72. package/ccw/dist/core/routes/system-routes.d.ts.map +1 -1
  73. package/ccw/dist/core/routes/system-routes.js +87 -0
  74. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  75. package/ccw/dist/core/server.js +2 -2
  76. package/ccw/dist/core/server.js.map +1 -1
  77. package/ccw/scripts/IMPLEMENTATION-SUMMARY.md +226 -0
  78. package/ccw/scripts/QUICK-REFERENCE.md +135 -0
  79. package/ccw/scripts/README-memory-embedder.md +157 -0
  80. package/ccw/scripts/__pycache__/memory_embedder.cpython-313.pyc +0 -0
  81. package/ccw/scripts/__pycache__/test_memory_embedder.cpython-313-pytest-8.4.2.pyc +0 -0
  82. package/ccw/scripts/memory-embedder-example.ts +184 -0
  83. package/ccw/scripts/memory_embedder.py +428 -0
  84. package/ccw/scripts/test_memory_embedder.py +245 -0
  85. package/ccw/src/core/auth/csrf-middleware.ts +3 -1
  86. package/ccw/src/core/data-aggregator.ts +7 -2
  87. package/ccw/src/core/lite-scanner.ts +440 -6
  88. package/ccw/src/core/routes/codexlens/config-handlers.ts +12 -9
  89. package/ccw/src/core/routes/session-routes.ts +201 -48
  90. package/ccw/src/core/routes/system-routes.ts +102 -0
  91. package/ccw/src/core/server.ts +2 -2
  92. package/ccw/src/templates/dashboard-css/01-base.css +8 -0
  93. package/ccw/src/templates/dashboard-css/02-session.css +81 -0
  94. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +2442 -0
  95. package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +157 -0
  96. package/ccw/src/templates/dashboard-css/32-issue-manager.css +23 -0
  97. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +38 -4
  98. package/ccw/src/templates/dashboard-js/components/hook-manager.js +38 -13
  99. package/ccw/src/templates/dashboard-js/components/navigation.js +24 -4
  100. package/ccw/src/templates/dashboard-js/i18n.js +194 -6
  101. package/ccw/src/templates/dashboard-js/views/api-settings.js +32 -0
  102. package/ccw/src/templates/dashboard-js/views/claude-manager.js +44 -3
  103. package/ccw/src/templates/dashboard-js/views/cli-manager.js +303 -31
  104. package/ccw/src/templates/dashboard-js/views/history.js +44 -6
  105. package/ccw/src/templates/dashboard-js/views/home.js +1 -0
  106. package/ccw/src/templates/dashboard-js/views/issue-manager.js +54 -7
  107. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +1817 -4
  108. package/ccw/src/templates/dashboard.html +5 -0
  109. package/package.json +2 -1
  110. package/.claude/skills/ccw/index/command-capabilities.json +0 -127
  111. package/.claude/skills/ccw/index/intent-rules.json +0 -136
  112. package/.claude/skills/ccw/index/workflow-chains.json +0 -451
  113. package/.claude/skills/ccw/phases/actions/bugfix.md +0 -218
  114. package/.claude/skills/ccw/phases/actions/coupled.md +0 -194
  115. package/.claude/skills/ccw/phases/actions/docs.md +0 -93
  116. package/.claude/skills/ccw/phases/actions/full.md +0 -154
  117. package/.claude/skills/ccw/phases/actions/issue.md +0 -201
  118. package/.claude/skills/ccw/phases/actions/rapid.md +0 -104
  119. package/.claude/skills/ccw/phases/actions/review-fix.md +0 -84
  120. package/.claude/skills/ccw/phases/actions/tdd.md +0 -66
  121. package/.claude/skills/ccw/phases/actions/ui.md +0 -79
  122. package/.claude/skills/ccw/phases/orchestrator.md +0 -435
  123. package/.claude/skills/ccw/specs/intent-classification.md +0 -336
  124. package/.claude/skills/ccw-help/index/all-agents.json +0 -82
  125. package/.claude/skills/ccw-help/index/all-commands.json +0 -882
  126. package/.claude/skills/ccw-help/index/by-category.json +0 -914
  127. package/.claude/skills/ccw-help/index/by-use-case.json +0 -896
  128. package/.claude/skills/ccw-help/index/command-relationships.json +0 -160
  129. package/.claude/skills/ccw-help/index/essential-commands.json +0 -112
@@ -2,12 +2,27 @@
2
2
  * Session Routes Module
3
3
  * Handles all Session/Task-related API endpoints
4
4
  */
5
- import { readFileSync, writeFileSync, existsSync, readdirSync } from 'fs';
5
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
6
+ import { readFile, readdir, access } from 'fs/promises';
6
7
  import { join } from 'path';
7
8
  /**
8
- * Get session detail data (context, summaries, impl-plan, review)
9
+ * Check if a file or directory exists (async version)
10
+ * @param filePath - Path to check
11
+ * @returns Promise<boolean>
12
+ */
13
+ async function fileExists(filePath) {
14
+ try {
15
+ await access(filePath);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ /**
23
+ * Get session detail data (context, summaries, impl-plan, review, multi-cli)
9
24
  * @param {string} sessionPath - Path to session directory
10
- * @param {string} dataType - Type of data to load ('all', 'context', 'tasks', 'summary', 'plan', 'explorations', 'conflict', 'impl-plan', 'review')
25
+ * @param {string} dataType - Type of data to load ('all', 'context', 'tasks', 'summary', 'plan', 'explorations', 'conflict', 'impl-plan', 'review', 'multi-cli', 'discussions')
11
26
  * @returns {Promise<Object>}
12
27
  */
13
28
  async function getSessionDetailData(sessionPath, dataType) {
@@ -19,15 +34,16 @@ async function getSessionDetailData(sessionPath, dataType) {
19
34
  if (dataType === 'context' || dataType === 'all') {
20
35
  // Try .process/context-package.json first (common location)
21
36
  let contextFile = join(normalizedPath, '.process', 'context-package.json');
22
- if (!existsSync(contextFile)) {
37
+ if (!(await fileExists(contextFile))) {
23
38
  // Fallback to session root
24
39
  contextFile = join(normalizedPath, 'context-package.json');
25
40
  }
26
- if (existsSync(contextFile)) {
41
+ if (await fileExists(contextFile)) {
27
42
  try {
28
- result.context = JSON.parse(readFileSync(contextFile, 'utf8'));
43
+ result.context = JSON.parse(await readFile(contextFile, 'utf8'));
29
44
  }
30
45
  catch (e) {
46
+ console.warn('Failed to parse context file:', contextFile, e.message);
31
47
  result.context = null;
32
48
  }
33
49
  }
@@ -36,11 +52,11 @@ async function getSessionDetailData(sessionPath, dataType) {
36
52
  if (dataType === 'tasks' || dataType === 'all') {
37
53
  const taskDir = join(normalizedPath, '.task');
38
54
  result.tasks = [];
39
- if (existsSync(taskDir)) {
40
- const files = readdirSync(taskDir).filter(f => f.endsWith('.json') && f.startsWith('IMPL-'));
55
+ if (await fileExists(taskDir)) {
56
+ const files = (await readdir(taskDir)).filter(f => f.endsWith('.json') && f.startsWith('IMPL-'));
41
57
  for (const file of files) {
42
58
  try {
43
- const content = JSON.parse(readFileSync(join(taskDir, file), 'utf8'));
59
+ const content = JSON.parse(await readFile(join(taskDir, file), 'utf8'));
44
60
  result.tasks.push({
45
61
  filename: file,
46
62
  task_id: file.replace('.json', ''),
@@ -48,7 +64,7 @@ async function getSessionDetailData(sessionPath, dataType) {
48
64
  });
49
65
  }
50
66
  catch (e) {
51
- // Skip unreadable files
67
+ console.warn('Failed to parse task file:', join(taskDir, file), e.message);
52
68
  }
53
69
  }
54
70
  // Sort by task ID
@@ -59,15 +75,15 @@ async function getSessionDetailData(sessionPath, dataType) {
59
75
  if (dataType === 'summary' || dataType === 'all') {
60
76
  const summariesDir = join(normalizedPath, '.summaries');
61
77
  result.summaries = [];
62
- if (existsSync(summariesDir)) {
63
- const files = readdirSync(summariesDir).filter(f => f.endsWith('.md'));
78
+ if (await fileExists(summariesDir)) {
79
+ const files = (await readdir(summariesDir)).filter(f => f.endsWith('.md'));
64
80
  for (const file of files) {
65
81
  try {
66
- const content = readFileSync(join(summariesDir, file), 'utf8');
82
+ const content = await readFile(join(summariesDir, file), 'utf8');
67
83
  result.summaries.push({ name: file.replace('.md', ''), content });
68
84
  }
69
85
  catch (e) {
70
- // Skip unreadable files
86
+ console.warn('Failed to read summary file:', join(summariesDir, file), e.message);
71
87
  }
72
88
  }
73
89
  }
@@ -75,11 +91,12 @@ async function getSessionDetailData(sessionPath, dataType) {
75
91
  // Load plan.json (for lite tasks)
76
92
  if (dataType === 'plan' || dataType === 'all') {
77
93
  const planFile = join(normalizedPath, 'plan.json');
78
- if (existsSync(planFile)) {
94
+ if (await fileExists(planFile)) {
79
95
  try {
80
- result.plan = JSON.parse(readFileSync(planFile, 'utf8'));
96
+ result.plan = JSON.parse(await readFile(planFile, 'utf8'));
81
97
  }
82
98
  catch (e) {
99
+ console.warn('Failed to parse plan file:', planFile, e.message);
83
100
  result.plan = null;
84
101
  }
85
102
  }
@@ -94,60 +111,62 @@ async function getSessionDetailData(sessionPath, dataType) {
94
111
  normalizedPath
95
112
  ];
96
113
  for (const searchDir of searchDirs) {
97
- if (!existsSync(searchDir))
114
+ if (!(await fileExists(searchDir)))
98
115
  continue;
99
116
  // Look for explorations-manifest.json
100
117
  const manifestFile = join(searchDir, 'explorations-manifest.json');
101
- if (existsSync(manifestFile)) {
118
+ if (await fileExists(manifestFile)) {
102
119
  try {
103
- result.explorations.manifest = JSON.parse(readFileSync(manifestFile, 'utf8'));
120
+ result.explorations.manifest = JSON.parse(await readFile(manifestFile, 'utf8'));
104
121
  // Load each exploration file based on manifest
105
122
  const explorations = result.explorations.manifest.explorations || [];
106
123
  for (const exp of explorations) {
107
124
  const expFile = join(searchDir, exp.file);
108
- if (existsSync(expFile)) {
125
+ if (await fileExists(expFile)) {
109
126
  try {
110
- result.explorations.data[exp.angle] = JSON.parse(readFileSync(expFile, 'utf8'));
127
+ result.explorations.data[exp.angle] = JSON.parse(await readFile(expFile, 'utf8'));
111
128
  }
112
129
  catch (e) {
113
- // Skip unreadable exploration files
130
+ console.warn('Failed to parse exploration file:', expFile, e.message);
114
131
  }
115
132
  }
116
133
  }
117
134
  break; // Found manifest, stop searching
118
135
  }
119
136
  catch (e) {
137
+ console.warn('Failed to parse explorations manifest:', manifestFile, e.message);
120
138
  result.explorations.manifest = null;
121
139
  }
122
140
  }
123
141
  // Look for diagnoses-manifest.json
124
142
  const diagManifestFile = join(searchDir, 'diagnoses-manifest.json');
125
- if (existsSync(diagManifestFile)) {
143
+ if (await fileExists(diagManifestFile)) {
126
144
  try {
127
- result.diagnoses.manifest = JSON.parse(readFileSync(diagManifestFile, 'utf8'));
145
+ result.diagnoses.manifest = JSON.parse(await readFile(diagManifestFile, 'utf8'));
128
146
  // Load each diagnosis file based on manifest
129
147
  const diagnoses = result.diagnoses.manifest.diagnoses || [];
130
148
  for (const diag of diagnoses) {
131
149
  const diagFile = join(searchDir, diag.file);
132
- if (existsSync(diagFile)) {
150
+ if (await fileExists(diagFile)) {
133
151
  try {
134
- result.diagnoses.data[diag.angle] = JSON.parse(readFileSync(diagFile, 'utf8'));
152
+ result.diagnoses.data[diag.angle] = JSON.parse(await readFile(diagFile, 'utf8'));
135
153
  }
136
154
  catch (e) {
137
- // Skip unreadable diagnosis files
155
+ console.warn('Failed to parse diagnosis file:', diagFile, e.message);
138
156
  }
139
157
  }
140
158
  }
141
159
  break; // Found manifest, stop searching
142
160
  }
143
161
  catch (e) {
162
+ console.warn('Failed to parse diagnoses manifest:', diagManifestFile, e.message);
144
163
  result.diagnoses.manifest = null;
145
164
  }
146
165
  }
147
166
  // Fallback: scan for exploration-*.json and diagnosis-*.json files directly
148
167
  if (!result.explorations.manifest) {
149
168
  try {
150
- const expFiles = readdirSync(searchDir).filter(f => f.startsWith('exploration-') && f.endsWith('.json') && f !== 'explorations-manifest.json');
169
+ const expFiles = (await readdir(searchDir)).filter(f => f.startsWith('exploration-') && f.endsWith('.json') && f !== 'explorations-manifest.json');
151
170
  if (expFiles.length > 0) {
152
171
  // Create synthetic manifest
153
172
  result.explorations.manifest = {
@@ -162,22 +181,22 @@ async function getSessionDetailData(sessionPath, dataType) {
162
181
  for (const file of expFiles) {
163
182
  const angle = file.replace('exploration-', '').replace('.json', '');
164
183
  try {
165
- result.explorations.data[angle] = JSON.parse(readFileSync(join(searchDir, file), 'utf8'));
184
+ result.explorations.data[angle] = JSON.parse(await readFile(join(searchDir, file), 'utf8'));
166
185
  }
167
186
  catch (e) {
168
- // Skip unreadable files
187
+ console.warn('Failed to parse exploration file:', join(searchDir, file), e.message);
169
188
  }
170
189
  }
171
190
  }
172
191
  }
173
192
  catch (e) {
174
- // Directory read failed
193
+ console.warn('Failed to read explorations directory:', searchDir, e.message);
175
194
  }
176
195
  }
177
196
  // Fallback: scan for diagnosis-*.json files directly
178
197
  if (!result.diagnoses.manifest) {
179
198
  try {
180
- const diagFiles = readdirSync(searchDir).filter(f => f.startsWith('diagnosis-') && f.endsWith('.json') && f !== 'diagnoses-manifest.json');
199
+ const diagFiles = (await readdir(searchDir)).filter(f => f.startsWith('diagnosis-') && f.endsWith('.json') && f !== 'diagnoses-manifest.json');
181
200
  if (diagFiles.length > 0) {
182
201
  // Create synthetic manifest
183
202
  result.diagnoses.manifest = {
@@ -192,16 +211,16 @@ async function getSessionDetailData(sessionPath, dataType) {
192
211
  for (const file of diagFiles) {
193
212
  const angle = file.replace('diagnosis-', '').replace('.json', '');
194
213
  try {
195
- result.diagnoses.data[angle] = JSON.parse(readFileSync(join(searchDir, file), 'utf8'));
214
+ result.diagnoses.data[angle] = JSON.parse(await readFile(join(searchDir, file), 'utf8'));
196
215
  }
197
216
  catch (e) {
198
- // Skip unreadable files
217
+ console.warn('Failed to parse diagnosis file:', join(searchDir, file), e.message);
199
218
  }
200
219
  }
201
220
  }
202
221
  }
203
222
  catch (e) {
204
- // Directory read failed
223
+ console.warn('Failed to read diagnoses directory:', searchDir, e.message);
205
224
  }
206
225
  }
207
226
  // If we found either explorations or diagnoses, break out of the loop
@@ -219,13 +238,13 @@ async function getSessionDetailData(sessionPath, dataType) {
219
238
  join(normalizedPath, 'conflict-resolution-decisions.json')
220
239
  ];
221
240
  for (const conflictFile of conflictFiles) {
222
- if (existsSync(conflictFile)) {
241
+ if (await fileExists(conflictFile)) {
223
242
  try {
224
- result.conflictResolution = JSON.parse(readFileSync(conflictFile, 'utf8'));
243
+ result.conflictResolution = JSON.parse(await readFile(conflictFile, 'utf8'));
225
244
  break; // Found file, stop searching
226
245
  }
227
246
  catch (e) {
228
- // Skip unreadable file
247
+ console.warn('Failed to parse conflict resolution file:', conflictFile, e.message);
229
248
  }
230
249
  }
231
250
  }
@@ -233,15 +252,114 @@ async function getSessionDetailData(sessionPath, dataType) {
233
252
  // Load IMPL_PLAN.md
234
253
  if (dataType === 'impl-plan' || dataType === 'all') {
235
254
  const implPlanFile = join(normalizedPath, 'IMPL_PLAN.md');
236
- if (existsSync(implPlanFile)) {
255
+ if (await fileExists(implPlanFile)) {
237
256
  try {
238
- result.implPlan = readFileSync(implPlanFile, 'utf8');
257
+ result.implPlan = await readFile(implPlanFile, 'utf8');
239
258
  }
240
259
  catch (e) {
260
+ console.warn('Failed to read IMPL_PLAN.md:', implPlanFile, e.message);
241
261
  result.implPlan = null;
242
262
  }
243
263
  }
244
264
  }
265
+ // Load multi-cli discussion rounds (rounds/*/synthesis.json)
266
+ // Supports both NEW and OLD schema formats
267
+ if (dataType === 'multi-cli' || dataType === 'discussions' || dataType === 'all') {
268
+ result.multiCli = {
269
+ sessionId: normalizedPath.split('/').pop() || '',
270
+ type: 'multi-cli-plan',
271
+ rounds: [],
272
+ // Aggregated data from latest synthesis
273
+ latestSolutions: [],
274
+ latestConvergence: null,
275
+ latestCrossVerification: null,
276
+ clarificationQuestions: []
277
+ };
278
+ const roundsDir = join(normalizedPath, 'rounds');
279
+ if (await fileExists(roundsDir)) {
280
+ try {
281
+ const roundDirs = (await readdir(roundsDir))
282
+ .filter(d => /^\d+$/.test(d)) // Only numeric directories
283
+ .sort((a, b) => parseInt(a) - parseInt(b));
284
+ for (const roundDir of roundDirs) {
285
+ const synthesisFile = join(roundsDir, roundDir, 'synthesis.json');
286
+ let synthesis = null;
287
+ if (await fileExists(synthesisFile)) {
288
+ try {
289
+ synthesis = JSON.parse(await readFile(synthesisFile, 'utf8'));
290
+ }
291
+ catch (e) {
292
+ console.warn('Failed to parse synthesis file:', synthesisFile, e.message);
293
+ }
294
+ }
295
+ // Build round data with NEW schema fields extracted
296
+ const roundData = {
297
+ roundNumber: parseInt(roundDir),
298
+ synthesis
299
+ };
300
+ // Extract NEW schema fields if present
301
+ if (synthesis) {
302
+ // Extract solutions with summary info
303
+ if (Array.isArray(synthesis.solutions)) {
304
+ roundData.solutions = synthesis.solutions.map(s => ({
305
+ name: s.name || '',
306
+ source_cli: s.source_cli || [],
307
+ feasibility: s.feasibility ?? 0,
308
+ effort: s.effort || 'unknown',
309
+ risk: s.risk || 'unknown',
310
+ summary: s.summary || '',
311
+ tasksCount: s.implementation_plan?.tasks?.length || 0,
312
+ dependencies: s.dependencies || { internal: [], external: [] },
313
+ technical_concerns: s.technical_concerns || []
314
+ }));
315
+ }
316
+ // Extract convergence
317
+ if (synthesis.convergence && typeof synthesis.convergence === 'object') {
318
+ const conv = synthesis.convergence;
319
+ roundData.convergence = {
320
+ score: conv.score ?? 0,
321
+ new_insights: conv.new_insights ?? false,
322
+ recommendation: conv.recommendation || 'unknown'
323
+ };
324
+ }
325
+ // Extract cross_verification
326
+ if (synthesis.cross_verification && typeof synthesis.cross_verification === 'object') {
327
+ const cv = synthesis.cross_verification;
328
+ roundData.cross_verification = {
329
+ agreements: Array.isArray(cv.agreements) ? cv.agreements : [],
330
+ disagreements: Array.isArray(cv.disagreements) ? cv.disagreements : [],
331
+ resolution: cv.resolution || ''
332
+ };
333
+ }
334
+ // Extract clarification_questions
335
+ if (Array.isArray(synthesis.clarification_questions)) {
336
+ roundData.clarification_questions = synthesis.clarification_questions;
337
+ }
338
+ }
339
+ result.multiCli.rounds.push(roundData);
340
+ }
341
+ // Populate aggregated data from latest round
342
+ if (result.multiCli.rounds.length > 0) {
343
+ const latestRound = result.multiCli.rounds[result.multiCli.rounds.length - 1];
344
+ if (latestRound.solutions) {
345
+ result.multiCli.latestSolutions = latestRound.solutions;
346
+ }
347
+ if (latestRound.convergence) {
348
+ result.multiCli.latestConvergence = latestRound.convergence;
349
+ }
350
+ if (latestRound.cross_verification) {
351
+ result.multiCli.latestCrossVerification = latestRound.cross_verification;
352
+ }
353
+ if (latestRound.clarification_questions) {
354
+ result.multiCli.clarificationQuestions = latestRound.clarification_questions;
355
+ }
356
+ }
357
+ }
358
+ catch (e) {
359
+ console.warn('Failed to read rounds directory:', roundsDir, e.message);
360
+ }
361
+ }
362
+ }
245
363
  // Load review data from .review/
246
364
  if (dataType === 'review' || dataType === 'all') {
247
365
  const reviewDir = join(normalizedPath, '.review');
@@ -251,12 +369,12 @@ async function getSessionDetailData(sessionPath, dataType) {
251
369
  severityDistribution: null,
252
370
  totalFindings: 0
253
371
  };
254
- if (existsSync(reviewDir)) {
372
+ if (await fileExists(reviewDir)) {
255
373
  // Load review-state.json
256
374
  const stateFile = join(reviewDir, 'review-state.json');
257
- if (existsSync(stateFile)) {
375
+ if (await fileExists(stateFile)) {
258
376
  try {
259
- const state = JSON.parse(readFileSync(stateFile, 'utf8'));
377
+ const state = JSON.parse(await readFile(stateFile, 'utf8'));
260
378
  result.review.state = state;
261
379
  result.review.severityDistribution = state.severity_distribution || {};
262
380
  result.review.totalFindings = state.total_findings || 0;
@@ -266,17 +384,17 @@ async function getSessionDetailData(sessionPath, dataType) {
266
384
  result.review.criticalFiles = state.critical_files || [];
267
385
  }
268
386
  catch (e) {
269
- // Skip unreadable state
387
+ console.warn('Failed to parse review state file:', stateFile, e.message);
270
388
  }
271
389
  }
272
390
  // Load dimension findings
273
391
  const dimensionsDir = join(reviewDir, 'dimensions');
274
- if (existsSync(dimensionsDir)) {
275
- const files = readdirSync(dimensionsDir).filter(f => f.endsWith('.json'));
392
+ if (await fileExists(dimensionsDir)) {
393
+ const files = (await readdir(dimensionsDir)).filter(f => f.endsWith('.json'));
276
394
  for (const file of files) {
277
395
  try {
278
396
  const dimName = file.replace('.json', '');
279
- const data = JSON.parse(readFileSync(join(dimensionsDir, file), 'utf8'));
397
+ const data = JSON.parse(await readFile(join(dimensionsDir, file), 'utf8'));
280
398
  // Handle array structure: [ { findings: [...] } ]
281
399
  let findings = [];
282
400
  let summary = null;
@@ -297,7 +415,7 @@ async function getSessionDetailData(sessionPath, dataType) {
297
415
  });
298
416
  }
299
417
  catch (e) {
300
- // Skip unreadable files
418
+ console.warn('Failed to parse review dimension file:', join(dimensionsDir, file), e.message);
301
419
  }
302
420
  }
303
421
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-routes.js","sourceRoot":"","sources":["../../../src/core/routes/session-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-routes.js","sourceRoot":"","sources":["../../../src/core/routes/session-routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"system-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/system-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAenC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU,kBAAmB,SAAQ,YAAY;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AA4JD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4OlF"}
1
+ {"version":3,"file":"system-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/system-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAenC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU,kBAAmB,SAAQ,YAAY;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AA4JD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAkVlF"}
@@ -351,6 +351,93 @@ export async function handleSystemRoutes(ctx) {
351
351
  });
352
352
  return true;
353
353
  }
354
+ // API: File dialog - list directory contents for file browser
355
+ if (pathname === '/api/dialog/browse' && req.method === 'POST') {
356
+ handlePostRequest(req, res, async (body) => {
357
+ const { path: browsePath, showHidden } = body;
358
+ const os = await import('os');
359
+ const path = await import('path');
360
+ const fs = await import('fs');
361
+ // Default to home directory
362
+ let targetPath = browsePath || os.homedir();
363
+ // Expand ~ to home directory
364
+ if (targetPath.startsWith('~')) {
365
+ targetPath = path.join(os.homedir(), targetPath.slice(1));
366
+ }
367
+ // Resolve to absolute path
368
+ if (!path.isAbsolute(targetPath)) {
369
+ targetPath = path.resolve(targetPath);
370
+ }
371
+ try {
372
+ const stat = await fs.promises.stat(targetPath);
373
+ if (!stat.isDirectory()) {
374
+ return { error: 'Path is not a directory', status: 400 };
375
+ }
376
+ const entries = await fs.promises.readdir(targetPath, { withFileTypes: true });
377
+ const items = entries
378
+ .filter(entry => showHidden || !entry.name.startsWith('.'))
379
+ .map(entry => ({
380
+ name: entry.name,
381
+ path: path.join(targetPath, entry.name),
382
+ isDirectory: entry.isDirectory(),
383
+ isFile: entry.isFile()
384
+ }))
385
+ .sort((a, b) => {
386
+ // Directories first, then files
387
+ if (a.isDirectory && !b.isDirectory)
388
+ return -1;
389
+ if (!a.isDirectory && b.isDirectory)
390
+ return 1;
391
+ return a.name.localeCompare(b.name);
392
+ });
393
+ return {
394
+ currentPath: targetPath,
395
+ parentPath: path.dirname(targetPath),
396
+ items,
397
+ homePath: os.homedir()
398
+ };
399
+ }
400
+ catch (err) {
401
+ return { error: 'Cannot access directory: ' + err.message, status: 400 };
402
+ }
403
+ });
404
+ return true;
405
+ }
406
+ // API: File dialog - select file (validate path exists)
407
+ if (pathname === '/api/dialog/open-file' && req.method === 'POST') {
408
+ handlePostRequest(req, res, async (body) => {
409
+ const { path: filePath } = body;
410
+ if (!filePath) {
411
+ return { error: 'Path is required', status: 400 };
412
+ }
413
+ const os = await import('os');
414
+ const path = await import('path');
415
+ const fs = await import('fs');
416
+ let targetPath = filePath;
417
+ // Expand ~ to home directory
418
+ if (targetPath.startsWith('~')) {
419
+ targetPath = path.join(os.homedir(), targetPath.slice(1));
420
+ }
421
+ // Resolve to absolute path
422
+ if (!path.isAbsolute(targetPath)) {
423
+ targetPath = path.resolve(targetPath);
424
+ }
425
+ try {
426
+ await fs.promises.access(targetPath, fs.constants.R_OK);
427
+ const stat = await fs.promises.stat(targetPath);
428
+ return {
429
+ success: true,
430
+ path: targetPath,
431
+ isFile: stat.isFile(),
432
+ isDirectory: stat.isDirectory()
433
+ };
434
+ }
435
+ catch {
436
+ return { error: 'File not accessible', status: 404 };
437
+ }
438
+ });
439
+ return true;
440
+ }
354
441
  return false;
355
442
  }
356
443
  //# sourceMappingURL=system-routes.js.map