mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-11 17:21:03 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0ac3a5cd2 | ||
|
|
0939510e0d | ||
|
|
deea92581b |
@@ -529,15 +529,17 @@ ${task_description}
|
|||||||
|
|
||||||
## Multi-Angle Exploration Context
|
## Multi-Angle Exploration Context
|
||||||
|
|
||||||
${manifest.explorations.map(exp => `### Exploration: ${exp.angle} (${exp.file})
|
${manifest.explorations.length > 0
|
||||||
|
? manifest.explorations.map(exp => `### Exploration: ${exp.angle} (${exp.file})
|
||||||
Path: ${exp.path}
|
Path: ${exp.path}
|
||||||
|
|
||||||
Read this file for detailed ${exp.angle} analysis.`).join('\n\n')}
|
Read this file for detailed ${exp.angle} analysis.`).join('\n\n') + `
|
||||||
|
|
||||||
Total explorations: ${manifest.exploration_count}
|
Total explorations: ${manifest.exploration_count}
|
||||||
Angles covered: ${manifest.explorations.map(e => e.angle).join(', ')}
|
Angles covered: ${manifest.explorations.map(e => e.angle).join(', ')}
|
||||||
|
|
||||||
Manifest: ${sessionFolder}/explorations-manifest.json
|
Manifest: ${sessionFolder}/explorations-manifest.json`
|
||||||
|
: `No exploration files. Task Description above contains "## Prior Analysis" with analysis summary, key files, and findings — use it as primary planning context.`}
|
||||||
|
|
||||||
## User Clarifications
|
## User Clarifications
|
||||||
${JSON.stringify(clarificationContext) || "None"}
|
${JSON.stringify(clarificationContext) || "None"}
|
||||||
|
|||||||
@@ -51,9 +51,11 @@ function notifyDashboard(data: Record<string, unknown>): void {
|
|||||||
path: '/api/hook',
|
path: '/api/hook',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
timeout: 2000, // 2 second timeout to prevent hanging
|
timeout: 2000, // 2 second timeout to prevent hanging
|
||||||
|
agent: false, // Disable Keep-Alive to allow process exit
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Content-Length': Buffer.byteLength(payload)
|
'Content-Length': Buffer.byteLength(payload),
|
||||||
|
'Connection': 'close' // Ensure connection closes after response
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -93,9 +95,11 @@ function broadcastStreamEvent(eventType: string, payload: Record<string, unknown
|
|||||||
path: '/api/hook',
|
path: '/api/hook',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
timeout: 1000, // Short timeout for streaming
|
timeout: 1000, // Short timeout for streaming
|
||||||
|
agent: false, // Disable Keep-Alive to allow process exit
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Content-Length': Buffer.byteLength(data)
|
'Content-Length': Buffer.byteLength(data),
|
||||||
|
'Connection': 'close' // Ensure connection closes after response
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,26 @@ export class CsrfTokenManager {
|
|||||||
*/
|
*/
|
||||||
generateToken(sessionId: string): string {
|
generateToken(sessionId: string): string {
|
||||||
const tokens = this.generateTokens(sessionId, 1);
|
const tokens = this.generateTokens(sessionId, 1);
|
||||||
|
// If no slots available (session at max capacity), force generate anyway
|
||||||
|
// This ensures we always return a valid token
|
||||||
|
if (tokens.length === 0) {
|
||||||
|
const token = randomBytes(32).toString('hex');
|
||||||
|
const expiresAtMs = Date.now() + this.tokenTtlMs;
|
||||||
|
const record: CsrfTokenRecord = {
|
||||||
|
sessionId,
|
||||||
|
expiresAtMs,
|
||||||
|
used: false,
|
||||||
|
};
|
||||||
|
// Get or create session map
|
||||||
|
let sessionMap = this.sessionTokens.get(sessionId);
|
||||||
|
if (!sessionMap) {
|
||||||
|
sessionMap = new Map();
|
||||||
|
this.sessionTokens.set(sessionId, sessionMap);
|
||||||
|
}
|
||||||
|
sessionMap.set(token, record);
|
||||||
|
this.tokenToSession.set(token, sessionId);
|
||||||
|
return token;
|
||||||
|
}
|
||||||
return tokens[0];
|
return tokens[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-code-workflow",
|
"name": "claude-code-workflow",
|
||||||
"version": "7.1.0",
|
"version": "7.1.1",
|
||||||
"description": "JSON-driven multi-agent development framework with intelligent CLI orchestration (Gemini/Qwen/Codex), context-first architecture, and automated workflow execution",
|
"description": "JSON-driven multi-agent development framework with intelligent CLI orchestration (Gemini/Qwen/Codex), context-first architecture, and automated workflow execution",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "ccw/dist/index.js",
|
"main": "ccw/dist/index.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user