mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-11 02:33:51 +08:00
feat: initialize monorepo with package.json for CCW workflow platform
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3,66 +3,32 @@ description: Serial collaborative planning with Plan Note - Single-agent sequent
|
|||||||
argument-hint: "TASK=\"<description>\" [--max-domains=5] [--focus=<domain>]"
|
argument-hint: "TASK=\"<description>\" [--max-domains=5] [--focus=<domain>]"
|
||||||
---
|
---
|
||||||
|
|
||||||
# Codex Collaborative-Plan-With-File Prompt
|
# Codex Collaborative-Plan-With-File Workflow
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
Serial collaborative planning workflow using **Plan Note** architecture. Processes sub-domains sequentially, generates task plans, and detects conflicts across domains.
|
||||||
|
|
||||||
|
**Core workflow**: Understand → Template → Sequential Planning → Conflict Detection → Completion
|
||||||
|
|
||||||
|
**Key features**:
|
||||||
|
- **plan-note.md**: Shared collaborative document with pre-allocated sections
|
||||||
|
- **Serial domain processing**: Each sub-domain planned sequentially via CLI
|
||||||
|
- **Conflict detection**: Automatic file, dependency, and strategy conflict scanning
|
||||||
|
- **No merge needed**: Pre-allocated sections eliminate merge conflicts
|
||||||
|
|
||||||
|
**Note**: Codex does not support parallel agent execution. All domains are processed serially.
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
Serial collaborative planning workflow using **Plan Note** architecture:
|
This workflow enables structured planning through sequential phases:
|
||||||
|
|
||||||
1. **Understanding**: Analyze requirements and identify 2-5 sub-domains
|
1. **Understanding & Template** - Analyze requirements, identify sub-domains, create plan-note.md template
|
||||||
2. **Sequential Planning**: Process each sub-domain sequentially, generating plan.json + updating plan-note.md
|
2. **Sequential Planning** - Process each sub-domain serially via CLI analysis
|
||||||
3. **Conflict Detection**: Scan plan-note.md for conflicts
|
3. **Conflict Detection** - Scan plan-note.md for conflicts across all domains
|
||||||
4. **Completion**: Generate executable plan.md summary
|
4. **Completion** - Generate human-readable plan.md summary
|
||||||
|
|
||||||
**Note**: Codex does not support parallel agent execution. All domains processed serially.
|
The key innovation is the **Plan Note** architecture - a shared collaborative document with pre-allocated sections per sub-domain, eliminating merge conflicts.
|
||||||
|
|
||||||
## Target Task
|
|
||||||
|
|
||||||
**$TASK**
|
|
||||||
|
|
||||||
**Parameters**:
|
|
||||||
- `--max-domains`: Maximum sub-domains to identify (default: 5)
|
|
||||||
- `--focus`: Focus specific domain (optional)
|
|
||||||
|
|
||||||
## Execution Process
|
|
||||||
|
|
||||||
```
|
|
||||||
Session Detection:
|
|
||||||
├─ Check if planning session exists for task
|
|
||||||
├─ EXISTS + plan-note.md exists → Continue mode
|
|
||||||
└─ NOT_FOUND → New session mode
|
|
||||||
|
|
||||||
Phase 1: Understanding & Template Creation
|
|
||||||
├─ Analyze task description (Glob/Grep/Bash)
|
|
||||||
├─ Identify 2-5 sub-domains
|
|
||||||
├─ Create plan-note.md template
|
|
||||||
└─ Generate requirement-analysis.json
|
|
||||||
|
|
||||||
Phase 2: Sequential Sub-Domain Planning (Serial)
|
|
||||||
├─ For each sub-domain (LOOP):
|
|
||||||
│ ├─ Gemini CLI: Generate detailed plan
|
|
||||||
│ ├─ Extract task summary
|
|
||||||
│ └─ Update plan-note.md section
|
|
||||||
└─ Complete all domains sequentially
|
|
||||||
|
|
||||||
Phase 3: Conflict Detection
|
|
||||||
├─ Parse plan-note.md
|
|
||||||
├─ Extract all tasks from all sections
|
|
||||||
├─ Detect file/dependency/strategy conflicts
|
|
||||||
└─ Update conflict markers in plan-note.md
|
|
||||||
|
|
||||||
Phase 4: Completion
|
|
||||||
├─ Generate conflicts.json
|
|
||||||
├─ Generate plan.md summary
|
|
||||||
└─ Ready for execution
|
|
||||||
|
|
||||||
Output:
|
|
||||||
├─ .workflow/.planning/{slug}-{date}/plan-note.md (executable)
|
|
||||||
├─ .workflow/.planning/{slug}-{date}/requirement-analysis.json (metadata)
|
|
||||||
├─ .workflow/.planning/{slug}-{date}/conflicts.json (conflict report)
|
|
||||||
├─ .workflow/.planning/{slug}-{date}/plan.md (human-readable)
|
|
||||||
└─ .workflow/.planning/{slug}-{date}/agents/{domain}/plan.json (detailed)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Output Structure
|
## Output Structure
|
||||||
|
|
||||||
@@ -80,469 +46,364 @@ Output:
|
|||||||
└── plan.md # Phase 4: Human-readable summary
|
└── plan.md # Phase 4: Human-readable summary
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Output Artifacts
|
||||||
|
|
||||||
|
### Phase 1: Understanding & Template
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `plan-note.md` | Collaborative template with pre-allocated task pool and evidence sections per domain |
|
||||||
|
| `requirement-analysis.json` | Sub-domain assignments, TASK ID ranges, complexity assessment |
|
||||||
|
|
||||||
|
### Phase 2: Sequential Planning
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `agents/{domain}/plan.json` | Detailed implementation plan per domain |
|
||||||
|
| Updated `plan-note.md` | Task pool and evidence sections filled for each domain |
|
||||||
|
|
||||||
|
### Phase 3: Conflict Detection
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `conflicts.json` | Detected conflicts with types, severity, and resolutions |
|
||||||
|
| Updated `plan-note.md` | Conflict markers section populated |
|
||||||
|
|
||||||
|
### Phase 4: Completion
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `plan.md` | Human-readable summary with requirements, tasks, and conflicts |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Implementation Details
|
## Implementation Details
|
||||||
|
|
||||||
### Session Setup
|
### Session Initialization
|
||||||
|
|
||||||
```javascript
|
The workflow automatically generates a unique session identifier and directory structure.
|
||||||
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
||||||
|
|
||||||
const taskSlug = "$TASK".toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, '-').substring(0, 30)
|
**Session ID Format**: `CPLAN-{slug}-{date}`
|
||||||
const dateStr = getUtc8ISOString().substring(0, 10)
|
- `slug`: Lowercase alphanumeric, max 30 chars
|
||||||
|
- `date`: YYYY-MM-DD format (UTC+8)
|
||||||
|
|
||||||
const sessionId = `CPLAN-${taskSlug}-${dateStr}`
|
**Session Directory**: `.workflow/.planning/{sessionId}/`
|
||||||
const sessionFolder = `.workflow/.planning/${sessionId}`
|
|
||||||
const planNotePath = `${sessionFolder}/plan-note.md`
|
|
||||||
const requirementsPath = `${sessionFolder}/requirement-analysis.json`
|
|
||||||
const conflictsPath = `${sessionFolder}/conflicts.json`
|
|
||||||
const planPath = `${sessionFolder}/plan.md`
|
|
||||||
|
|
||||||
// Auto-detect mode
|
**Auto-Detection**: If session folder exists with plan-note.md, automatically enters continue mode.
|
||||||
const sessionExists = fs.existsSync(sessionFolder)
|
|
||||||
const hasPlanNote = sessionExists && fs.existsSync(planNotePath)
|
|
||||||
const mode = hasPlanNote ? 'continue' : 'new'
|
|
||||||
|
|
||||||
if (!sessionExists) {
|
**Session Variables**:
|
||||||
bash(`mkdir -p ${sessionFolder}/agents`)
|
- `sessionId`: Unique session identifier
|
||||||
}
|
- `sessionFolder`: Base directory for all artifacts
|
||||||
```
|
- `maxDomains`: Maximum number of sub-domains (default: 5)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Phase 1: Understanding & Template Creation
|
## Phase 1: Understanding & Template Creation
|
||||||
|
|
||||||
#### Step 1.1: Analyze Task Description
|
**Objective**: Analyze task requirements, identify parallelizable sub-domains, and create the plan-note.md template with pre-allocated sections.
|
||||||
|
|
||||||
Use built-in tools (no agent):
|
### Step 1.1: Analyze Task Description
|
||||||
|
|
||||||
```javascript
|
Use built-in tools to understand the task scope and identify sub-domains.
|
||||||
// 1. Extract task keywords
|
|
||||||
const taskKeywords = extractKeywords("$TASK")
|
|
||||||
|
|
||||||
// 2. Identify sub-domains via analysis
|
**Analysis Activities**:
|
||||||
// Example: "Implement real-time notification system"
|
1. **Extract task keywords** - Identify key terms and concepts from the task description
|
||||||
// → Domains: [Backend API, Frontend UI, Notification Service, Data Storage, Testing]
|
2. **Identify sub-domains** - Split into 2-5 parallelizable focus areas based on task complexity
|
||||||
|
3. **Assess complexity** - Evaluate overall task complexity (Low/Medium/High)
|
||||||
|
4. **Search for references** - Find related documentation, README files, and architecture guides
|
||||||
|
|
||||||
const subDomains = identifySubDomains("$TASK", {
|
**Sub-Domain Identification Patterns**:
|
||||||
maxDomains: 5, // --max-domains parameter
|
|
||||||
keywords: taskKeywords
|
|
||||||
})
|
|
||||||
|
|
||||||
// 3. Estimate scope
|
| Pattern | Keywords |
|
||||||
const complexity = assessComplexity("$TASK")
|
|---------|----------|
|
||||||
```
|
| Backend API | 服务, 后端, API, 接口 |
|
||||||
|
| Frontend | 界面, 前端, UI, 视图 |
|
||||||
|
| Database | 数据, 存储, 数据库, 持久化 |
|
||||||
|
| Testing | 测试, 验证, QA |
|
||||||
|
| Infrastructure | 部署, 基础, 运维, 配置 |
|
||||||
|
|
||||||
#### Step 1.2: Create plan-note.md Template
|
**Ambiguity Handling**: When the task description is unclear or has multiple interpretations, gather user clarification before proceeding.
|
||||||
|
|
||||||
Generate structured template:
|
### Step 1.2: Create plan-note.md Template
|
||||||
|
|
||||||
```markdown
|
Generate a structured template with pre-allocated sections for each sub-domain.
|
||||||
---
|
|
||||||
session_id: ${sessionId}
|
|
||||||
original_requirement: |
|
|
||||||
$TASK
|
|
||||||
created_at: ${getUtc8ISOString()}
|
|
||||||
complexity: ${complexity}
|
|
||||||
sub_domains: ${subDomains.map(d => d.name).join(', ')}
|
|
||||||
status: in_progress
|
|
||||||
---
|
|
||||||
|
|
||||||
# 协作规划
|
**plan-note.md Structure**:
|
||||||
|
- **YAML Frontmatter**: session_id, original_requirement, created_at, complexity, sub_domains, status
|
||||||
|
- **Section: 需求理解**: Core objectives, key points, constraints, split strategy
|
||||||
|
- **Section: 任务池 - {Domain N}**: Pre-allocated task section per domain (TASK-{range})
|
||||||
|
- **Section: 依赖关系**: Auto-generated after all domains complete
|
||||||
|
- **Section: 冲突标记**: Populated in Phase 3
|
||||||
|
- **Section: 上下文证据 - {Domain N}**: Evidence section per domain
|
||||||
|
|
||||||
**Session ID**: ${sessionId}
|
**TASK ID Range Allocation**: Each domain receives a non-overlapping range of 100 IDs (e.g., Domain 1: TASK-001~100, Domain 2: TASK-101~200).
|
||||||
**任务**: $TASK
|
|
||||||
**复杂度**: ${complexity}
|
### Step 1.3: Generate requirement-analysis.json
|
||||||
**创建时间**: ${getUtc8ISOString()}
|
|
||||||
|
Create the sub-domain configuration document.
|
||||||
|
|
||||||
|
**requirement-analysis.json Structure**:
|
||||||
|
|
||||||
|
| Field | Purpose |
|
||||||
|
|-------|---------|
|
||||||
|
| `session_id` | Session identifier |
|
||||||
|
| `original_requirement` | Task description |
|
||||||
|
| `complexity` | Low / Medium / High |
|
||||||
|
| `sub_domains[]` | Array of focus areas with descriptions |
|
||||||
|
| `sub_domains[].focus_area` | Domain name |
|
||||||
|
| `sub_domains[].description` | Domain scope description |
|
||||||
|
| `sub_domains[].task_id_range` | Non-overlapping TASK ID range |
|
||||||
|
| `sub_domains[].estimated_effort` | Effort estimate |
|
||||||
|
| `sub_domains[].dependencies` | Cross-domain dependencies |
|
||||||
|
| `total_domains` | Number of domains identified |
|
||||||
|
|
||||||
|
**Success Criteria**:
|
||||||
|
- 2-5 clear sub-domains identified
|
||||||
|
- Each sub-domain can be planned independently
|
||||||
|
- Plan Note template includes all pre-allocated sections
|
||||||
|
- TASK ID ranges have no overlap (100 IDs per domain)
|
||||||
|
- Requirements understanding is comprehensive
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 需求理解
|
## Phase 2: Sequential Sub-Domain Planning
|
||||||
|
|
||||||
### 核心目标
|
**Objective**: Process each sub-domain serially via CLI analysis, generating detailed plans and updating plan-note.md.
|
||||||
${extractObjectives("$TASK")}
|
|
||||||
|
|
||||||
### 关键要点
|
**Execution Model**: Serial processing - plan each domain completely before moving to the next. Later domains can reference earlier planning results.
|
||||||
${extractKeyPoints("$TASK")}
|
|
||||||
|
|
||||||
### 约束条件
|
### Step 2.1: Domain Planning Loop
|
||||||
${extractConstraints("$TASK")}
|
|
||||||
|
|
||||||
### 拆分策略
|
For each sub-domain in sequence:
|
||||||
${subDomains.length} 个子领域:
|
1. Execute Gemini CLI analysis for the current domain
|
||||||
${subDomains.map((d, i) => `${i+1}. **${d.name}**: ${d.description}`).join('\n')}
|
2. Parse CLI output into structured plan
|
||||||
|
3. Save detailed plan as `agents/{domain}/plan.json`
|
||||||
|
4. Update plan-note.md with task summaries and evidence
|
||||||
|
|
||||||
|
**Planning Guideline**: Wait for each domain's CLI analysis to complete before proceeding to the next.
|
||||||
|
|
||||||
|
### Step 2.2: CLI Planning for Each Domain
|
||||||
|
|
||||||
|
Execute synchronous CLI analysis to generate a detailed implementation plan.
|
||||||
|
|
||||||
|
**CLI Analysis Scope**:
|
||||||
|
- **PURPOSE**: Generate detailed implementation plan for the specific domain
|
||||||
|
- **CONTEXT**: Domain description, related codebase files, prior domain results
|
||||||
|
- **TASK**: Analyze domain, identify all necessary tasks, define dependencies, estimate effort
|
||||||
|
- **EXPECTED**: JSON output with tasks, summaries, interdependencies, total effort
|
||||||
|
|
||||||
|
**Analysis Output Should Include**:
|
||||||
|
- Task breakdown with IDs from the assigned range
|
||||||
|
- Dependencies within and across domains
|
||||||
|
- Files to modify with specific locations
|
||||||
|
- Effort and complexity estimates per task
|
||||||
|
- Conflict risk assessment for each task
|
||||||
|
|
||||||
|
### Step 2.3: Update plan-note.md After Each Domain
|
||||||
|
|
||||||
|
Parse CLI output and update the plan-note.md sections for the current domain.
|
||||||
|
|
||||||
|
**Task Summary Format** (for "任务池" section):
|
||||||
|
- Task header: `### TASK-{ID}: {Title} [{domain}]`
|
||||||
|
- Fields: 状态 (status), 复杂度 (complexity), 依赖 (dependencies), 范围 (scope)
|
||||||
|
- Modification points: File paths with line ranges and change summaries
|
||||||
|
- Conflict risk assessment: Low/Medium/High
|
||||||
|
|
||||||
|
**Evidence Format** (for "上下文证据" section):
|
||||||
|
- Related files with relevance descriptions
|
||||||
|
- Existing patterns identified in codebase
|
||||||
|
- Constraints discovered during analysis
|
||||||
|
|
||||||
|
**Success Criteria**:
|
||||||
|
- All domains processed sequentially
|
||||||
|
- `agents/{domain}/plan.json` created for each domain
|
||||||
|
- `plan-note.md` updated with all task pools and evidence sections
|
||||||
|
- Task summaries follow consistent format
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 任务池 - ${subDomains[0].name}
|
## Phase 3: Conflict Detection
|
||||||
*(TASK-001 ~ TASK-100)*
|
|
||||||
|
|
||||||
*待由规划流程填充*
|
**Objective**: Analyze plan-note.md for conflicts across all domain contributions.
|
||||||
|
|
||||||
|
### Step 3.1: Parse plan-note.md
|
||||||
|
|
||||||
|
Extract all tasks from all "任务池" sections.
|
||||||
|
|
||||||
|
**Extraction Activities**:
|
||||||
|
1. Read plan-note.md content
|
||||||
|
2. Parse YAML frontmatter for session metadata
|
||||||
|
3. Identify all "任务池" sections by heading pattern
|
||||||
|
4. Extract tasks matching pattern: `### TASK-{ID}: {Title} [{domain}]`
|
||||||
|
5. Parse task details: status, complexity, dependencies, modification points, conflict risk
|
||||||
|
6. Consolidate into unified task list
|
||||||
|
|
||||||
|
### Step 3.2: Detect Conflicts
|
||||||
|
|
||||||
|
Scan all tasks for three categories of conflicts.
|
||||||
|
|
||||||
|
**Conflict Types**:
|
||||||
|
|
||||||
|
| Type | Severity | Detection Logic | Resolution |
|
||||||
|
|------|----------|-----------------|------------|
|
||||||
|
| file_conflict | high | Same file:location modified by multiple domains | Coordinate modification order or merge changes |
|
||||||
|
| dependency_cycle | critical | Circular dependencies in task graph (DFS detection) | Remove or reorganize dependencies |
|
||||||
|
| strategy_conflict | medium | Multiple high-risk tasks in same file from different domains | Review approaches and align on single strategy |
|
||||||
|
|
||||||
|
**Detection Activities**:
|
||||||
|
1. **File Conflicts**: Group modification points by file:location, identify locations modified by multiple domains
|
||||||
|
2. **Dependency Cycles**: Build dependency graph from task dependencies, detect cycles using depth-first search
|
||||||
|
3. **Strategy Conflicts**: Group tasks by files they modify, identify files with high-risk tasks from multiple domains
|
||||||
|
|
||||||
|
### Step 3.3: Generate Conflict Artifacts
|
||||||
|
|
||||||
|
Write conflict results and update plan-note.md.
|
||||||
|
|
||||||
|
**conflicts.json Structure**:
|
||||||
|
- `detected_at`: Detection timestamp
|
||||||
|
- `total_conflicts`: Number of conflicts found
|
||||||
|
- `conflicts[]`: Array of conflict objects with type, severity, tasks involved, description, suggested resolution
|
||||||
|
|
||||||
|
**plan-note.md Update**: Locate "冲突标记" section and populate with conflict summary markdown. If no conflicts found, mark as "✅ 无冲突检测到".
|
||||||
|
|
||||||
|
**Success Criteria**:
|
||||||
|
- All tasks extracted and analyzed
|
||||||
|
- `conflicts.json` written with detection results
|
||||||
|
- `plan-note.md` updated with conflict markers
|
||||||
|
- All conflict types checked (file, dependency, strategy)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 任务池 - ${subDomains[1].name}
|
## Phase 4: Completion
|
||||||
*(TASK-101 ~ TASK-200)*
|
|
||||||
|
|
||||||
*待由规划流程填充*
|
**Objective**: Generate human-readable plan summary and finalize workflow.
|
||||||
|
|
||||||
---
|
### Step 4.1: Generate plan.md
|
||||||
|
|
||||||
## 依赖关系
|
Create a human-readable summary from plan-note.md content.
|
||||||
|
|
||||||
*所有子域规划完成后自动生成*
|
**plan.md Structure**:
|
||||||
|
|
||||||
---
|
| Section | Content |
|
||||||
|
|---------|---------|
|
||||||
|
| Header | Session ID, task description, creation time |
|
||||||
|
| 需求 (Requirements) | Copied from plan-note.md "需求理解" section |
|
||||||
|
| 子领域拆分 (Sub-Domains) | Each domain with description, task range, estimated effort |
|
||||||
|
| 任务概览 (Task Overview) | All tasks with complexity, dependencies, and target files |
|
||||||
|
| 冲突报告 (Conflict Report) | Summary of detected conflicts or "无冲突" |
|
||||||
|
| 执行指令 (Execution) | Command to execute the plan |
|
||||||
|
|
||||||
## 冲突标记
|
### Step 4.2: Display Completion Summary
|
||||||
|
|
||||||
*冲突检测阶段生成*
|
Present session statistics and next steps.
|
||||||
|
|
||||||
---
|
**Summary Content**:
|
||||||
|
- Session ID and directory path
|
||||||
|
- Total domains planned
|
||||||
|
- Total tasks generated
|
||||||
|
- Conflict status
|
||||||
|
- Execution command for next step
|
||||||
|
|
||||||
## 上下文证据 - ${subDomains[0].name}
|
**Success Criteria**:
|
||||||
|
- `plan.md` generated with complete summary
|
||||||
*相关文件、现有模式、约束等*
|
- All artifacts present in session directory
|
||||||
|
- User informed of completion and next steps
|
||||||
---
|
|
||||||
|
|
||||||
## 上下文证据 - ${subDomains[1].name}
|
|
||||||
|
|
||||||
*相关文件、现有模式、约束等*
|
|
||||||
|
|
||||||
---
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 1.3: Generate requirement-analysis.json
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const requirements = {
|
|
||||||
session_id: sessionId,
|
|
||||||
original_requirement: "$TASK",
|
|
||||||
complexity: complexity,
|
|
||||||
sub_domains: subDomains.map((domain, index) => ({
|
|
||||||
focus_area: domain.name,
|
|
||||||
description: domain.description,
|
|
||||||
task_id_range: [index * 100 + 1, (index + 1) * 100],
|
|
||||||
estimated_effort: domain.effort,
|
|
||||||
dependencies: domain.dependencies || []
|
|
||||||
})),
|
|
||||||
total_domains: subDomains.length
|
|
||||||
}
|
|
||||||
|
|
||||||
Write(requirementsPath, JSON.stringify(requirements, null, 2))
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Phase 2: Sequential Sub-Domain Planning
|
|
||||||
|
|
||||||
#### Step 2.1: Plan Each Domain Sequentially
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
for (let i = 0; i < subDomains.length; i++) {
|
|
||||||
const domain = subDomains[i]
|
|
||||||
const domainFolder = `${sessionFolder}/agents/${domain.slug}`
|
|
||||||
const domainPlanPath = `${domainFolder}/plan.json`
|
|
||||||
|
|
||||||
console.log(`Planning Domain ${i+1}/${subDomains.length}: ${domain.name}`)
|
|
||||||
|
|
||||||
// Execute Gemini CLI for this domain
|
|
||||||
// ⏳ Wait for completion before proceeding to next domain
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 2.2: CLI Planning for Current Domain
|
|
||||||
|
|
||||||
**CLI Call** (synchronous):
|
|
||||||
```bash
|
|
||||||
ccw cli -p "
|
|
||||||
PURPOSE: Generate detailed implementation plan for domain '${domain.name}' in task: $TASK
|
|
||||||
Success: Comprehensive task breakdown with clear dependencies and effort estimates
|
|
||||||
|
|
||||||
DOMAIN CONTEXT:
|
|
||||||
- Focus Area: ${domain.name}
|
|
||||||
- Description: ${domain.description}
|
|
||||||
- Task ID Range: ${domain.task_id_range[0]}-${domain.task_id_range[1]}
|
|
||||||
- Related Domains: ${relatedDomains.join(', ')}
|
|
||||||
|
|
||||||
PRIOR DOMAINS (if any):
|
|
||||||
${completedDomains.map(d => `- ${d.name}: ${completedTaskCount} tasks`).join('\n')}
|
|
||||||
|
|
||||||
TASK:
|
|
||||||
• Analyze ${domain.name} in detail
|
|
||||||
• Identify all necessary tasks (use TASK-ID range: ${domain.task_id_range[0]}-${domain.task_id_range[1]})
|
|
||||||
• Define task dependencies and order
|
|
||||||
• Estimate effort and complexity for each task
|
|
||||||
• Identify file modifications needed
|
|
||||||
• Assess conflict risks with other domains
|
|
||||||
|
|
||||||
MODE: analysis
|
|
||||||
|
|
||||||
CONTEXT: @**/*
|
|
||||||
|
|
||||||
EXPECTED:
|
|
||||||
JSON output with:
|
|
||||||
- tasks[]: {id, title, description, complexity, depends_on[], files_to_modify[], conflict_risk}
|
|
||||||
- summary: Overview of domain plan
|
|
||||||
- interdependencies: Links to other domains
|
|
||||||
- total_effort: Estimated effort points
|
|
||||||
|
|
||||||
OUTPUT FORMAT: Structured JSON
|
|
||||||
" --tool gemini --mode analysis
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 2.3: Parse and Update plan-note.md
|
|
||||||
|
|
||||||
After CLI completes for each domain:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
// Parse CLI output
|
|
||||||
const planJson = parseCLIOutput(cliResult)
|
|
||||||
|
|
||||||
// Save detailed plan
|
|
||||||
Write(domainPlanPath, JSON.stringify(planJson, null, 2))
|
|
||||||
|
|
||||||
// Extract task summary
|
|
||||||
const taskSummary = planJson.tasks.map((t, idx) => `
|
|
||||||
### TASK-${t.id}: ${t.title} [${domain.slug}]
|
|
||||||
|
|
||||||
**状态**: 规划中
|
|
||||||
**复杂度**: ${t.complexity}
|
|
||||||
**依赖**: ${t.depends_on.length > 0 ? t.depends_on.map(d => `TASK-${d}`).join(', ') : 'None'}
|
|
||||||
**范围**: ${t.description}
|
|
||||||
|
|
||||||
**修改点**:
|
|
||||||
${t.files_to_modify.map(f => `- \`${f.path}:${f.line_range}\`: ${f.summary}`).join('\n')}
|
|
||||||
|
|
||||||
**冲突风险**: ${t.conflict_risk}
|
|
||||||
`).join('\n')
|
|
||||||
|
|
||||||
// Update plan-note.md
|
|
||||||
updatePlanNoteSection(
|
|
||||||
planNotePath,
|
|
||||||
`## 任务池 - ${domain.name}`,
|
|
||||||
taskSummary
|
|
||||||
)
|
|
||||||
|
|
||||||
// Extract evidence
|
|
||||||
const evidence = `
|
|
||||||
**相关文件**:
|
|
||||||
${planJson.related_files.map(f => `- ${f.path}: ${f.relevance}`).join('\n')}
|
|
||||||
|
|
||||||
**现有模式**:
|
|
||||||
${planJson.existing_patterns.map(p => `- ${p}`).join('\n')}
|
|
||||||
|
|
||||||
**约束**:
|
|
||||||
${planJson.constraints.map(c => `- ${c}`).join('\n')}
|
|
||||||
`
|
|
||||||
|
|
||||||
updatePlanNoteSection(
|
|
||||||
planNotePath,
|
|
||||||
`## 上下文证据 - ${domain.name}`,
|
|
||||||
evidence
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 2.4: Process All Domains
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const completedDomains = []
|
|
||||||
|
|
||||||
for (const domain of subDomains) {
|
|
||||||
// Step 2.2: CLI call (synchronous)
|
|
||||||
const cliResult = executeCLI(domain)
|
|
||||||
|
|
||||||
// Step 2.3: Parse and update
|
|
||||||
updatePlanNoteFromCLI(domain, cliResult)
|
|
||||||
|
|
||||||
completedDomains.push(domain)
|
|
||||||
console.log(`✅ Completed: ${domain.name}`)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Phase 3: Conflict Detection
|
|
||||||
|
|
||||||
#### Step 3.1: Parse plan-note.md
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const planContent = Read(planNotePath)
|
|
||||||
const sections = parsePlanNoteSections(planContent)
|
|
||||||
const allTasks = []
|
|
||||||
|
|
||||||
// Extract tasks from all domains
|
|
||||||
for (const section of sections) {
|
|
||||||
if (section.heading.includes('任务池')) {
|
|
||||||
const tasks = extractTasks(section.content)
|
|
||||||
allTasks.push(...tasks)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 3.2: Detect Conflicts
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const conflicts = []
|
|
||||||
|
|
||||||
// 1. File conflicts
|
|
||||||
const fileMap = new Map()
|
|
||||||
for (const task of allTasks) {
|
|
||||||
for (const file of task.files_to_modify) {
|
|
||||||
const key = `${file.path}:${file.line_range}`
|
|
||||||
if (!fileMap.has(key)) fileMap.set(key, [])
|
|
||||||
fileMap.get(key).push(task)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const [location, tasks] of fileMap.entries()) {
|
|
||||||
if (tasks.length > 1) {
|
|
||||||
const agents = new Set(tasks.map(t => t.domain))
|
|
||||||
if (agents.size > 1) {
|
|
||||||
conflicts.push({
|
|
||||||
type: 'file_conflict',
|
|
||||||
severity: 'high',
|
|
||||||
location: location,
|
|
||||||
tasks_involved: tasks.map(t => t.id),
|
|
||||||
agents_involved: Array.from(agents),
|
|
||||||
description: `Multiple domains modifying: ${location}`,
|
|
||||||
suggested_resolution: 'Coordinate modification order'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Dependency cycles
|
|
||||||
const depGraph = buildDependencyGraph(allTasks)
|
|
||||||
const cycles = detectCycles(depGraph)
|
|
||||||
for (const cycle of cycles) {
|
|
||||||
conflicts.push({
|
|
||||||
type: 'dependency_cycle',
|
|
||||||
severity: 'critical',
|
|
||||||
tasks_involved: cycle,
|
|
||||||
description: `Circular dependency: ${cycle.join(' → ')}`,
|
|
||||||
suggested_resolution: 'Remove or reorganize dependencies'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write conflicts.json
|
|
||||||
Write(conflictsPath, JSON.stringify({
|
|
||||||
detected_at: getUtc8ISOString(),
|
|
||||||
total_conflicts: conflicts.length,
|
|
||||||
conflicts: conflicts
|
|
||||||
}, null, 2))
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 3.3: Update plan-note.md
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const conflictMarkdown = generateConflictMarkdown(conflicts)
|
|
||||||
|
|
||||||
updatePlanNoteSection(
|
|
||||||
planNotePath,
|
|
||||||
'## 冲突标记',
|
|
||||||
conflictMarkdown
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Phase 4: Completion
|
|
||||||
|
|
||||||
#### Step 4.1: Generate plan.md
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
# 实现计划
|
|
||||||
|
|
||||||
**Session**: ${sessionId}
|
|
||||||
**任务**: $TASK
|
|
||||||
**创建**: ${getUtc8ISOString()}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 需求
|
|
||||||
|
|
||||||
${copySection(planNotePath, '## 需求理解')}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 子领域拆分
|
|
||||||
|
|
||||||
${subDomains.map((domain, i) => `
|
|
||||||
### ${i+1}. ${domain.name}
|
|
||||||
- **描述**: ${domain.description}
|
|
||||||
- **任务范围**: TASK-${domain.task_id_range[0]} ~ TASK-${domain.task_id_range[1]}
|
|
||||||
- **预估工作量**: ${domain.effort}
|
|
||||||
`).join('\n')}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 任务概览
|
|
||||||
|
|
||||||
${allTasks.map(t => `
|
|
||||||
### ${t.id}: ${t.title}
|
|
||||||
- **复杂度**: ${t.complexity}
|
|
||||||
- **依赖**: ${t.depends_on.length > 0 ? t.depends_on.join(', ') : 'None'}
|
|
||||||
- **文件**: ${t.files_to_modify.map(f => f.path).join(', ')}
|
|
||||||
`).join('\n')}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 冲突报告
|
|
||||||
|
|
||||||
${conflicts.length > 0
|
|
||||||
? `检测到 ${conflicts.length} 个冲突:\n${copySection(planNotePath, '## 冲突标记')}`
|
|
||||||
: '✅ 无冲突检测到'}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 执行指令
|
|
||||||
|
|
||||||
\`\`\`bash
|
|
||||||
/workflow:unified-execute-with-file ${planPath}
|
|
||||||
\`\`\`
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 4.2: Write Summary
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
Write(planPath, planMarkdown)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
### Sub-Domain Identification
|
| Parameter | Default | Description |
|
||||||
|
|-----------|---------|-------------|
|
||||||
Common domain patterns:
|
| `--max-domains` | 5 | Maximum sub-domains to identify |
|
||||||
- Backend API: "服务", "后端", "API", "接口"
|
| `--focus` | None | Focus specific domain (optional) |
|
||||||
- Frontend: "界面", "前端", "UI", "视图"
|
|
||||||
- Database: "数据", "存储", "数据库", "持久化"
|
|
||||||
- Testing: "测试", "验证", "QA"
|
|
||||||
- Infrastructure: "部署", "基础", "运维", "配置"
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Error Handling
|
## Error Handling & Recovery
|
||||||
|
|
||||||
| Error | Resolution |
|
| Situation | Action | Recovery |
|
||||||
|-------|------------|
|
|-----------|--------|----------|
|
||||||
| CLI timeout | Retry with shorter prompt |
|
| CLI timeout | Retry with shorter, focused prompt | Skip domain or reduce scope |
|
||||||
| No tasks generated | Review domain description, retry |
|
| No tasks generated | Review domain description | Retry with refined description |
|
||||||
| Section not found | Recreate section in plan-note.md |
|
| Section not found in plan-note | Recreate section defensively | Continue with new section |
|
||||||
| Conflict detection fails | Continue with empty conflicts |
|
| Conflict detection fails | Continue with empty conflicts | Note in completion summary |
|
||||||
|
| Session folder conflict | Append timestamp suffix | Create unique folder |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Iteration Patterns
|
||||||
|
|
||||||
|
### New Planning Session
|
||||||
|
|
||||||
|
```
|
||||||
|
User initiates: TASK="task description"
|
||||||
|
├─ No session exists → New session mode
|
||||||
|
├─ Analyze task and identify sub-domains
|
||||||
|
├─ Create plan-note.md template
|
||||||
|
├─ Generate requirement-analysis.json
|
||||||
|
├─ Process each domain serially:
|
||||||
|
│ ├─ CLI analysis → plan.json
|
||||||
|
│ └─ Update plan-note.md sections
|
||||||
|
├─ Detect conflicts
|
||||||
|
├─ Generate plan.md summary
|
||||||
|
└─ Report completion
|
||||||
|
```
|
||||||
|
|
||||||
|
### Continue Existing Session
|
||||||
|
|
||||||
|
```
|
||||||
|
User resumes: TASK="same task"
|
||||||
|
├─ Session exists → Continue mode
|
||||||
|
├─ Load plan-note.md and requirement-analysis.json
|
||||||
|
├─ Resume from first incomplete domain
|
||||||
|
└─ Continue sequential processing
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
|
|
||||||
1. **Clear Task Description**: Detailed requirements → better sub-domains
|
### Before Starting Planning
|
||||||
2. **Review plan-note.md**: Check before moving to next phase
|
|
||||||
3. **Resolve Conflicts**: Address before execution
|
1. **Clear Task Description**: Detailed requirements lead to better sub-domain splitting
|
||||||
4. **Inspect Details**: Review agents/{domain}/plan.json for specifics
|
2. **Reference Documentation**: Ensure latest README and design docs are identified
|
||||||
|
3. **Clarify Ambiguities**: Resolve unclear requirements before committing to sub-domains
|
||||||
|
|
||||||
|
### During Planning
|
||||||
|
|
||||||
|
1. **Review Plan Note**: Check plan-note.md between phases to verify progress
|
||||||
|
2. **Verify Domains**: Ensure sub-domains are truly independent and parallelizable
|
||||||
|
3. **Check Dependencies**: Cross-domain dependencies should be documented explicitly
|
||||||
|
4. **Inspect Details**: Review `agents/{domain}/plan.json` for specifics when needed
|
||||||
|
|
||||||
|
### After Planning
|
||||||
|
|
||||||
|
1. **Resolve Conflicts**: Address high/critical conflicts before execution
|
||||||
|
2. **Review Summary**: Check plan.md for completeness and accuracy
|
||||||
|
3. **Validate Tasks**: Ensure all tasks have clear scope and modification targets
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## When to Use This Workflow
|
||||||
|
|
||||||
|
### Use collaborative-plan-with-file when:
|
||||||
|
- Complex tasks requiring multi-domain decomposition
|
||||||
|
- Need structured planning with conflict detection
|
||||||
|
- Tasks spanning multiple modules or systems
|
||||||
|
- Want documented planning process for team review
|
||||||
|
- Preparing for multi-step execution workflows
|
||||||
|
|
||||||
|
### Use direct execution when:
|
||||||
|
- Simple, single-domain tasks
|
||||||
|
- Clear implementation path without ambiguity
|
||||||
|
- Quick follow-up to existing planning session
|
||||||
|
|
||||||
|
### Consider alternatives when:
|
||||||
|
- Exploring ideas without clear direction → use `workflow:brainstorm-with-file`
|
||||||
|
- Analyzing existing code/system → use `workflow:analyze-with-file`
|
||||||
|
- Lightweight planning for simple features → use `workflow:lite-plan`
|
||||||
|
- Ready to execute existing plan → use `workflow:unified-execute-with-file`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -3,503 +3,490 @@ description: Universal execution engine for consuming planning/brainstorm/analys
|
|||||||
argument-hint: "PLAN=\"<path>\" [--auto-commit] [--dry-run]"
|
argument-hint: "PLAN=\"<path>\" [--auto-commit] [--dry-run]"
|
||||||
---
|
---
|
||||||
|
|
||||||
# Codex Unified-Execute-With-File Prompt
|
# Codex Unified-Execute-With-File Workflow
|
||||||
|
|
||||||
## Overview
|
## Quick Start
|
||||||
|
|
||||||
Universal execution engine consuming **any** planning output and executing tasks serially with progress tracking.
|
Universal execution engine consuming **any** planning output and executing tasks serially with progress tracking.
|
||||||
|
|
||||||
**Core workflow**: Load Plan → Parse Tasks → Execute Sequentially → Track Progress → Verify
|
**Core workflow**: Load Plan → Parse Tasks → Validate → Execute Sequentially → Track Progress → Verify
|
||||||
|
|
||||||
## Target Plan
|
**Key features**:
|
||||||
|
- **Format-agnostic**: Supports plan.json, plan-note.md, synthesis.json, conclusions.json
|
||||||
|
- **Serial execution**: Process tasks sequentially with dependency ordering
|
||||||
|
- **Progress tracking**: execution.md overview + execution-events.md detailed log
|
||||||
|
- **Auto-commit**: Optional conventional commits after each task
|
||||||
|
- **Dry-run mode**: Simulate execution without making changes
|
||||||
|
|
||||||
**$PLAN**
|
## Overview
|
||||||
|
|
||||||
**Parameters**:
|
This workflow enables reliable task execution through sequential phases:
|
||||||
- `--auto-commit`: Auto-commit after each task (conventional commits)
|
|
||||||
- `--dry-run`: Simulate execution without making changes
|
|
||||||
|
|
||||||
## Execution Process
|
1. **Plan Detection & Parsing** - Load and parse planning output in any format
|
||||||
|
2. **Pre-Execution Analysis** - Validate feasibility and identify potential issues
|
||||||
|
3. **Serial Task Execution** - Execute tasks one by one with dependency ordering
|
||||||
|
4. **Progress Tracking** - Update execution logs with results and discoveries
|
||||||
|
5. **Completion** - Generate summary and offer follow-up actions
|
||||||
|
|
||||||
```
|
The key innovation is the **unified event log** that serves as both human-readable progress tracker and machine-parseable state store.
|
||||||
Session Initialization:
|
|
||||||
├─ Detect or load plan file
|
|
||||||
├─ Parse tasks from plan (JSON, Markdown, or other formats)
|
|
||||||
├─ Build task dependency graph
|
|
||||||
└─ Validate for cycles and feasibility
|
|
||||||
|
|
||||||
Pre-Execution:
|
|
||||||
├─ Analyze plan structure
|
|
||||||
├─ Identify modification targets (files)
|
|
||||||
├─ Check file conflicts and feasibility
|
|
||||||
└─ Generate execution strategy
|
|
||||||
|
|
||||||
Serial Execution (Task by Task):
|
|
||||||
├─ For each task:
|
|
||||||
│ ├─ Extract task context
|
|
||||||
│ ├─ Load previous task outputs
|
|
||||||
│ ├─ Route to Codex CLI for execution
|
|
||||||
│ ├─ Track progress in execution.md
|
|
||||||
│ ├─ Auto-commit if enabled
|
|
||||||
│ └─ Next task
|
|
||||||
└─ Complete all tasks
|
|
||||||
|
|
||||||
Post-Execution:
|
|
||||||
├─ Generate execution summary
|
|
||||||
├─ Record completion status
|
|
||||||
├─ Identify any failures
|
|
||||||
└─ Suggest next steps
|
|
||||||
|
|
||||||
Output:
|
|
||||||
├─ .workflow/.execution/{session-id}/execution.md (overview + timeline)
|
|
||||||
├─ .workflow/.execution/{session-id}/execution-events.md (detailed log)
|
|
||||||
└─ Git commits (if --auto-commit enabled)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Output Structure
|
## Output Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
.workflow/.execution/EXEC-{slug}-{date}/
|
.workflow/.execution/EXEC-{slug}-{date}-{random}/
|
||||||
├── execution.md # Plan overview + task table + timeline
|
├── execution.md # Plan overview + task table + timeline
|
||||||
└── execution-events.md # ⭐ Unified log (all executions) - SINGLE SOURCE OF TRUTH
|
└── execution-events.md # ⭐ Unified log (all executions) - SINGLE SOURCE OF TRUTH
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Output Artifacts
|
||||||
|
|
||||||
|
### Phase 1: Session Initialization
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `execution.md` | Overview of plan source, task table, execution timeline |
|
||||||
|
| Session folder | `.workflow/.execution/{sessionId}/` |
|
||||||
|
|
||||||
|
### Phase 2: Pre-Execution Analysis
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `execution.md` (updated) | Feasibility assessment and validation results |
|
||||||
|
|
||||||
|
### Phase 3-4: Serial Execution & Progress
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| `execution-events.md` | Unified log: all task executions with results |
|
||||||
|
| `execution.md` (updated) | Real-time progress updates and task status |
|
||||||
|
|
||||||
|
### Phase 5: Completion
|
||||||
|
|
||||||
|
| Artifact | Purpose |
|
||||||
|
|----------|---------|
|
||||||
|
| Final `execution.md` | Complete execution summary and statistics |
|
||||||
|
| Final `execution-events.md` | Complete execution history |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Implementation Details
|
## Implementation Details
|
||||||
|
|
||||||
### Session Setup
|
### Session Initialization
|
||||||
|
|
||||||
```javascript
|
The workflow creates a unique session for tracking execution.
|
||||||
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
||||||
|
|
||||||
// Resolve plan path
|
**Session ID Format**: `EXEC-{slug}-{date}-{random}`
|
||||||
let planPath = "$PLAN"
|
- `slug`: Plan filename without extension, lowercased, max 30 chars
|
||||||
if (!fs.existsSync(planPath)) {
|
- `date`: YYYY-MM-DD format (UTC+8)
|
||||||
// Auto-detect from common locations
|
- `random`: 7-char random suffix for uniqueness
|
||||||
const candidates = [
|
|
||||||
'.workflow/IMPL_PLAN.md',
|
|
||||||
'.workflow/.planning/*/plan-note.md',
|
|
||||||
'.workflow/.brainstorm/*/synthesis.json',
|
|
||||||
'.workflow/.analysis/*/conclusions.json'
|
|
||||||
]
|
|
||||||
planPath = autoDetectPlan(candidates)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create session
|
**Session Directory**: `.workflow/.execution/{sessionId}/`
|
||||||
const planSlug = path.basename(planPath).replace(/[^a-z0-9-]/g, '').substring(0, 30)
|
|
||||||
const dateStr = getUtc8ISOString().substring(0, 10)
|
|
||||||
const randomId = Math.random().toString(36).substring(7)
|
|
||||||
const sessionId = `EXEC-${planSlug}-${dateStr}-${randomId}`
|
|
||||||
|
|
||||||
const sessionFolder = `.workflow/.execution/${sessionId}`
|
**Plan Path Resolution**:
|
||||||
const executionPath = `${sessionFolder}/execution.md`
|
1. If `$PLAN` provided explicitly, use it
|
||||||
const eventsPath = `${sessionFolder}/execution-events.md`
|
2. Otherwise, auto-detect from common locations:
|
||||||
|
- `.workflow/IMPL_PLAN.md`
|
||||||
|
- `.workflow/.planning/*/plan-note.md`
|
||||||
|
- `.workflow/.brainstorm/*/synthesis.json`
|
||||||
|
- `.workflow/.analysis/*/conclusions.json`
|
||||||
|
|
||||||
bash(`mkdir -p ${sessionFolder}`)
|
**Session Variables**:
|
||||||
```
|
- `sessionId`: Unique session identifier
|
||||||
|
- `sessionFolder`: Base directory for artifacts
|
||||||
|
- `planPath`: Resolved path to plan file
|
||||||
|
- `autoCommit`: Boolean flag for auto-commit mode
|
||||||
|
- `dryRun`: Boolean flag for dry-run mode
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Phase 1: Plan Detection & Parsing
|
## Phase 1: Plan Detection & Parsing
|
||||||
|
|
||||||
#### Step 1.1: Load Plan File
|
**Objective**: Load plan file, parse tasks, build execution order, and validate for cycles.
|
||||||
|
|
||||||
```javascript
|
### Step 1.1: Load Plan File
|
||||||
// Detect plan format and parse
|
|
||||||
let tasks = []
|
|
||||||
|
|
||||||
if (planPath.endsWith('.json')) {
|
Detect plan format and parse based on file extension.
|
||||||
// JSON plan (from lite-plan, collaborative-plan, etc.)
|
|
||||||
const planJson = JSON.parse(Read(planPath))
|
|
||||||
tasks = parsePlanJson(planJson)
|
|
||||||
} else if (planPath.endsWith('.md')) {
|
|
||||||
// Markdown plan (IMPL_PLAN.md, plan-note.md, etc.)
|
|
||||||
const planMd = Read(planPath)
|
|
||||||
tasks = parsePlanMarkdown(planMd)
|
|
||||||
} else if (planPath.endsWith('synthesis.json')) {
|
|
||||||
// Brainstorm synthesis
|
|
||||||
const synthesis = JSON.parse(Read(planPath))
|
|
||||||
tasks = convertSynthesisToTasks(synthesis)
|
|
||||||
} else if (planPath.endsWith('conclusions.json')) {
|
|
||||||
// Analysis conclusions
|
|
||||||
const conclusions = JSON.parse(Read(planPath))
|
|
||||||
tasks = convertConclusionsToTasks(conclusions)
|
|
||||||
} else {
|
|
||||||
throw new Error(`Unsupported plan format: ${planPath}`)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 1.2: Build Execution Order
|
**Supported Formats**:
|
||||||
|
|
||||||
```javascript
|
| Format | Source | Parser |
|
||||||
// Handle task dependencies
|
|--------|--------|--------|
|
||||||
const depGraph = buildDependencyGraph(tasks)
|
| plan.json | lite-plan, collaborative-plan | parsePlanJson() |
|
||||||
|
| plan-note.md | collaborative-plan | parsePlanMarkdown() |
|
||||||
|
| synthesis.json | brainstorm session | convertSynthesisToTasks() |
|
||||||
|
| conclusions.json | analysis session | convertConclusionsToTasks() |
|
||||||
|
|
||||||
// Validate: no cycles
|
**Parsing Activities**:
|
||||||
validateNoCycles(depGraph)
|
1. Read plan file content
|
||||||
|
2. Detect format from filename or content structure
|
||||||
|
3. Route to appropriate parser
|
||||||
|
4. Extract tasks with required fields: id, title, description, files_to_modify, depends_on
|
||||||
|
|
||||||
// Calculate execution order (simple topological sort)
|
### Step 1.2: Build Execution Order
|
||||||
const executionOrder = topologicalSort(depGraph, tasks)
|
|
||||||
|
|
||||||
// In Codex: serial execution, no parallel waves
|
Analyze task dependencies and calculate execution sequence.
|
||||||
console.log(`Total tasks: ${tasks.length}`)
|
|
||||||
console.log(`Execution order: ${executionOrder.map(t => t.id).join(' → ')}`)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 1.3: Generate execution.md
|
**Execution Order Calculation**:
|
||||||
|
1. Build dependency graph from task dependencies
|
||||||
|
2. Validate for circular dependencies (no cycles allowed)
|
||||||
|
3. Calculate topological sort for sequential execution order
|
||||||
|
4. In Codex: serial mode means executing tasks one by one
|
||||||
|
|
||||||
```markdown
|
**Dependency Validation**:
|
||||||
# 执行计划
|
- Check that all referenced dependencies exist
|
||||||
|
- Detect cycles and report as critical error
|
||||||
|
- Order tasks based on dependencies
|
||||||
|
|
||||||
**Session**: ${sessionId}
|
### Step 1.3: Generate execution.md
|
||||||
**Plan Source**: ${planPath}
|
|
||||||
**Started**: ${getUtc8ISOString()}
|
Create the main execution tracking document.
|
||||||
|
|
||||||
|
**execution.md Structure**:
|
||||||
|
- **Header**: Session ID, plan source, execution timestamp
|
||||||
|
- **Plan Overview**: Summary from plan metadata
|
||||||
|
- **Task List**: Table with ID, title, complexity, dependencies, status
|
||||||
|
- **Execution Timeline**: To be updated as tasks complete
|
||||||
|
|
||||||
|
**Success Criteria**:
|
||||||
|
- execution.md created with complete plan overview
|
||||||
|
- Task list includes all tasks from plan
|
||||||
|
- Execution order calculated with no cycles
|
||||||
|
- Ready for feasibility analysis
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 计划概览
|
## Phase 2: Pre-Execution Analysis
|
||||||
|
|
||||||
| 字段 | 值 |
|
**Objective**: Validate feasibility and identify potential issues before starting execution.
|
||||||
|------|-----|
|
|
||||||
| 总任务数 | ${tasks.length} |
|
### Step 2.1: Analyze Plan Structure
|
||||||
| 计划来源 | ${planPath} |
|
|
||||||
| 执行模式 | ${dryRun ? '模拟' : '实际'} |
|
Examine task dependencies, file modifications, and potential conflicts.
|
||||||
| 自动提交 | ${autoCommit ? '启用' : '禁用'} |
|
|
||||||
|
**Analysis Activities**:
|
||||||
|
1. **Check file conflicts**: Identify files modified by multiple tasks
|
||||||
|
2. **Check missing dependencies**: Verify all referenced dependencies exist
|
||||||
|
3. **Check file existence**: Identify files that will be created vs modified
|
||||||
|
4. **Estimate complexity**: Assess overall execution complexity
|
||||||
|
|
||||||
|
**Issue Detection**:
|
||||||
|
- Sequential modifications to same file (document for ordered execution)
|
||||||
|
- Missing dependency targets
|
||||||
|
- High complexity patterns that may need special handling
|
||||||
|
|
||||||
|
### Step 2.2: Generate Feasibility Report
|
||||||
|
|
||||||
|
Document analysis results and recommendations.
|
||||||
|
|
||||||
|
**Feasibility Report Content**:
|
||||||
|
- Issues found (if any)
|
||||||
|
- File conflict warnings
|
||||||
|
- Dependency validation results
|
||||||
|
- Complexity assessment
|
||||||
|
- Recommended execution strategy
|
||||||
|
|
||||||
|
### Step 2.3: Update execution.md
|
||||||
|
|
||||||
|
Append feasibility analysis results.
|
||||||
|
|
||||||
|
**Success Criteria**:
|
||||||
|
- All validation checks completed
|
||||||
|
- Issues documented in execution.md
|
||||||
|
- No blocking issues found (or user confirmed to proceed)
|
||||||
|
- Ready for task execution
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 任务列表
|
## Phase 3: Serial Task Execution
|
||||||
|
|
||||||
| ID | 标题 | 复杂度 | 依赖 | 状态 |
|
**Objective**: Execute tasks one by one in dependency order, tracking progress and recording results.
|
||||||
|----|------|--------|-------|-------|
|
|
||||||
${tasks.map(t => `| ${t.id} | ${t.title} | ${t.complexity || 'medium'} | ${t.depends_on?.join(',') || '-'} | ⏳ |`).join('\n')}
|
|
||||||
|
|
||||||
---
|
**Execution Model**: Serial execution - process tasks sequentially, one at a time. Each task must complete before the next begins.
|
||||||
|
|
||||||
## 执行时间线
|
### Step 3.1: Execute Tasks Sequentially
|
||||||
|
|
||||||
*(更新于 execution-events.md)*
|
For each task in execution order:
|
||||||
|
1. Load context from previous task results
|
||||||
|
2. Route to Codex CLI for execution
|
||||||
|
3. Wait for completion
|
||||||
|
4. Record results in execution-events.md
|
||||||
|
5. Auto-commit if enabled
|
||||||
|
6. Move to next task
|
||||||
|
|
||||||
---
|
**Execution Loop**:
|
||||||
|
```
|
||||||
|
For each task in executionOrder:
|
||||||
|
├─ Extract task context
|
||||||
|
├─ Load previous task outputs
|
||||||
|
├─ Execute task via CLI (synchronous)
|
||||||
|
├─ Record result with timestamp
|
||||||
|
├─ Auto-commit if enabled
|
||||||
|
└─ Continue to next task
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
### Step 3.2: Execute Task via CLI
|
||||||
|
|
||||||
### Phase 2: Pre-Execution Analysis
|
Execute individual task using Codex CLI in synchronous mode.
|
||||||
|
|
||||||
#### Step 2.1: Feasibility Check
|
**CLI Execution Scope**:
|
||||||
|
- **PURPOSE**: Execute task from plan
|
||||||
|
- **TASK DETAILS**: ID, title, description, required changes
|
||||||
|
- **PRIOR CONTEXT**: Results from previous tasks
|
||||||
|
- **REQUIRED CHANGES**: Files to modify with specific locations
|
||||||
|
- **MODE**: write (modification mode)
|
||||||
|
- **EXPECTED**: Files modified as specified, no test failures
|
||||||
|
|
||||||
```javascript
|
**CLI Parameters**:
|
||||||
const issues = []
|
- `--tool codex`: Use Codex for execution
|
||||||
|
- `--mode write`: Allow file modifications
|
||||||
|
- Synchronous execution: Wait for completion
|
||||||
|
|
||||||
// Check file conflicts
|
### Step 3.3: Track Progress
|
||||||
const fileMap = new Map()
|
|
||||||
for (const task of tasks) {
|
|
||||||
for (const file of task.files_to_modify || []) {
|
|
||||||
if (!fileMap.has(file)) fileMap.set(file, [])
|
|
||||||
fileMap.get(file).push(task.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const [file, taskIds] of fileMap.entries()) {
|
Record task execution results in the unified event log.
|
||||||
if (taskIds.length > 1) {
|
|
||||||
// Sequential modification of same file
|
|
||||||
console.log(`⚠️ Sequential modification: ${file} (${taskIds.join(' → ')})`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check missing dependencies
|
**execution-events.md Structure**:
|
||||||
for (const task of tasks) {
|
- **Header**: Session metadata
|
||||||
for (const depId of task.depends_on || []) {
|
- **Event Timeline**: One entry per task with results
|
||||||
if (!tasks.find(t => t.id === depId)) {
|
- **Event Format**:
|
||||||
issues.push(`Task ${task.id} depends on missing ${depId}`)
|
- Task ID and title
|
||||||
}
|
- Timestamp and duration
|
||||||
}
|
- Status (completed/failed)
|
||||||
}
|
- Summary of changes
|
||||||
|
- Any notes or issues discovered
|
||||||
|
|
||||||
if (issues.length > 0) {
|
**Event Recording Activities**:
|
||||||
console.log(`⚠️ Issues found:\n${issues.map(i => `- ${i}`).join('\n')}`)
|
1. Capture execution timestamp
|
||||||
}
|
2. Record task status and duration
|
||||||
```
|
3. Document any modifications made
|
||||||
|
4. Note any issues or discoveries
|
||||||
|
5. Append event to execution-events.md
|
||||||
|
|
||||||
|
### Step 3.4: Auto-Commit (if enabled)
|
||||||
|
|
||||||
|
Commit task changes with conventional commit format.
|
||||||
|
|
||||||
|
**Auto-Commit Process**:
|
||||||
|
1. Get changed files from git status
|
||||||
|
2. Filter to task.files_to_modify
|
||||||
|
3. Stage files: `git add`
|
||||||
|
4. Generate commit message based on task type
|
||||||
|
5. Commit: `git commit -m`
|
||||||
|
|
||||||
|
**Commit Message Format**:
|
||||||
|
- Type: feat, fix, refactor, test, docs (inferred from task)
|
||||||
|
- Scope: file/module affected (inferred from files modified)
|
||||||
|
- Subject: Task title or description
|
||||||
|
- Footer: Task ID and plan reference
|
||||||
|
|
||||||
|
**Success Criteria**:
|
||||||
|
- All tasks executed sequentially
|
||||||
|
- Results recorded in execution-events.md
|
||||||
|
- Auto-commits created (if enabled)
|
||||||
|
- Failed tasks logged for review
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Phase 3: Serial Task Execution
|
## Phase 4: Completion
|
||||||
|
|
||||||
#### Step 3.1: Execute Tasks Sequentially
|
**Objective**: Summarize execution results and offer follow-up actions.
|
||||||
|
|
||||||
```javascript
|
### Step 4.1: Collect Statistics
|
||||||
const executionLog = []
|
|
||||||
const taskResults = new Map()
|
|
||||||
|
|
||||||
for (const task of executionOrder) {
|
Gather execution metrics.
|
||||||
console.log(`\n📋 Executing: ${task.id} - ${task.title}`)
|
|
||||||
|
|
||||||
const eventRecord = {
|
**Metrics Collection**:
|
||||||
timestamp: getUtc8ISOString(),
|
- Total tasks executed
|
||||||
task_id: task.id,
|
- Successfully completed count
|
||||||
task_title: task.title,
|
- Failed count
|
||||||
status: 'in_progress',
|
- Success rate percentage
|
||||||
notes: []
|
- Total duration
|
||||||
}
|
- Artifacts generated
|
||||||
|
|
||||||
try {
|
### Step 4.2: Generate Summary
|
||||||
// Load context from previous tasks
|
|
||||||
const priorOutputs = executionOrder
|
|
||||||
.slice(0, executionOrder.indexOf(task))
|
|
||||||
.map(t => taskResults.get(t.id))
|
|
||||||
.filter(Boolean)
|
|
||||||
|
|
||||||
const context = {
|
Update execution.md with final results.
|
||||||
task: task,
|
|
||||||
prior_outputs: priorOutputs,
|
|
||||||
plan_source: planPath
|
|
||||||
}
|
|
||||||
|
|
||||||
// Execute task via Codex CLI
|
**Summary Content**:
|
||||||
if (dryRun) {
|
- Execution completion timestamp
|
||||||
console.log(`[DRY RUN] ${task.id}`)
|
- Statistics table
|
||||||
eventRecord.status = 'completed'
|
- Task status table (completed/failed)
|
||||||
eventRecord.notes.push('Dry run - no changes made')
|
- Commit log (if auto-commit enabled)
|
||||||
} else {
|
- Any failed tasks requiring attention
|
||||||
await executeTaskViaCLI(task, context)
|
|
||||||
eventRecord.status = 'completed'
|
|
||||||
|
|
||||||
// Auto-commit if enabled
|
|
||||||
if (autoCommit) {
|
|
||||||
commitTask(task)
|
|
||||||
eventRecord.notes.push(`✅ Committed: ${task.id}`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (error) {
|
### Step 4.3: Display Completion Summary
|
||||||
eventRecord.status = 'failed'
|
|
||||||
eventRecord.error = error.message
|
|
||||||
eventRecord.notes.push(`❌ Error: ${error.message}`)
|
|
||||||
console.log(`❌ Failed: ${task.id}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
executionLog.push(eventRecord)
|
Present results to user.
|
||||||
updateExecutionEvents(eventsPath, executionLog)
|
|
||||||
updateExecutionMd(executionPath, task, eventRecord)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 3.2: Execute Task via CLI
|
**Summary Output**:
|
||||||
|
- Session ID and folder path
|
||||||
|
- Statistics (completed/failed/total)
|
||||||
|
- Failed tasks (if any)
|
||||||
|
- Execution log location
|
||||||
|
- Next step recommendations
|
||||||
|
|
||||||
**CLI Call** (synchronous):
|
**Success Criteria**:
|
||||||
```bash
|
- execution.md finalized with complete summary
|
||||||
ccw cli -p "
|
- execution-events.md contains all task records
|
||||||
PURPOSE: Execute task '${task.id}: ${task.title}' from plan
|
- User informed of completion status
|
||||||
Success: Task completed as specified in plan
|
- All artifacts successfully created
|
||||||
|
|
||||||
TASK DETAILS:
|
|
||||||
- ID: ${task.id}
|
|
||||||
- Title: ${task.title}
|
|
||||||
- Description: ${task.description}
|
|
||||||
- Complexity: ${task.complexity}
|
|
||||||
- Estimated Effort: ${task.effort}
|
|
||||||
|
|
||||||
REQUIRED CHANGES:
|
|
||||||
${task.files_to_modify?.map(f => `- \`${f.path}\`: ${f.summary}`).join('\n')}
|
|
||||||
|
|
||||||
PRIOR CONTEXT:
|
|
||||||
${priorOutputs.map(p => `- ${p.task_id}: ${p.notes.join('; ')}`).join('\n')}
|
|
||||||
|
|
||||||
TASK ACTIONS:
|
|
||||||
${task.actions?.map((a, i) => `${i+1}. ${a}`).join('\n')}
|
|
||||||
|
|
||||||
MODE: write
|
|
||||||
|
|
||||||
CONTEXT: @**/* | Plan Source: ${planPath} | Task: ${task.id}
|
|
||||||
|
|
||||||
EXPECTED:
|
|
||||||
- Modifications implemented as specified
|
|
||||||
- Code follows project conventions
|
|
||||||
- No test failures introduced
|
|
||||||
- All required files updated
|
|
||||||
|
|
||||||
CONSTRAINTS: Exactly as specified in plan | No additional scope
|
|
||||||
" --tool codex --mode write
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 3.3: Track Progress
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
function updateExecutionEvents(eventsPath, log) {
|
|
||||||
const eventsMd = `# 执行日志
|
|
||||||
|
|
||||||
**Session**: ${sessionId}
|
|
||||||
**更新**: ${getUtc8ISOString()}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 事件时间线
|
|
||||||
|
|
||||||
${log.map((e, i) => `
|
|
||||||
### 事件 ${i+1}: ${e.task_id}
|
|
||||||
|
|
||||||
**时间**: ${e.timestamp}
|
|
||||||
**任务**: ${e.task_title}
|
|
||||||
**状态**: ${e.status === 'completed' ? '✅' : e.status === 'failed' ? '❌' : '⏳'}
|
|
||||||
|
|
||||||
**笔记**:
|
|
||||||
${e.notes.map(n => `- ${n}`).join('\n')}
|
|
||||||
|
|
||||||
${e.error ? `**错误**: ${e.error}` : ''}
|
|
||||||
`).join('\n')}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 统计
|
|
||||||
|
|
||||||
- **总数**: ${log.length}
|
|
||||||
- **完成**: ${log.filter(e => e.status === 'completed').length}
|
|
||||||
- **失败**: ${log.filter(e => e.status === 'failed').length}
|
|
||||||
- **进行中**: ${log.filter(e => e.status === 'in_progress').length}
|
|
||||||
`
|
|
||||||
|
|
||||||
Write(eventsPath, eventsMd)
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateExecutionMd(mdPath, task, record) {
|
|
||||||
const content = Read(mdPath)
|
|
||||||
|
|
||||||
// Update task status in table
|
|
||||||
const updated = content.replace(
|
|
||||||
new RegExp(`\\| ${task.id} \\|.*\\| ⏳ \\|`),
|
|
||||||
`| ${task.id} | ... | ... | ... | ${record.status === 'completed' ? '✅' : '❌'} |`
|
|
||||||
)
|
|
||||||
|
|
||||||
Write(mdPath, updated)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Phase 4: Completion
|
|
||||||
|
|
||||||
#### Step 4.1: Generate Summary
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
const completed = executionLog.filter(e => e.status === 'completed').length
|
|
||||||
const failed = executionLog.filter(e => e.status === 'failed').length
|
|
||||||
|
|
||||||
const summary = `
|
|
||||||
# 执行完成
|
|
||||||
|
|
||||||
**Session**: ${sessionId}
|
|
||||||
**完成时间**: ${getUtc8ISOString()}
|
|
||||||
|
|
||||||
## 结果
|
|
||||||
|
|
||||||
| 指标 | 数值 |
|
|
||||||
|------|------|
|
|
||||||
| 总任务 | ${executionLog.length} |
|
|
||||||
| 成功 | ${completed} ✅ |
|
|
||||||
| 失败 | ${failed} ❌ |
|
|
||||||
| 成功率 | ${Math.round(completed / executionLog.length * 100)}% |
|
|
||||||
|
|
||||||
## 后续步骤
|
|
||||||
|
|
||||||
${failed > 0 ? `
|
|
||||||
### ❌ 修复失败的任务
|
|
||||||
|
|
||||||
\`\`\`bash
|
|
||||||
# 检查失败详情
|
|
||||||
cat ${eventsPath}
|
|
||||||
|
|
||||||
# 重新执行失败任务
|
|
||||||
${executionLog.filter(e => e.status === 'failed').map(e => `# ${e.task_id}`).join('\n')}
|
|
||||||
\`\`\`
|
|
||||||
` : `
|
|
||||||
### ✅ 执行完成
|
|
||||||
|
|
||||||
所有任务已成功完成!
|
|
||||||
`}
|
|
||||||
|
|
||||||
## 提交日志
|
|
||||||
|
|
||||||
${executionLog.filter(e => e.notes.some(n => n.includes('Committed'))).map(e => `- ${e.task_id}: ✅`).join('\n')}
|
|
||||||
`
|
|
||||||
|
|
||||||
Write(executionPath, summary)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 4.2: Report Results
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
console.log(`
|
|
||||||
✅ 执行完成: ${sessionId}
|
|
||||||
成功: ${completed}/${executionLog.length}
|
|
||||||
${failed > 0 ? `失败: ${failed}` : '无失败'}
|
|
||||||
|
|
||||||
📁 详情: ${eventsPath}
|
|
||||||
`)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
### Task Format Detection
|
### Plan Format Detection
|
||||||
|
|
||||||
Supports multiple plan formats:
|
Workflow automatically detects plan format:
|
||||||
|
|
||||||
| Format | Source | Parser |
|
| File Extension | Format |
|
||||||
|--------|--------|--------|
|
|---|---|
|
||||||
| JSON | lite-plan, collaborative-plan | parsePlanJson() |
|
| `.json` | JSON plan (lite-plan, collaborative-plan) |
|
||||||
| Markdown | IMPL_PLAN.md, plan-note.md | parsePlanMarkdown() |
|
| `.md` | Markdown plan (IMPL_PLAN.md, plan-note.md) |
|
||||||
| JSON synthesis | Brainstorm session | convertSynthesisToTasks() |
|
| `synthesis.json` | Brainstorm synthesis |
|
||||||
| JSON conclusions | Analysis session | convertConclusionsToTasks() |
|
| `conclusions.json` | Analysis conclusions |
|
||||||
|
|
||||||
### Auto-Commit Format
|
### Execution Modes
|
||||||
|
|
||||||
|
| Mode | Behavior | Use Case |
|
||||||
|
|------|----------|----------|
|
||||||
|
| Normal | Execute tasks, track progress | Standard execution |
|
||||||
|
| `--auto-commit` | Execute + commit each task | Tracked progress with git history |
|
||||||
|
| `--dry-run` | Simulate execution, no changes | Validate plan before executing |
|
||||||
|
|
||||||
|
### Task Dependencies
|
||||||
|
|
||||||
|
Tasks can declare dependencies on other tasks:
|
||||||
|
- `depends_on: ["TASK-001", "TASK-002"]` - Wait for these tasks
|
||||||
|
- Tasks are executed in topological order
|
||||||
|
- Circular dependencies are detected and reported as error
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Error Handling & Recovery
|
||||||
|
|
||||||
|
| Situation | Action | Recovery |
|
||||||
|
|-----------|--------|----------|
|
||||||
|
| Plan not found | Check file path and common locations | Verify plan path is correct |
|
||||||
|
| Unsupported format | Detect format from extension/content | Use supported plan format |
|
||||||
|
| Circular dependency | Stop execution, report error | Remove or reorganize dependencies |
|
||||||
|
| Task execution fails | Record failure in log | Review error details in execution-events.md |
|
||||||
|
| File conflict | Document in execution-events.md | Resolve conflict manually or adjust plan order |
|
||||||
|
| Missing file | Log as warning, continue | Verify files will be created by prior tasks |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Execution Flow Diagram
|
||||||
|
|
||||||
Conventional Commits:
|
|
||||||
```
|
```
|
||||||
{type}({scope}): {description}
|
Load Plan File
|
||||||
|
├─ Detect format (JSON/Markdown)
|
||||||
|
├─ Parse tasks
|
||||||
|
└─ Build dependency graph
|
||||||
|
|
||||||
{task_id}: {task_title}
|
Validate
|
||||||
Files: {list of modified files}
|
├─ Check for cycles
|
||||||
|
├─ Analyze file conflicts
|
||||||
|
└─ Calculate execution order
|
||||||
|
|
||||||
|
Execute Sequentially
|
||||||
|
├─ Task 1: CLI execution → record result
|
||||||
|
├─ Task 2: CLI execution → record result
|
||||||
|
├─ Task 3: CLI execution → record result
|
||||||
|
└─ (repeat for all tasks)
|
||||||
|
|
||||||
|
Track Progress
|
||||||
|
├─ Update execution.md after each task
|
||||||
|
└─ Append event to execution-events.md
|
||||||
|
|
||||||
|
Complete
|
||||||
|
├─ Generate final summary
|
||||||
|
├─ Report statistics
|
||||||
|
└─ Offer follow-up actions
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Error Handling
|
## Best Practices
|
||||||
|
|
||||||
| Error | Resolution |
|
### Before Execution
|
||||||
|-------|------------|
|
|
||||||
| Plan not found | Use explicit --plan flag or check .workflow/ |
|
1. **Review Plan**: Check plan.md or plan-note.md for completeness
|
||||||
| Unsupported format | Verify plan file format matches supported types |
|
2. **Validate Format**: Ensure plan is in supported format
|
||||||
| Task execution fails | Check execution-events.md for details |
|
3. **Check Dependencies**: Verify dependency order is logical
|
||||||
| Dependency missing | Verify plan completeness |
|
4. **Test First**: Use `--dry-run` mode to validate before actual execution
|
||||||
|
5. **Backup**: Commit any pending changes before starting
|
||||||
|
|
||||||
|
### During Execution
|
||||||
|
|
||||||
|
1. **Monitor Progress**: Check execution-events.md for real-time updates
|
||||||
|
2. **Handle Failures**: Review error details and decide whether to continue
|
||||||
|
3. **Check Commits**: Verify auto-commits are correct if enabled
|
||||||
|
4. **Track Context**: Prior task results are available to subsequent tasks
|
||||||
|
|
||||||
|
### After Execution
|
||||||
|
|
||||||
|
1. **Review Results**: Check execution.md summary and statistics
|
||||||
|
2. **Verify Changes**: Inspect modified files match expected changes
|
||||||
|
3. **Handle Failures**: Address any failed tasks
|
||||||
|
4. **Update History**: Check git log for conventional commits if enabled
|
||||||
|
5. **Plan Next Steps**: Use completion artifacts for future work
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Execution Modes
|
## When to Use This Workflow
|
||||||
|
|
||||||
| Mode | Behavior |
|
### Use unified-execute-with-file when:
|
||||||
|------|----------|
|
- Ready to execute a complete plan from planning workflow
|
||||||
| Normal | Execute tasks sequentially, auto-commit disabled |
|
- Need reliable sequential task execution with tracking
|
||||||
| --auto-commit | Execute + commit each task |
|
- Want automatic git commits for audit trail
|
||||||
| --dry-run | Simulate execution, no changes |
|
- Executing plans from brainstorm, analysis, or collaborative-plan workflows
|
||||||
|
- Need to validate plan before full execution (--dry-run)
|
||||||
|
|
||||||
|
### Use direct CLI execution when:
|
||||||
|
- Single task that doesn't need full plan structure
|
||||||
|
- Quick implementation without tracking overhead
|
||||||
|
- Small changes that don't need git history
|
||||||
|
|
||||||
|
### Consider alternatives when:
|
||||||
|
- Still planning/exploring → use `workflow:brainstorm-with-file` or `workflow:analyze-with-file`
|
||||||
|
- Need complex task planning → use `workflow:collaborative-plan-with-file`
|
||||||
|
- Debugging or troubleshooting → use `workflow:debug-with-file`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Usage
|
## Command Examples
|
||||||
|
|
||||||
|
### Standard Execution
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Load and execute plan
|
PLAN=".workflow/.planning/CPLAN-auth-2025-01-27/plan-note.md"
|
||||||
PLAN="path/to/plan.json" \
|
```
|
||||||
|
|
||||||
|
Execute the plan with standard options.
|
||||||
|
|
||||||
|
### With Auto-Commit
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PLAN=".workflow/.planning/CPLAN-auth-2025-01-27/plan-note.md" \
|
||||||
--auto-commit
|
--auto-commit
|
||||||
|
```
|
||||||
|
|
||||||
# Dry run first
|
Execute and automatically commit changes after each task.
|
||||||
PLAN="path/to/plan.json" \
|
|
||||||
|
### Dry-Run Mode
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PLAN=".workflow/.planning/CPLAN-auth-2025-01-27/plan-note.md" \
|
||||||
--dry-run
|
--dry-run
|
||||||
|
```
|
||||||
|
|
||||||
# Auto-detect plan
|
Simulate execution without making changes.
|
||||||
# (searches .workflow/ for recent plans)
|
|
||||||
|
### Auto-Detect Plan
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# No PLAN specified - auto-detects from .workflow/ directories
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
276
TASK6_SUMMARY.md
Normal file
276
TASK6_SUMMARY.md
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
# Task T6 - Dashboard Customization with react-grid-layout
|
||||||
|
|
||||||
|
## Status: COMPLETE
|
||||||
|
|
||||||
|
All remaining work for T6 (Dashboard Customization) has been successfully completed.
|
||||||
|
|
||||||
|
## Implementation Summary
|
||||||
|
|
||||||
|
### Files Modified
|
||||||
|
|
||||||
|
#### 1. DashboardGridContainer.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/DashboardGridContainer.tsx`
|
||||||
|
- **Changes**: Refactored from static Tailwind grid to responsive react-grid-layout
|
||||||
|
- **Features**:
|
||||||
|
- Uses `Responsive` component from react-grid-layout
|
||||||
|
- Integrated with `useUserDashboardLayout` hook for layout persistence
|
||||||
|
- Configurable breakpoints: lg (1024px), md (768px), sm (640px)
|
||||||
|
- Configurable columns: lg (12), md (6), sm (2)
|
||||||
|
- Row height: 60px
|
||||||
|
- Drag-drop enabled with `.drag-handle` class support
|
||||||
|
- Layout changes automatically debounced and saved to localStorage + Zustand
|
||||||
|
|
||||||
|
#### 2. DashboardHeader.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/DashboardHeader.tsx`
|
||||||
|
- **Changes**: Added layout reset button
|
||||||
|
- **New Props**:
|
||||||
|
- `onResetLayout?: () => void` - Callback for layout reset action
|
||||||
|
- **Features**:
|
||||||
|
- Reset button with RotateCcw icon
|
||||||
|
- Button positioned before refresh button
|
||||||
|
- Conditional rendering based on onResetLayout prop
|
||||||
|
- i18n support with "common.actions.resetLayout" key
|
||||||
|
|
||||||
|
#### 3. i18n Locale Files
|
||||||
|
Updated both English and Chinese translations:
|
||||||
|
|
||||||
|
**English (ccw/frontend/src/locales/en/common.json)**:
|
||||||
|
- Added `actions.resetLayout`: "Reset Layout"
|
||||||
|
|
||||||
|
**English (ccw/frontend/src/locales/en/home.json)**:
|
||||||
|
- Added `widgets` section with:
|
||||||
|
- `workflowStatus`: "Workflow Status"
|
||||||
|
- `activity`: "Activity Timeline"
|
||||||
|
- `taskTypes`: "Task Types"
|
||||||
|
|
||||||
|
**Chinese (ccw/frontend/src/locales/zh/common.json)**:
|
||||||
|
- Added `actions.resetLayout`: "重置布局"
|
||||||
|
|
||||||
|
**Chinese (ccw/frontend/src/locales/zh/home.json)**:
|
||||||
|
- Added `widgets` section with:
|
||||||
|
- `workflowStatus`: "工作流状态"
|
||||||
|
- `activity`: "活动时间线"
|
||||||
|
- `taskTypes`: "任务类型"
|
||||||
|
|
||||||
|
### Files Created
|
||||||
|
|
||||||
|
#### 1. DetailedStatsWidget.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/widgets/DetailedStatsWidget.tsx`
|
||||||
|
- **Purpose**: Wraps 6 stat cards for dashboard display
|
||||||
|
- **Features**:
|
||||||
|
- Displays: Active Sessions, Total Tasks, Completed, Pending, Failed, Today's Activity
|
||||||
|
- Uses `useDashboardStats` hook for data fetching
|
||||||
|
- Loading skeletons support
|
||||||
|
- Responsive grid layout (2 cols on mobile, 3 on tablet, 6 on desktop)
|
||||||
|
- Wrapped in Card component
|
||||||
|
|
||||||
|
#### 2. RecentSessionsWidget.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/widgets/RecentSessionsWidget.tsx`
|
||||||
|
- **Purpose**: Displays recent active workflow sessions
|
||||||
|
- **Features**:
|
||||||
|
- Fetches recent sessions using `useSessions` hook
|
||||||
|
- Configurable max sessions (default: 6)
|
||||||
|
- Sorts by creation date (newest first)
|
||||||
|
- Session cards with navigation to detail page
|
||||||
|
- "View All" button for full sessions page
|
||||||
|
- Empty state with helpful message
|
||||||
|
- Loading skeletons support
|
||||||
|
|
||||||
|
#### 3. WorkflowStatusPieChartWidget.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/widgets/WorkflowStatusPieChartWidget.tsx`
|
||||||
|
- **Purpose**: Placeholder widget for workflow status pie chart (T5 dependency)
|
||||||
|
- **Features**:
|
||||||
|
- Displays placeholder with PieChart icon
|
||||||
|
- Message: "Chart available after T5 completion"
|
||||||
|
- Ready for chart implementation after T5
|
||||||
|
|
||||||
|
#### 4. ActivityLineChartWidget.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/widgets/ActivityLineChartWidget.tsx`
|
||||||
|
- **Purpose**: Placeholder widget for activity trend chart (T5 dependency)
|
||||||
|
- **Features**:
|
||||||
|
- Displays placeholder with TrendingUp icon
|
||||||
|
- Message: "Chart available after T5 completion"
|
||||||
|
- Ready for chart implementation after T5
|
||||||
|
|
||||||
|
#### 5. TaskTypeBarChartWidget.tsx
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/widgets/TaskTypeBarChartWidget.tsx`
|
||||||
|
- **Purpose**: Placeholder widget for task type distribution chart (T5 dependency)
|
||||||
|
- **Features**:
|
||||||
|
- Displays placeholder with BarChart3 icon
|
||||||
|
- Message: "Chart available after T5 completion"
|
||||||
|
- Ready for chart implementation after T5
|
||||||
|
|
||||||
|
#### 6. widgets/index.ts
|
||||||
|
- **Location**: `ccw/frontend/src/components/dashboard/widgets/index.ts`
|
||||||
|
- **Purpose**: Central export point for all widget components
|
||||||
|
- **Exports**: All 5 widget components with their TypeScript props
|
||||||
|
|
||||||
|
## Architecture Overview
|
||||||
|
|
||||||
|
### Layout Persistence Flow
|
||||||
|
```
|
||||||
|
User drags/resizes widget
|
||||||
|
↓
|
||||||
|
ResponsiveGridLayout fires onLayoutChange
|
||||||
|
↓
|
||||||
|
DashboardGridContainer calls updateLayouts()
|
||||||
|
↓
|
||||||
|
useUserDashboardLayout debounces (1 second)
|
||||||
|
↓
|
||||||
|
Zustand store updated → localStorage persisted
|
||||||
|
↓
|
||||||
|
Layout restored on page reload
|
||||||
|
```
|
||||||
|
|
||||||
|
### Responsive Breakpoints
|
||||||
|
| Breakpoint | Width | Columns | Use Case |
|
||||||
|
|-----------|----------|---------|----------|
|
||||||
|
| **lg** | ≥ 1024px | 12 | Desktop |
|
||||||
|
| **md** | ≥ 768px | 6 | Tablet |
|
||||||
|
| **sm** | ≥ 640px | 2 | Mobile |
|
||||||
|
|
||||||
|
### Widget Grid Positions (Default Layout)
|
||||||
|
|
||||||
|
**Large screens (lg)**:
|
||||||
|
```
|
||||||
|
+--------------------------------+
|
||||||
|
| DetailedStatsWidget (12 cols) |
|
||||||
|
+--------+--------+--------+------+
|
||||||
|
| Recent | Workflow | Activity|Task|
|
||||||
|
|Sessions| Status | Chart |Type|
|
||||||
|
| (6x4) | (6x4) | (7x4) |(5x4|
|
||||||
|
+--------+--------+--------+------+
|
||||||
|
```
|
||||||
|
|
||||||
|
**Medium screens (md)**:
|
||||||
|
```
|
||||||
|
+-------------------+
|
||||||
|
| DetailedStatsWidget|
|
||||||
|
+----------+--------+
|
||||||
|
| RecentSessions (6) |
|
||||||
|
+-------------------+
|
||||||
|
| WorkflowStatus (6) |
|
||||||
|
+-------------------+
|
||||||
|
| Activity (6) |
|
||||||
|
+-------------------+
|
||||||
|
| TaskTypes (6) |
|
||||||
|
+-------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
**Small screens (sm)**:
|
||||||
|
```
|
||||||
|
+-----------+
|
||||||
|
|DetailStats|
|
||||||
|
+-----------+
|
||||||
|
| Recent |
|
||||||
|
+-----------+
|
||||||
|
| Workflow |
|
||||||
|
+-----------+
|
||||||
|
| Activity |
|
||||||
|
+-----------+
|
||||||
|
| TaskTypes |
|
||||||
|
+-----------+
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
### Already Installed
|
||||||
|
- `react-grid-layout@1.4.4` - Draggable grid layout
|
||||||
|
- `@types/react-grid-layout@1.3.5` - TypeScript definitions
|
||||||
|
- `react-resizable` - Resizing support
|
||||||
|
|
||||||
|
### Existing Integrations
|
||||||
|
- `useUserDashboardLayout` hook for state management
|
||||||
|
- `useAppStore` (Zustand) for persistence
|
||||||
|
- `useDashboardStats` hook for statistics data
|
||||||
|
- `useSessions` hook for session data
|
||||||
|
|
||||||
|
## Testing Instructions
|
||||||
|
|
||||||
|
### Manual Testing Checklist
|
||||||
|
- [ ] Dashboard loads without errors
|
||||||
|
- [ ] All 5 widgets render properly
|
||||||
|
- [ ] Widgets are draggable (move widgets around)
|
||||||
|
- [ ] Widgets are resizable (drag widget edges)
|
||||||
|
- [ ] Layout persists after page reload
|
||||||
|
- [ ] Reset Layout button resets to default positions
|
||||||
|
- [ ] Responsive behavior works on mobile (shrink browser window)
|
||||||
|
- [ ] i18n translations display correctly
|
||||||
|
- [ ] Stat cards show loading skeletons while fetching
|
||||||
|
- [ ] Recent sessions list updates with fresh data
|
||||||
|
|
||||||
|
### TypeScript Verification
|
||||||
|
All new components pass TypeScript compilation with zero errors:
|
||||||
|
```bash
|
||||||
|
npx tsc --noEmit # No errors in dashboard/widgets directory
|
||||||
|
npm run build # Builds successfully
|
||||||
|
```
|
||||||
|
|
||||||
|
## Integration Points for Future Tasks
|
||||||
|
|
||||||
|
### For T5 (Charts Implementation)
|
||||||
|
The 3 chart placeholder widgets are ready to be replaced with actual chart components:
|
||||||
|
1. **WorkflowStatusPieChartWidget** - Implement pie chart showing workflow status distribution
|
||||||
|
2. **ActivityLineChartWidget** - Implement line chart showing activity trends
|
||||||
|
3. **TaskTypeBarChartWidget** - Implement bar chart showing task type distribution
|
||||||
|
|
||||||
|
Replace the placeholder Card content with Recharts (or preferred charting library) components.
|
||||||
|
|
||||||
|
### For HomePage Update
|
||||||
|
The HomePage component can be refactored to use the new widgets:
|
||||||
|
```typescript
|
||||||
|
<DashboardGridContainer>
|
||||||
|
<div key="stats" data-grid={{ i: 'detailed-stats', ... }}>
|
||||||
|
<DetailedStatsWidget />
|
||||||
|
</div>
|
||||||
|
<div key="sessions" data-grid={{ i: 'recent-sessions', ... }}>
|
||||||
|
<RecentSessionsWidget />
|
||||||
|
</div>
|
||||||
|
{/* Add chart widgets here */}
|
||||||
|
</DashboardGridContainer>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Done When Checklist
|
||||||
|
|
||||||
|
- [x] CSS imports added to main.tsx
|
||||||
|
- [x] appStore extended with dashboardLayout state
|
||||||
|
- [x] DashboardGridContainer uses ResponsiveGridLayout
|
||||||
|
- [x] 5 widget wrapper components created
|
||||||
|
- [x] Layout reset button added to DashboardHeader
|
||||||
|
- [x] Drag-drop interactions functional
|
||||||
|
- [x] Layout persists after page reload
|
||||||
|
- [x] Zero TypeScript errors in new components
|
||||||
|
- [x] i18n keys added for all new UI elements
|
||||||
|
- [x] All components documented with JSDoc
|
||||||
|
|
||||||
|
## Files Summary
|
||||||
|
|
||||||
|
| File Path | Type | Status |
|
||||||
|
|-----------|------|--------|
|
||||||
|
| `DashboardGridContainer.tsx` | Modified | Refactored to use react-grid-layout |
|
||||||
|
| `DashboardHeader.tsx` | Modified | Added reset layout button |
|
||||||
|
| `defaultLayouts.ts` | Existing | No changes needed |
|
||||||
|
| `DetailedStatsWidget.tsx` | Created | Stat cards wrapper |
|
||||||
|
| `RecentSessionsWidget.tsx` | Created | Sessions list wrapper |
|
||||||
|
| `WorkflowStatusPieChartWidget.tsx` | Created | Chart placeholder (T5 dependency) |
|
||||||
|
| `ActivityLineChartWidget.tsx` | Created | Chart placeholder (T5 dependency) |
|
||||||
|
| `TaskTypeBarChartWidget.tsx` | Created | Chart placeholder (T5 dependency) |
|
||||||
|
| `widgets/index.ts` | Created | Export index |
|
||||||
|
| `en/common.json` | Modified | Added resetLayout translation |
|
||||||
|
| `zh/common.json` | Modified | Added resetLayout translation |
|
||||||
|
| `en/home.json` | Modified | Added widgets translations |
|
||||||
|
| `zh/home.json` | Modified | Added widgets translations |
|
||||||
|
|
||||||
|
## Build Output
|
||||||
|
```
|
||||||
|
✓ TypeScript compilation successful
|
||||||
|
✓ No errors in dashboard/widgets components
|
||||||
|
✓ Vite build completes successfully
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next Steps (T5)
|
||||||
|
1. Implement actual charts using Recharts or similar
|
||||||
|
2. Replace placeholder widgets with functional chart components
|
||||||
|
3. Add chart data fetching hooks
|
||||||
|
4. Update HomePage to use new widget-based layout
|
||||||
|
5. Test responsive behavior on all screen sizes
|
||||||
11
ccw/.npmrc
Normal file
11
ccw/.npmrc
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# npm workspace configuration
|
||||||
|
# See: https://docs.npmjs.com/cli/v9/using-npm/workspaces
|
||||||
|
|
||||||
|
# Workspace configuration is in package.json (workspaces field)
|
||||||
|
# These are general npm settings
|
||||||
|
|
||||||
|
# Save exact versions (optional, for consistency)
|
||||||
|
save-exact=false
|
||||||
|
|
||||||
|
# Use package-lock.json
|
||||||
|
package-lock=true
|
||||||
257
ccw/MONOREPO.md
Normal file
257
ccw/MONOREPO.md
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
# CCW Monorepo Guide
|
||||||
|
|
||||||
|
This document describes the monorepo structure for CCW, which includes the frontend application and documentation site.
|
||||||
|
|
||||||
|
## 🏗️ Monorepo Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
ccw/
|
||||||
|
├── frontend/ # React + Vite frontend application
|
||||||
|
│ ├── src/ # Source code
|
||||||
|
│ ├── public/ # Static assets
|
||||||
|
│ └── package.json # Workspace: frontend
|
||||||
|
│
|
||||||
|
├── docs-site/ # Docusaurus documentation
|
||||||
|
│ ├── docs/ # Documentation content (MDX)
|
||||||
|
│ ├── i18n/ # Internationalization
|
||||||
|
│ ├── src/ # Custom theme/components
|
||||||
|
│ └── package.json # Workspace: docs-site
|
||||||
|
│
|
||||||
|
├── package.json # Root package (workspaces config)
|
||||||
|
├── .npmrc # npm configuration
|
||||||
|
└── MONOREPO.md # This file
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- Node.js >= 18.0.0
|
||||||
|
- npm >= 9.0.0
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install all dependencies (workspaces)
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
This installs dependencies for both `frontend` and `docs-site` workspaces, with shared dependencies hoisted to the root `node_modules`.
|
||||||
|
|
||||||
|
### Development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Start frontend only (port 5173, with /docs proxied to Docusaurus at 3001)
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# Start documentation only (port 3001)
|
||||||
|
npm run dev:docs
|
||||||
|
|
||||||
|
# Start both concurrently (recommended)
|
||||||
|
npm run dev:all
|
||||||
|
```
|
||||||
|
|
||||||
|
**Access the application:**
|
||||||
|
- Frontend: http://localhost:5173
|
||||||
|
- Documentation: http://localhost:5173/docs (proxied to Docusaurus at 3001)
|
||||||
|
|
||||||
|
## 📚 Available Scripts
|
||||||
|
|
||||||
|
### Root Commands (from ccw/)
|
||||||
|
|
||||||
|
| Command | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| `npm install` | Install all workspace dependencies |
|
||||||
|
| `npm run dev` | Start frontend dev server (with docs proxy) |
|
||||||
|
| `npm run dev:docs` | Start Docusaurus dev server |
|
||||||
|
| `npm run dev:all` | Start both servers concurrently |
|
||||||
|
| `npm run build` | Build all workspaces |
|
||||||
|
| `npm run build:frontend` | Build frontend only |
|
||||||
|
| `npm run build:docs` | Build documentation only |
|
||||||
|
| `npm run clean` | Clean all build artifacts |
|
||||||
|
| `npm run clean:node_modules` | Remove all node_modules |
|
||||||
|
| `npm run lint` | Lint frontend code |
|
||||||
|
| `npm run test` | Run frontend tests |
|
||||||
|
| `npm run test:e2e` | Run E2E tests |
|
||||||
|
| `npm run validate` | Validate i18n translations |
|
||||||
|
| `npm run serve` | Serve docs production build |
|
||||||
|
| `npm run preview` | Preview frontend production build |
|
||||||
|
|
||||||
|
### Workspace-Specific Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Frontend workspace
|
||||||
|
cd frontend
|
||||||
|
npm run dev # Start Vite dev server
|
||||||
|
npm run build # Build for production
|
||||||
|
npm run test # Run unit tests
|
||||||
|
npm run lint # Lint code
|
||||||
|
|
||||||
|
# Documentation workspace
|
||||||
|
cd docs-site
|
||||||
|
npm start # Start Docusaurus dev server
|
||||||
|
npm run build # Build static site
|
||||||
|
npm run serve # Serve production build
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📦 Workspaces
|
||||||
|
|
||||||
|
### Frontend (`frontend/`)
|
||||||
|
|
||||||
|
React + Vite + TypeScript application with:
|
||||||
|
- Radix UI components
|
||||||
|
- Tailwind CSS styling
|
||||||
|
- React Router v6
|
||||||
|
- React Intl (i18n)
|
||||||
|
- Zustand (state management)
|
||||||
|
- Vitest (testing)
|
||||||
|
|
||||||
|
**Tech Stack:**
|
||||||
|
- Runtime: React 18.3
|
||||||
|
- Build: Vite 6.0
|
||||||
|
- Language: TypeScript 5.6
|
||||||
|
- Styling: Tailwind CSS 3.4
|
||||||
|
|
||||||
|
### Documentation (`docs-site/`)
|
||||||
|
|
||||||
|
Docusaurus 3.x documentation site with:
|
||||||
|
- 40+ command references
|
||||||
|
- 15 workflow guides
|
||||||
|
- Mermaid diagrams
|
||||||
|
- MDX support
|
||||||
|
- i18n (EN/ZH)
|
||||||
|
|
||||||
|
**Tech Stack:**
|
||||||
|
- Framework: Docusaurus 3.5
|
||||||
|
- Docs: MDX (Markdown + JSX)
|
||||||
|
- Diagrams: Mermaid
|
||||||
|
- Styling: Custom CSS with CCW theme
|
||||||
|
|
||||||
|
## 🎨 Features
|
||||||
|
|
||||||
|
- **40+ Commands**: workflow, issue, cli, memory, general categories
|
||||||
|
- **15 Workflow Levels**: From ultra-lightweight to intelligent orchestration
|
||||||
|
- **AI-Powered**: Multi-CLI collaboration with intelligent routing
|
||||||
|
- **Bilingual**: English and Chinese support
|
||||||
|
- **Themeable**: Light/dark mode with CCW design tokens
|
||||||
|
- **Interactive**: Mermaid workflow diagrams and live examples
|
||||||
|
|
||||||
|
## 🔧 Configuration
|
||||||
|
|
||||||
|
### Workspace Management
|
||||||
|
|
||||||
|
Root `package.json` defines workspaces:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"workspaces": [
|
||||||
|
"frontend",
|
||||||
|
"docs-site"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Dependencies are **hoisted** to root `node_modules` automatically by npm.
|
||||||
|
|
||||||
|
### Adding Dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add to specific workspace
|
||||||
|
npm install <package> --workspace=frontend
|
||||||
|
npm install <package> --workspace=docs-site
|
||||||
|
|
||||||
|
# Add to root (shared)
|
||||||
|
npm install <package> -w .
|
||||||
|
|
||||||
|
# Add as dev dependency
|
||||||
|
npm install <package> --workspace=frontend --save-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📖 Documentation
|
||||||
|
|
||||||
|
Full documentation is available at:
|
||||||
|
- **Development**: http://localhost:5173/docs
|
||||||
|
- **Standalone**: http://localhost:3001 (when `npm run dev:docs`)
|
||||||
|
|
||||||
|
Documentation source files are in `docs-site/docs/`:
|
||||||
|
- `overview.mdx` - Getting started
|
||||||
|
- `commands/` - Command references by category
|
||||||
|
- `workflows/` - Workflow guides and levels
|
||||||
|
- `faq.mdx` - Frequently asked questions
|
||||||
|
|
||||||
|
## 🌍 Internationalization
|
||||||
|
|
||||||
|
- **Frontend**: `frontend/src/locales/{en,zh}/`
|
||||||
|
- **Docs**: `docs-site/i18n/zh/docusaurus-plugin-content-docs/current/`
|
||||||
|
|
||||||
|
## 🧪 Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Unit tests
|
||||||
|
npm test
|
||||||
|
|
||||||
|
# Coverage
|
||||||
|
npm run test:coverage
|
||||||
|
|
||||||
|
# E2E tests
|
||||||
|
npm run test:e2e
|
||||||
|
|
||||||
|
# E2E UI mode
|
||||||
|
npm run test:e2e:ui
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📦 Building for Production
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build all workspaces
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Output directories:
|
||||||
|
# - frontend/dist/
|
||||||
|
# - docs-site/build/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚢 Deployment
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
|
||||||
|
Deploy `frontend/dist/` to any static hosting service:
|
||||||
|
- Vercel, Netlify, AWS S3, etc.
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
Documentation is integrated as `/docs` route in the frontend.
|
||||||
|
For standalone deployment, deploy `docs-site/build/`.
|
||||||
|
|
||||||
|
### Nginx Configuration Example
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name ccw.example.com;
|
||||||
|
|
||||||
|
# Frontend (with docs proxy)
|
||||||
|
location / {
|
||||||
|
root /var/www/ccw/frontend/dist;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fallback: standalone docs
|
||||||
|
location /docs {
|
||||||
|
root /var/www/ccw/docs-site/build;
|
||||||
|
try_files $uri $uri/ /docs/index.html;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔗 Resources
|
||||||
|
|
||||||
|
- [Docusaurus Documentation](https://docusaurus.io/)
|
||||||
|
- [Vite Documentation](https://vitejs.dev/)
|
||||||
|
- [React Documentation](https://react.dev/)
|
||||||
|
- [Tailwind CSS](https://tailwindcss.com/)
|
||||||
|
- [npm workspaces](https://docs.npmjs.com/cli/v9/using-npm/workspaces)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Built with ❤️ by the CCW Team**
|
||||||
5
ccw/docs-site/.docusaurus/DONT-EDIT-THIS-FOLDER
Normal file
5
ccw/docs-site/.docusaurus/DONT-EDIT-THIS-FOLDER
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
This folder stores temp files that Docusaurus' client bundler accesses.
|
||||||
|
|
||||||
|
DO NOT hand-modify files in this folder because they will be overwritten in the
|
||||||
|
next build. You can clear all build artifacts (including this folder) with the
|
||||||
|
`docusaurus clear` command.
|
||||||
513
ccw/docs-site/.docusaurus/client-manifest.json
Normal file
513
ccw/docs-site/.docusaurus/client-manifest.json
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
{
|
||||||
|
"entrypoints": [
|
||||||
|
"main"
|
||||||
|
],
|
||||||
|
"origins": {
|
||||||
|
"723": [
|
||||||
|
723
|
||||||
|
],
|
||||||
|
"17896441": [
|
||||||
|
869,
|
||||||
|
401
|
||||||
|
],
|
||||||
|
"18891827": [
|
||||||
|
235
|
||||||
|
],
|
||||||
|
"main": [
|
||||||
|
354,
|
||||||
|
869,
|
||||||
|
792
|
||||||
|
],
|
||||||
|
"runtime~main": [
|
||||||
|
792,
|
||||||
|
869,
|
||||||
|
354
|
||||||
|
],
|
||||||
|
"04db0a2e": [
|
||||||
|
927
|
||||||
|
],
|
||||||
|
"0566a0a8": [
|
||||||
|
142
|
||||||
|
],
|
||||||
|
"157db180": [
|
||||||
|
47
|
||||||
|
],
|
||||||
|
"186dcf4e": [
|
||||||
|
368
|
||||||
|
],
|
||||||
|
"19b64556": [
|
||||||
|
57
|
||||||
|
],
|
||||||
|
"1bac9067": [
|
||||||
|
412
|
||||||
|
],
|
||||||
|
"1e3006f3": [
|
||||||
|
975
|
||||||
|
],
|
||||||
|
"2ecf8b4a": [
|
||||||
|
856
|
||||||
|
],
|
||||||
|
"4ad7db0f": [
|
||||||
|
849
|
||||||
|
],
|
||||||
|
"4cc74730": [
|
||||||
|
148
|
||||||
|
],
|
||||||
|
"5c7b2278": [
|
||||||
|
121
|
||||||
|
],
|
||||||
|
"5e95c892": [
|
||||||
|
647
|
||||||
|
],
|
||||||
|
"60eef997": [
|
||||||
|
268
|
||||||
|
],
|
||||||
|
"611877e1": [
|
||||||
|
407
|
||||||
|
],
|
||||||
|
"666bb1bf": [
|
||||||
|
288
|
||||||
|
],
|
||||||
|
"7a1ee27c": [
|
||||||
|
934
|
||||||
|
],
|
||||||
|
"97c6e66a": [
|
||||||
|
814
|
||||||
|
],
|
||||||
|
"9f4ca91e": [
|
||||||
|
973
|
||||||
|
],
|
||||||
|
"a2065270": [
|
||||||
|
816
|
||||||
|
],
|
||||||
|
"a6c3df16": [
|
||||||
|
991
|
||||||
|
],
|
||||||
|
"a7bd4aaa": [
|
||||||
|
98
|
||||||
|
],
|
||||||
|
"a94703ab": [
|
||||||
|
869,
|
||||||
|
48
|
||||||
|
],
|
||||||
|
"aba21aa0": [
|
||||||
|
742
|
||||||
|
],
|
||||||
|
"bcf6b37c": [
|
||||||
|
725
|
||||||
|
],
|
||||||
|
"bdb2b105": [
|
||||||
|
511
|
||||||
|
],
|
||||||
|
"c5a82d8d": [
|
||||||
|
482
|
||||||
|
],
|
||||||
|
"ccef5d0f": [
|
||||||
|
17
|
||||||
|
],
|
||||||
|
"d045285b": [
|
||||||
|
241
|
||||||
|
],
|
||||||
|
"d550a629": [
|
||||||
|
411
|
||||||
|
],
|
||||||
|
"ea313555": [
|
||||||
|
869,
|
||||||
|
11
|
||||||
|
],
|
||||||
|
"f1bf82ec": [
|
||||||
|
954
|
||||||
|
],
|
||||||
|
"f4817052": [
|
||||||
|
896
|
||||||
|
],
|
||||||
|
"f9222419": [
|
||||||
|
448
|
||||||
|
],
|
||||||
|
"fabaf1c8": [
|
||||||
|
777
|
||||||
|
],
|
||||||
|
"fe8e3dcf": [
|
||||||
|
971
|
||||||
|
],
|
||||||
|
"styles": [
|
||||||
|
11,
|
||||||
|
48,
|
||||||
|
354,
|
||||||
|
401,
|
||||||
|
792,
|
||||||
|
869
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"assets": {
|
||||||
|
"11": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/ea313555.4eea9e04.js",
|
||||||
|
"hash": "d5b66e7ebe350f71",
|
||||||
|
"publicPath": "/docs/assets/js/ea313555.4eea9e04.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/ccef5d0f.421f57e1.js",
|
||||||
|
"hash": "021994e665cd71a3",
|
||||||
|
"publicPath": "/docs/assets/js/ccef5d0f.421f57e1.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"47": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/157db180.4fb84679.js",
|
||||||
|
"hash": "57827c9137698781",
|
||||||
|
"publicPath": "/docs/assets/js/157db180.4fb84679.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"48": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/a94703ab.5b347b84.js",
|
||||||
|
"hash": "b41b6704ee40e61e",
|
||||||
|
"publicPath": "/docs/assets/js/a94703ab.5b347b84.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"57": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/19b64556.a6163a0a.js",
|
||||||
|
"hash": "5ee521c37cf8c68a",
|
||||||
|
"publicPath": "/docs/assets/js/19b64556.a6163a0a.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"98": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/a7bd4aaa.5f0b376e.js",
|
||||||
|
"hash": "fa2f4121247f1996",
|
||||||
|
"publicPath": "/docs/assets/js/a7bd4aaa.5f0b376e.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"121": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/5c7b2278.0eaf76aa.js",
|
||||||
|
"hash": "5c09d012d0631523",
|
||||||
|
"publicPath": "/docs/assets/js/5c7b2278.0eaf76aa.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"142": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/0566a0a8.13f3324d.js",
|
||||||
|
"hash": "aab4cc959eec590f",
|
||||||
|
"publicPath": "/docs/assets/js/0566a0a8.13f3324d.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"148": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/4cc74730.4af80d66.js",
|
||||||
|
"hash": "3fdd0970d9784df1",
|
||||||
|
"publicPath": "/docs/assets/js/4cc74730.4af80d66.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"235": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/18891827.d20470dc.js",
|
||||||
|
"hash": "1b4aca9ca7af9b42",
|
||||||
|
"publicPath": "/docs/assets/js/18891827.d20470dc.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"241": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/d045285b.73fb2bfa.js",
|
||||||
|
"hash": "f921efda005636a3",
|
||||||
|
"publicPath": "/docs/assets/js/d045285b.73fb2bfa.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"268": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/60eef997.a1401c2f.js",
|
||||||
|
"hash": "eff0d2e8f0ec97a4",
|
||||||
|
"publicPath": "/docs/assets/js/60eef997.a1401c2f.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"288": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/666bb1bf.2da41127.js",
|
||||||
|
"hash": "cbbe85931a51b576",
|
||||||
|
"publicPath": "/docs/assets/js/666bb1bf.2da41127.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"354": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/runtime~main.cbfbf29d.js",
|
||||||
|
"hash": "fb4e23ef19ceb840",
|
||||||
|
"publicPath": "/docs/assets/js/runtime~main.cbfbf29d.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"368": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/186dcf4e.dc0319e0.js",
|
||||||
|
"hash": "48652c8965138728",
|
||||||
|
"publicPath": "/docs/assets/js/186dcf4e.dc0319e0.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/17896441.a28ce98e.js",
|
||||||
|
"hash": "ee3a31e7129b992e",
|
||||||
|
"publicPath": "/docs/assets/js/17896441.a28ce98e.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"407": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/611877e1.71e7b278.js",
|
||||||
|
"hash": "e3e49d37d33343ec",
|
||||||
|
"publicPath": "/docs/assets/js/611877e1.71e7b278.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"411": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/d550a629.41f98adf.js",
|
||||||
|
"hash": "17b3e1cb172e9417",
|
||||||
|
"publicPath": "/docs/assets/js/d550a629.41f98adf.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"412": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/1bac9067.2e1f90de.js",
|
||||||
|
"hash": "e7eb745cc150b2db",
|
||||||
|
"publicPath": "/docs/assets/js/1bac9067.2e1f90de.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"448": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/f9222419.eca02b22.js",
|
||||||
|
"hash": "f234731674701f32",
|
||||||
|
"publicPath": "/docs/assets/js/f9222419.eca02b22.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"482": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/c5a82d8d.c941bbe4.js",
|
||||||
|
"hash": "d50445120d59b52e",
|
||||||
|
"publicPath": "/docs/assets/js/c5a82d8d.c941bbe4.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"511": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/bdb2b105.00be57de.js",
|
||||||
|
"hash": "9d2397472ac7d311",
|
||||||
|
"publicPath": "/docs/assets/js/bdb2b105.00be57de.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"647": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/5e95c892.1a07266b.js",
|
||||||
|
"hash": "e8bf4ae800fb0d69",
|
||||||
|
"publicPath": "/docs/assets/js/5e95c892.1a07266b.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"723": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/723.b1cb938e.js",
|
||||||
|
"hash": "fad03893d4e20c0c",
|
||||||
|
"publicPath": "/docs/assets/js/723.b1cb938e.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"725": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/bcf6b37c.19ccccf7.js",
|
||||||
|
"hash": "5de43b0994778155",
|
||||||
|
"publicPath": "/docs/assets/js/bcf6b37c.19ccccf7.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"742": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/aba21aa0.dc3eeab8.js",
|
||||||
|
"hash": "cd146bf2ec77ba24",
|
||||||
|
"publicPath": "/docs/assets/js/aba21aa0.dc3eeab8.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"777": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/fabaf1c8.811090ab.js",
|
||||||
|
"hash": "810829664615fe67",
|
||||||
|
"publicPath": "/docs/assets/js/fabaf1c8.811090ab.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"792": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/main.6c671094.js",
|
||||||
|
"hash": "71c89960e4f3a13b",
|
||||||
|
"publicPath": "/docs/assets/js/main.6c671094.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"814": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/97c6e66a.baa03fb6.js",
|
||||||
|
"hash": "7b555aaa8c9c205b",
|
||||||
|
"publicPath": "/docs/assets/js/97c6e66a.baa03fb6.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"816": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/a2065270.088080b0.js",
|
||||||
|
"hash": "d1673e1a1d2d132c",
|
||||||
|
"publicPath": "/docs/assets/js/a2065270.088080b0.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"849": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/4ad7db0f.62c9b350.js",
|
||||||
|
"hash": "24ee107279fdd24b",
|
||||||
|
"publicPath": "/docs/assets/js/4ad7db0f.62c9b350.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"856": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/2ecf8b4a.9d518d70.js",
|
||||||
|
"hash": "54afc84cc90bb5da",
|
||||||
|
"publicPath": "/docs/assets/js/2ecf8b4a.9d518d70.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"869": {
|
||||||
|
"css": [
|
||||||
|
{
|
||||||
|
"file": "assets/css/styles.43777f0a.css",
|
||||||
|
"hash": "99430847c0b90ca7",
|
||||||
|
"publicPath": "/docs/assets/css/styles.43777f0a.css"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"896": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/f4817052.a5126a55.js",
|
||||||
|
"hash": "4a5f92afb4ea9e36",
|
||||||
|
"publicPath": "/docs/assets/js/f4817052.a5126a55.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"927": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/04db0a2e.2c353bc4.js",
|
||||||
|
"hash": "3fbd2a6b8ef7f3aa",
|
||||||
|
"publicPath": "/docs/assets/js/04db0a2e.2c353bc4.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"934": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/7a1ee27c.67535332.js",
|
||||||
|
"hash": "026327af470fe170",
|
||||||
|
"publicPath": "/docs/assets/js/7a1ee27c.67535332.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"954": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/f1bf82ec.e2a6e8e1.js",
|
||||||
|
"hash": "b279ee703b392c9e",
|
||||||
|
"publicPath": "/docs/assets/js/f1bf82ec.e2a6e8e1.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"971": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/fe8e3dcf.0a78caef.js",
|
||||||
|
"hash": "e53c59fbda09ba89",
|
||||||
|
"publicPath": "/docs/assets/js/fe8e3dcf.0a78caef.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"973": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/9f4ca91e.ea7dd9f3.js",
|
||||||
|
"hash": "ef0810bac3ec6788",
|
||||||
|
"publicPath": "/docs/assets/js/9f4ca91e.ea7dd9f3.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"975": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/1e3006f3.6141b6ef.js",
|
||||||
|
"hash": "71a6d2b43ed65f91",
|
||||||
|
"publicPath": "/docs/assets/js/1e3006f3.6141b6ef.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"991": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"file": "assets/js/a6c3df16.fddd53e1.js",
|
||||||
|
"hash": "ae93c9b20718d69b",
|
||||||
|
"publicPath": "/docs/assets/js/a6c3df16.fddd53e1.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
ccw/docs-site/.docusaurus/client-modules.js
Normal file
6
ccw/docs-site/.docusaurus/client-modules.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
export default [
|
||||||
|
require("D:\\Claude_dms3\\node_modules\\infima\\dist\\css\\default\\default.css"),
|
||||||
|
require("D:\\Claude_dms3\\node_modules\\@docusaurus\\theme-classic\\lib\\prism-include-languages"),
|
||||||
|
require("D:\\Claude_dms3\\node_modules\\@docusaurus\\theme-classic\\lib\\nprogress"),
|
||||||
|
require("D:\\Claude_dms3\\ccw\\docs-site\\src\\css\\custom.css"),
|
||||||
|
];
|
||||||
1
ccw/docs-site/.docusaurus/codeTranslations.json
Normal file
1
ccw/docs-site/.docusaurus/codeTranslations.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"options":{"sidebarPath":"D:\\Claude_dms3\\ccw\\docs-site\\sidebars.ts","editUrl":"https://github.com/ccw/docs/tree/main/","path":"docs","editCurrentVersion":false,"editLocalizedFiles":false,"routeBasePath":"docs","tagsBasePath":"tags","include":["**/*.{md,mdx}"],"exclude":["**/_*.{js,jsx,ts,tsx,md,mdx}","**/_*/**","**/*.test.{js,jsx,ts,tsx}","**/__tests__/**"],"sidebarCollapsible":true,"sidebarCollapsed":true,"docsRootComponent":"@theme/DocsRoot","docVersionRootComponent":"@theme/DocVersionRoot","docRootComponent":"@theme/DocRoot","docItemComponent":"@theme/DocItem","docTagsListComponent":"@theme/DocTagsListPage","docTagDocListComponent":"@theme/DocTagDocListPage","docCategoryGeneratedIndexComponent":"@theme/DocCategoryGeneratedIndexPage","remarkPlugins":[],"rehypePlugins":[],"recmaPlugins":[],"beforeDefaultRemarkPlugins":[],"beforeDefaultRehypePlugins":[],"admonitions":true,"showLastUpdateTime":false,"showLastUpdateAuthor":false,"includeCurrentVersion":true,"disableVersioning":false,"versions":{},"breadcrumbs":true,"onInlineTags":"warn","id":"default"},"versionsMetadata":[{"versionName":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","path":"/docs/docs","tagsPath":"/docs/docs/tags","editUrl":"https://github.com/ccw/docs/tree/main/docs","isLast":true,"routePriority":-1,"sidebarFilePath":"D:\\Claude_dms3\\ccw\\docs-site\\sidebars.ts","contentPath":"D:\\Claude_dms3\\ccw\\docs-site\\docs"}]}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "docusaurus-plugin-content-docs",
|
||||||
|
"id": "default"
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/cli/cli-init",
|
||||||
|
"title": "/cli:cli-init",
|
||||||
|
"description": "Initialize CLI configuration for workspace with automatic technology detection",
|
||||||
|
"source": "@site/docs/commands/cli/cli-init.mdx",
|
||||||
|
"sourceDirName": "commands/cli",
|
||||||
|
"slug": "/commands/cli/cli-init",
|
||||||
|
"permalink": "/docs/docs/commands/cli/cli-init",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/cli/cli-init.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 1,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/cli:cli-init",
|
||||||
|
"sidebar_label": "/cli:cli-init",
|
||||||
|
"sidebar_position": 1,
|
||||||
|
"description": "Initialize CLI configuration for workspace with automatic technology detection"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:convert-to-plan",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-convert-to-plan"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/cli:codex-review",
|
||||||
|
"permalink": "/docs/docs/commands/cli/codex-review"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/cli/codex-review",
|
||||||
|
"title": "/cli:codex-review",
|
||||||
|
"description": "Interactive code review using Codex CLI with configurable review targets",
|
||||||
|
"source": "@site/docs/commands/cli/codex-review.mdx",
|
||||||
|
"sourceDirName": "commands/cli",
|
||||||
|
"slug": "/commands/cli/codex-review",
|
||||||
|
"permalink": "/docs/docs/commands/cli/codex-review",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/cli/codex-review.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 2,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/cli:codex-review",
|
||||||
|
"sidebar_label": "/cli:codex-review",
|
||||||
|
"sidebar_position": 2,
|
||||||
|
"description": "Interactive code review using Codex CLI with configurable review targets"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/cli:cli-init",
|
||||||
|
"permalink": "/docs/docs/commands/cli/cli-init"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:update-full",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-full"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/ccw-coordinator",
|
||||||
|
"title": "/ccw-coordinator",
|
||||||
|
"description": "Generic command orchestration tool for CCW workflows",
|
||||||
|
"source": "@site/docs/commands/general/ccw-coordinator.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/ccw-coordinator",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-coordinator",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/ccw-coordinator.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 4,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/ccw-coordinator",
|
||||||
|
"sidebar_label": "/ccw-coordinator",
|
||||||
|
"sidebar_position": 4,
|
||||||
|
"description": "Generic command orchestration tool for CCW workflows"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/ccw-test",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-test"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/ccw-debug",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-debug"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/ccw-debug",
|
||||||
|
"title": "/ccw-debug",
|
||||||
|
"description": "Debug coordinator for intelligent debugging workflows",
|
||||||
|
"source": "@site/docs/commands/general/ccw-debug.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/ccw-debug",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-debug",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/ccw-debug.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 5,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/ccw-debug",
|
||||||
|
"sidebar_label": "/ccw-debug",
|
||||||
|
"sidebar_position": 5,
|
||||||
|
"description": "Debug coordinator for intelligent debugging workflows"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/ccw-coordinator",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-coordinator"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/flow-create",
|
||||||
|
"permalink": "/docs/docs/commands/general/flow-create"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/ccw",
|
||||||
|
"title": "/ccw",
|
||||||
|
"description": "Main CCW workflow coordinator for intelligent command orchestration",
|
||||||
|
"source": "@site/docs/commands/general/ccw.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/ccw",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/ccw.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 1,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/ccw",
|
||||||
|
"sidebar_label": "/ccw",
|
||||||
|
"sidebar_position": 1,
|
||||||
|
"description": "Main CCW workflow coordinator for intelligent command orchestration"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Overview",
|
||||||
|
"permalink": "/docs/docs/"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/ccw-plan",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-plan"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/ccw-plan",
|
||||||
|
"title": "/ccw-plan",
|
||||||
|
"description": "Planning coordinator for intelligent workflow selection",
|
||||||
|
"source": "@site/docs/commands/general/ccw-plan.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/ccw-plan",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-plan",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/ccw-plan.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 2,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/ccw-plan",
|
||||||
|
"sidebar_label": "/ccw-plan",
|
||||||
|
"sidebar_position": 2,
|
||||||
|
"description": "Planning coordinator for intelligent workflow selection"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/ccw",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/ccw-test",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-test"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/ccw-test",
|
||||||
|
"title": "/ccw-test",
|
||||||
|
"description": "Test workflow coordinator for testing strategies",
|
||||||
|
"source": "@site/docs/commands/general/ccw-test.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/ccw-test",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-test",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/ccw-test.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 3,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/ccw-test",
|
||||||
|
"sidebar_label": "/ccw-test",
|
||||||
|
"sidebar_position": 3,
|
||||||
|
"description": "Test workflow coordinator for testing strategies"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/ccw-plan",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-plan"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/ccw-coordinator",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-coordinator"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/codex-coordinator",
|
||||||
|
"title": "/codex-coordinator",
|
||||||
|
"description": "Command orchestration tool for Codex workflows",
|
||||||
|
"source": "@site/docs/commands/general/codex-coordinator.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/codex-coordinator",
|
||||||
|
"permalink": "/docs/docs/commands/general/codex-coordinator",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/codex-coordinator.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 7,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/codex-coordinator",
|
||||||
|
"sidebar_label": "/codex-coordinator",
|
||||||
|
"sidebar_position": 7,
|
||||||
|
"description": "Command orchestration tool for Codex workflows"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/flow-create",
|
||||||
|
"permalink": "/docs/docs/commands/general/flow-create"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:new",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-new"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/general/flow-create",
|
||||||
|
"title": "/flow-create",
|
||||||
|
"description": "Generate workflow templates for flow-coordinator",
|
||||||
|
"source": "@site/docs/commands/general/flow-create.mdx",
|
||||||
|
"sourceDirName": "commands/general",
|
||||||
|
"slug": "/commands/general/flow-create",
|
||||||
|
"permalink": "/docs/docs/commands/general/flow-create",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/general/flow-create.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 6,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/flow-create",
|
||||||
|
"sidebar_label": "/flow-create",
|
||||||
|
"sidebar_position": 6,
|
||||||
|
"description": "Generate workflow templates for flow-coordinator"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/ccw-debug",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw-debug"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/codex-coordinator",
|
||||||
|
"permalink": "/docs/docs/commands/general/codex-coordinator"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-convert-to-plan",
|
||||||
|
"title": "issue:convert-to-plan",
|
||||||
|
"description": "Convert planning artifacts to issue solutions",
|
||||||
|
"source": "@site/docs/commands/issue/issue-convert-to-plan.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-convert-to-plan",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-convert-to-plan",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-convert-to-plan.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 7,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:convert-to-plan",
|
||||||
|
"sidebar_label": "issue:convert-to-plan",
|
||||||
|
"sidebar_position": 7,
|
||||||
|
"description": "Convert planning artifacts to issue solutions"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:from-brainstorm",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-from-brainstorm"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/cli:cli-init",
|
||||||
|
"permalink": "/docs/docs/commands/cli/cli-init"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-discover",
|
||||||
|
"title": "issue:discover",
|
||||||
|
"description": "Discover potential issues from multiple code analysis perspectives",
|
||||||
|
"source": "@site/docs/commands/issue/issue-discover.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-discover",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-discover",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-discover.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 2,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:discover",
|
||||||
|
"sidebar_label": "issue:discover",
|
||||||
|
"sidebar_position": 2,
|
||||||
|
"description": "Discover potential issues from multiple code analysis perspectives"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:new",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-new"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:plan",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-plan"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-execute",
|
||||||
|
"title": "issue:execute",
|
||||||
|
"description": "Execute issue queue with DAG-based parallel orchestration",
|
||||||
|
"source": "@site/docs/commands/issue/issue-execute.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-execute",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-execute",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-execute.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 5,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:execute",
|
||||||
|
"sidebar_label": "issue:execute",
|
||||||
|
"sidebar_position": 5,
|
||||||
|
"description": "Execute issue queue with DAG-based parallel orchestration"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:queue",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-queue"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:from-brainstorm",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-from-brainstorm"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-from-brainstorm",
|
||||||
|
"title": "issue:from-brainstorm",
|
||||||
|
"description": "Convert brainstorm session ideas into issues with solutions",
|
||||||
|
"source": "@site/docs/commands/issue/issue-from-brainstorm.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-from-brainstorm",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-from-brainstorm",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-from-brainstorm.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 6,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:from-brainstorm",
|
||||||
|
"sidebar_label": "issue:from-brainstorm",
|
||||||
|
"sidebar_position": 6,
|
||||||
|
"description": "Convert brainstorm session ideas into issues with solutions"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:execute",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-execute"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:convert-to-plan",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-convert-to-plan"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-new",
|
||||||
|
"title": "issue:new",
|
||||||
|
"description": "Create new issue with automatic categorization",
|
||||||
|
"source": "@site/docs/commands/issue/issue-new.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-new",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-new",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-new.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 1,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:new",
|
||||||
|
"sidebar_label": "issue:new",
|
||||||
|
"sidebar_position": 1,
|
||||||
|
"description": "Create new issue with automatic categorization"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/codex-coordinator",
|
||||||
|
"permalink": "/docs/docs/commands/general/codex-coordinator"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:discover",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-discover"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-plan",
|
||||||
|
"title": "issue:plan",
|
||||||
|
"description": "Plan issue solutions with exploration and task breakdown",
|
||||||
|
"source": "@site/docs/commands/issue/issue-plan.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-plan",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-plan",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-plan.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 3,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:plan",
|
||||||
|
"sidebar_label": "issue:plan",
|
||||||
|
"sidebar_position": 3,
|
||||||
|
"description": "Plan issue solutions with exploration and task breakdown"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:discover",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-discover"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:queue",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-queue"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/issue/issue-queue",
|
||||||
|
"title": "issue:queue",
|
||||||
|
"description": "Form execution queue from bound solutions with conflict resolution",
|
||||||
|
"source": "@site/docs/commands/issue/issue-queue.md",
|
||||||
|
"sourceDirName": "commands/issue",
|
||||||
|
"slug": "/commands/issue/issue-queue",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-queue",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-queue.md",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 4,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "issue:queue",
|
||||||
|
"sidebar_label": "issue:queue",
|
||||||
|
"sidebar_position": 4,
|
||||||
|
"description": "Form execution queue from bound solutions with conflict resolution"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "issue:plan",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-plan"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "issue:execute",
|
||||||
|
"permalink": "/docs/docs/commands/issue/issue-execute"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/memory/memory-compact",
|
||||||
|
"title": "/memory:compact",
|
||||||
|
"description": "Compact session memory into structured text for recovery",
|
||||||
|
"source": "@site/docs/commands/memory/memory-compact.mdx",
|
||||||
|
"sourceDirName": "commands/memory",
|
||||||
|
"slug": "/commands/memory/memory-compact",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-compact",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/memory/memory-compact.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 6,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/memory:compact",
|
||||||
|
"sidebar_label": "/memory:compact",
|
||||||
|
"sidebar_position": 6,
|
||||||
|
"description": "Compact session memory into structured text for recovery"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/memory:docs-related-cli",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-docs-related-cli"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:update-full",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-full"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/memory/memory-docs-full-cli",
|
||||||
|
"title": "/memory:docs-full-cli",
|
||||||
|
"description": "Generate full CLI documentation for all project modules",
|
||||||
|
"source": "@site/docs/commands/memory/memory-docs-full-cli.mdx",
|
||||||
|
"sourceDirName": "commands/memory",
|
||||||
|
"slug": "/commands/memory/memory-docs-full-cli",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-docs-full-cli",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/memory/memory-docs-full-cli.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 4,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/memory:docs-full-cli",
|
||||||
|
"sidebar_label": "/memory:docs-full-cli",
|
||||||
|
"sidebar_position": 4,
|
||||||
|
"description": "Generate full CLI documentation for all project modules"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/memory:load",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-load"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:docs-related-cli",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-docs-related-cli"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/memory/memory-docs-related-cli",
|
||||||
|
"title": "/memory:docs-related-cli",
|
||||||
|
"description": "Generate CLI documentation for git-changed modules",
|
||||||
|
"source": "@site/docs/commands/memory/memory-docs-related-cli.mdx",
|
||||||
|
"sourceDirName": "commands/memory",
|
||||||
|
"slug": "/commands/memory/memory-docs-related-cli",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-docs-related-cli",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/memory/memory-docs-related-cli.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 5,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/memory:docs-related-cli",
|
||||||
|
"sidebar_label": "/memory:docs-related-cli",
|
||||||
|
"sidebar_position": 5,
|
||||||
|
"description": "Generate CLI documentation for git-changed modules"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/memory:docs-full-cli",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-docs-full-cli"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:compact",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-compact"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/memory/memory-load",
|
||||||
|
"title": "/memory:load",
|
||||||
|
"description": "Load project context and core content into memory",
|
||||||
|
"source": "@site/docs/commands/memory/memory-load.mdx",
|
||||||
|
"sourceDirName": "commands/memory",
|
||||||
|
"slug": "/commands/memory/memory-load",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-load",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/memory/memory-load.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 3,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/memory:load",
|
||||||
|
"sidebar_label": "/memory:load",
|
||||||
|
"sidebar_position": 3,
|
||||||
|
"description": "Load project context and core content into memory"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/memory:update-related",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-related"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:docs-full-cli",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-docs-full-cli"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/memory/memory-update-full",
|
||||||
|
"title": "/memory:update-full",
|
||||||
|
"description": "Update CLAUDE.md for all project modules using batched agent execution",
|
||||||
|
"source": "@site/docs/commands/memory/memory-update-full.mdx",
|
||||||
|
"sourceDirName": "commands/memory",
|
||||||
|
"slug": "/commands/memory/memory-update-full",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-full",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/memory/memory-update-full.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 1,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/memory:update-full",
|
||||||
|
"sidebar_label": "/memory:update-full",
|
||||||
|
"sidebar_position": 1,
|
||||||
|
"description": "Update CLAUDE.md for all project modules using batched agent execution"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/cli:codex-review",
|
||||||
|
"permalink": "/docs/docs/commands/cli/codex-review"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:update-related",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-related"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "commands/memory/memory-update-related",
|
||||||
|
"title": "/memory:update-related",
|
||||||
|
"description": "Update CLAUDE.md for git-changed modules using batched execution",
|
||||||
|
"source": "@site/docs/commands/memory/memory-update-related.mdx",
|
||||||
|
"sourceDirName": "commands/memory",
|
||||||
|
"slug": "/commands/memory/memory-update-related",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-related",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/commands/memory/memory-update-related.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 2,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "/memory:update-related",
|
||||||
|
"sidebar_label": "/memory:update-related",
|
||||||
|
"sidebar_position": 2,
|
||||||
|
"description": "Update CLAUDE.md for git-changed modules using batched execution"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/memory:update-full",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-update-full"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "/memory:load",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-load"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"id": "faq",
|
||||||
|
"title": "Frequently Asked Questions",
|
||||||
|
"description": "Common questions about CCW, workflows, commands, and troubleshooting.",
|
||||||
|
"source": "@site/docs/faq.mdx",
|
||||||
|
"sourceDirName": ".",
|
||||||
|
"slug": "/faq",
|
||||||
|
"permalink": "/docs/docs/faq",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/faq.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 99,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Frequently Asked Questions",
|
||||||
|
"sidebar_label": "FAQ",
|
||||||
|
"sidebar_position": 99
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Level 5: Intelligent",
|
||||||
|
"permalink": "/docs/docs/workflows/level-5-intelligent"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"id": "overview",
|
||||||
|
"title": "Welcome to CCW",
|
||||||
|
"description": "CCW is a professional workflow automation platform that combines AI-powered intelligence with structured development workflows. With 40+ commands and 15 integrated workflows, CCW transforms how you build, test, and ship software.",
|
||||||
|
"source": "@site/docs/overview.mdx",
|
||||||
|
"sourceDirName": ".",
|
||||||
|
"slug": "/",
|
||||||
|
"permalink": "/docs/docs/",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/overview.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 1,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Welcome to CCW",
|
||||||
|
"sidebar_label": "Overview",
|
||||||
|
"sidebar_position": 1,
|
||||||
|
"slug": "/"
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"next": {
|
||||||
|
"title": "/ccw",
|
||||||
|
"permalink": "/docs/docs/commands/general/ccw"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/faq",
|
||||||
|
"title": "Workflow FAQ",
|
||||||
|
"description": "Frequently asked questions about CCW workflows",
|
||||||
|
"source": "@site/docs/workflows/faq.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/faq",
|
||||||
|
"permalink": "/docs/docs/workflows/faq",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/faq.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 7,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Workflow FAQ",
|
||||||
|
"description": "Frequently asked questions about CCW workflows",
|
||||||
|
"sidebar_position": 7
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/introduction",
|
||||||
|
"title": "Workflow Introduction",
|
||||||
|
"description": "Comprehensive overview of CCW workflows - from rapid execution to intelligent orchestration",
|
||||||
|
"source": "@site/docs/workflows/introduction.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/introduction",
|
||||||
|
"permalink": "/docs/docs/workflows/introduction",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/introduction.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 1,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Workflow Introduction",
|
||||||
|
"description": "Comprehensive overview of CCW workflows - from rapid execution to intelligent orchestration",
|
||||||
|
"sidebar_position": 1
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "/memory:compact",
|
||||||
|
"permalink": "/docs/docs/commands/memory/memory-compact"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "Level 1: Ultra Lightweight",
|
||||||
|
"permalink": "/docs/docs/workflows/level-1-ultra-lightweight"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/level-1-ultra-lightweight",
|
||||||
|
"title": "Level 1 - Ultra-Lightweight Workflows",
|
||||||
|
"description": "Rapid execution workflow for simple tasks with zero overhead",
|
||||||
|
"source": "@site/docs/workflows/level-1-ultra-lightweight.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/level-1-ultra-lightweight",
|
||||||
|
"permalink": "/docs/docs/workflows/level-1-ultra-lightweight",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/level-1-ultra-lightweight.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 2,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Level 1 - Ultra-Lightweight Workflows",
|
||||||
|
"description": "Rapid execution workflow for simple tasks with zero overhead",
|
||||||
|
"sidebar_position": 2
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Introduction",
|
||||||
|
"permalink": "/docs/docs/workflows/introduction"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "Level 2: Rapid",
|
||||||
|
"permalink": "/docs/docs/workflows/level-2-rapid"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/level-2-rapid",
|
||||||
|
"title": "Level 2 - Rapid Workflows",
|
||||||
|
"description": "Lightweight planning and bug diagnosis workflows for single-module features",
|
||||||
|
"source": "@site/docs/workflows/level-2-rapid.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/level-2-rapid",
|
||||||
|
"permalink": "/docs/docs/workflows/level-2-rapid",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/level-2-rapid.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 3,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Level 2 - Rapid Workflows",
|
||||||
|
"description": "Lightweight planning and bug diagnosis workflows for single-module features",
|
||||||
|
"sidebar_position": 3
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Level 1: Ultra Lightweight",
|
||||||
|
"permalink": "/docs/docs/workflows/level-1-ultra-lightweight"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "Level 3: Standard",
|
||||||
|
"permalink": "/docs/docs/workflows/level-3-standard"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/level-3-standard",
|
||||||
|
"title": "Level 3 - Standard Workflows",
|
||||||
|
"description": "Complete planning with persistent session management for multi-module changes",
|
||||||
|
"source": "@site/docs/workflows/level-3-standard.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/level-3-standard",
|
||||||
|
"permalink": "/docs/docs/workflows/level-3-standard",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/level-3-standard.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 4,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Level 3 - Standard Workflows",
|
||||||
|
"description": "Complete planning with persistent session management for multi-module changes",
|
||||||
|
"sidebar_position": 4
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Level 2: Rapid",
|
||||||
|
"permalink": "/docs/docs/workflows/level-2-rapid"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "Level 4: Brainstorm",
|
||||||
|
"permalink": "/docs/docs/workflows/level-4-brainstorm"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/level-4-brainstorm",
|
||||||
|
"title": "Level 4 - Brainstorm Workflows",
|
||||||
|
"description": "Multi-role brainstorming workflows for complex feature design and architecture exploration",
|
||||||
|
"source": "@site/docs/workflows/level-4-brainstorm.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/level-4-brainstorm",
|
||||||
|
"permalink": "/docs/docs/workflows/level-4-brainstorm",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/level-4-brainstorm.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 5,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Level 4 - Brainstorm Workflows",
|
||||||
|
"description": "Multi-role brainstorming workflows for complex feature design and architecture exploration",
|
||||||
|
"sidebar_position": 5
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Level 3: Standard",
|
||||||
|
"permalink": "/docs/docs/workflows/level-3-standard"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "Level 5: Intelligent",
|
||||||
|
"permalink": "/docs/docs/workflows/level-5-intelligent"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"id": "workflows/level-5-intelligent",
|
||||||
|
"title": "Level 5 - Intelligent Workflows",
|
||||||
|
"description": "Automated command orchestration with intelligent analysis and recommendation",
|
||||||
|
"source": "@site/docs/workflows/level-5-intelligent.mdx",
|
||||||
|
"sourceDirName": "workflows",
|
||||||
|
"slug": "/workflows/level-5-intelligent",
|
||||||
|
"permalink": "/docs/docs/workflows/level-5-intelligent",
|
||||||
|
"draft": false,
|
||||||
|
"unlisted": false,
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/docs/workflows/level-5-intelligent.mdx",
|
||||||
|
"tags": [],
|
||||||
|
"version": "current",
|
||||||
|
"sidebarPosition": 6,
|
||||||
|
"frontMatter": {
|
||||||
|
"title": "Level 5 - Intelligent Workflows",
|
||||||
|
"description": "Automated command orchestration with intelligent analysis and recommendation",
|
||||||
|
"sidebar_position": 6
|
||||||
|
},
|
||||||
|
"sidebar": "docs",
|
||||||
|
"previous": {
|
||||||
|
"title": "Level 4: Brainstorm",
|
||||||
|
"permalink": "/docs/docs/workflows/level-4-brainstorm"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"title": "FAQ",
|
||||||
|
"permalink": "/docs/docs/faq"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "docusaurus-plugin-content-pages",
|
||||||
|
"id": "default"
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "docusaurus-plugin-debug",
|
||||||
|
"id": "default"
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
290
ccw/docs-site/.docusaurus/docusaurus.config.mjs
Normal file
290
ccw/docs-site/.docusaurus/docusaurus.config.mjs
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
/*
|
||||||
|
* AUTOGENERATED - DON'T EDIT
|
||||||
|
* Your edits in this file will be overwritten in the next build!
|
||||||
|
* Modify the docusaurus.config.js file at your site's root instead.
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
"title": "CCW Help Documentation",
|
||||||
|
"tagline": "Professional Workflow Automation Platform",
|
||||||
|
"favicon": "img/favicon.ico",
|
||||||
|
"url": "https://ccw.dev",
|
||||||
|
"baseUrl": "/docs/",
|
||||||
|
"organizationName": "ccw",
|
||||||
|
"projectName": "docs",
|
||||||
|
"onBrokenLinks": "throw",
|
||||||
|
"i18n": {
|
||||||
|
"defaultLocale": "en",
|
||||||
|
"locales": [
|
||||||
|
"en",
|
||||||
|
"zh"
|
||||||
|
],
|
||||||
|
"path": "i18n",
|
||||||
|
"localeConfigs": {}
|
||||||
|
},
|
||||||
|
"presets": [
|
||||||
|
[
|
||||||
|
"@docusaurus/preset-classic",
|
||||||
|
{
|
||||||
|
"docs": {
|
||||||
|
"sidebarPath": "./sidebars.ts",
|
||||||
|
"editUrl": "https://github.com/ccw/docs/tree/main/"
|
||||||
|
},
|
||||||
|
"blog": false,
|
||||||
|
"theme": {
|
||||||
|
"customCss": [
|
||||||
|
"./src/css/custom.css"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"themeConfig": {
|
||||||
|
"navbar": {
|
||||||
|
"title": "CCW Help",
|
||||||
|
"logo": {
|
||||||
|
"alt": "CCW Logo",
|
||||||
|
"src": "img/logo.svg"
|
||||||
|
},
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"type": "localeDropdown",
|
||||||
|
"position": "right",
|
||||||
|
"dropdownItemsBefore": [],
|
||||||
|
"dropdownItemsAfter": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hideOnScroll": false
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"style": "dark",
|
||||||
|
"copyright": "Copyright © 2026 CCW. Built with Docusaurus.",
|
||||||
|
"links": []
|
||||||
|
},
|
||||||
|
"prism": {
|
||||||
|
"additionalLanguages": [
|
||||||
|
"typescript",
|
||||||
|
"javascript",
|
||||||
|
"bash",
|
||||||
|
"python",
|
||||||
|
"java",
|
||||||
|
"go",
|
||||||
|
"yaml",
|
||||||
|
"json"
|
||||||
|
],
|
||||||
|
"theme": {
|
||||||
|
"plain": {
|
||||||
|
"color": "#bfc7d5",
|
||||||
|
"backgroundColor": "#292d3e"
|
||||||
|
},
|
||||||
|
"styles": [
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"comment"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(105, 112, 152)",
|
||||||
|
"fontStyle": "italic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"string",
|
||||||
|
"inserted"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(195, 232, 141)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"number"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(247, 140, 108)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"builtin",
|
||||||
|
"char",
|
||||||
|
"constant",
|
||||||
|
"function"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(130, 170, 255)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"punctuation",
|
||||||
|
"selector"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(199, 146, 234)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"variable"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(191, 199, 213)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"class-name",
|
||||||
|
"attr-name"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(255, 203, 107)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"tag",
|
||||||
|
"deleted"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(255, 85, 114)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"operator"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(137, 221, 255)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"boolean"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(255, 88, 116)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"keyword"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"fontStyle": "italic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"doctype"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(199, 146, 234)",
|
||||||
|
"fontStyle": "italic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"namespace"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(178, 204, 214)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"types": [
|
||||||
|
"url"
|
||||||
|
],
|
||||||
|
"style": {
|
||||||
|
"color": "rgb(221, 221, 221)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"magicComments": [
|
||||||
|
{
|
||||||
|
"className": "theme-code-block-highlighted-line",
|
||||||
|
"line": "highlight-next-line",
|
||||||
|
"block": {
|
||||||
|
"start": "highlight-start",
|
||||||
|
"end": "highlight-end"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"colorMode": {
|
||||||
|
"defaultMode": "light",
|
||||||
|
"disableSwitch": false,
|
||||||
|
"respectPrefersColorScheme": false
|
||||||
|
},
|
||||||
|
"docs": {
|
||||||
|
"versionPersistence": "localStorage",
|
||||||
|
"sidebar": {
|
||||||
|
"hideable": false,
|
||||||
|
"autoCollapseCategories": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"blog": {
|
||||||
|
"sidebar": {
|
||||||
|
"groupByYear": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"metadata": [],
|
||||||
|
"tableOfContents": {
|
||||||
|
"minHeadingLevel": 2,
|
||||||
|
"maxHeadingLevel": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"markdown": {
|
||||||
|
"mermaid": true,
|
||||||
|
"format": "mdx",
|
||||||
|
"emoji": true,
|
||||||
|
"mdx1Compat": {
|
||||||
|
"comments": true,
|
||||||
|
"admonitions": true,
|
||||||
|
"headingIds": true
|
||||||
|
},
|
||||||
|
"anchors": {
|
||||||
|
"maintainCase": false
|
||||||
|
},
|
||||||
|
"hooks": {
|
||||||
|
"onBrokenMarkdownLinks": "warn",
|
||||||
|
"onBrokenMarkdownImages": "throw"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"baseUrlIssueBanner": true,
|
||||||
|
"future": {
|
||||||
|
"v4": {
|
||||||
|
"removeLegacyPostBuildHeadAttribute": false,
|
||||||
|
"useCssCascadeLayers": false
|
||||||
|
},
|
||||||
|
"experimental_faster": {
|
||||||
|
"swcJsLoader": false,
|
||||||
|
"swcJsMinimizer": false,
|
||||||
|
"swcHtmlMinimizer": false,
|
||||||
|
"lightningCssMinimizer": false,
|
||||||
|
"mdxCrossCompilerCache": false,
|
||||||
|
"rspackBundler": false,
|
||||||
|
"rspackPersistentCache": false,
|
||||||
|
"ssgWorkerThreads": false
|
||||||
|
},
|
||||||
|
"experimental_storage": {
|
||||||
|
"type": "localStorage",
|
||||||
|
"namespace": false
|
||||||
|
},
|
||||||
|
"experimental_router": "browser"
|
||||||
|
},
|
||||||
|
"onBrokenAnchors": "warn",
|
||||||
|
"onDuplicateRoutes": "warn",
|
||||||
|
"staticDirectories": [
|
||||||
|
"static"
|
||||||
|
],
|
||||||
|
"customFields": {},
|
||||||
|
"plugins": [],
|
||||||
|
"themes": [],
|
||||||
|
"scripts": [],
|
||||||
|
"headTags": [],
|
||||||
|
"stylesheets": [],
|
||||||
|
"clientModules": [],
|
||||||
|
"titleDelimiter": "|",
|
||||||
|
"noIndex": false
|
||||||
|
};
|
||||||
182
ccw/docs-site/.docusaurus/globalData.json
Normal file
182
ccw/docs-site/.docusaurus/globalData.json
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
{
|
||||||
|
"docusaurus-plugin-content-docs": {
|
||||||
|
"default": {
|
||||||
|
"path": "/docs/docs",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "current",
|
||||||
|
"label": "Next",
|
||||||
|
"isLast": true,
|
||||||
|
"path": "/docs/docs",
|
||||||
|
"mainDocId": "overview",
|
||||||
|
"docs": [
|
||||||
|
{
|
||||||
|
"id": "commands/cli/cli-init",
|
||||||
|
"path": "/docs/docs/commands/cli/cli-init",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/cli/codex-review",
|
||||||
|
"path": "/docs/docs/commands/cli/codex-review",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/ccw",
|
||||||
|
"path": "/docs/docs/commands/general/ccw",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/ccw-coordinator",
|
||||||
|
"path": "/docs/docs/commands/general/ccw-coordinator",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/ccw-debug",
|
||||||
|
"path": "/docs/docs/commands/general/ccw-debug",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/ccw-plan",
|
||||||
|
"path": "/docs/docs/commands/general/ccw-plan",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/ccw-test",
|
||||||
|
"path": "/docs/docs/commands/general/ccw-test",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/codex-coordinator",
|
||||||
|
"path": "/docs/docs/commands/general/codex-coordinator",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/general/flow-create",
|
||||||
|
"path": "/docs/docs/commands/general/flow-create",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-convert-to-plan",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-convert-to-plan",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-discover",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-discover",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-execute",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-execute",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-from-brainstorm",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-from-brainstorm",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-new",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-new",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-plan",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-plan",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/issue/issue-queue",
|
||||||
|
"path": "/docs/docs/commands/issue/issue-queue",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/memory/memory-compact",
|
||||||
|
"path": "/docs/docs/commands/memory/memory-compact",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/memory/memory-docs-full-cli",
|
||||||
|
"path": "/docs/docs/commands/memory/memory-docs-full-cli",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/memory/memory-docs-related-cli",
|
||||||
|
"path": "/docs/docs/commands/memory/memory-docs-related-cli",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/memory/memory-load",
|
||||||
|
"path": "/docs/docs/commands/memory/memory-load",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/memory/memory-update-full",
|
||||||
|
"path": "/docs/docs/commands/memory/memory-update-full",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "commands/memory/memory-update-related",
|
||||||
|
"path": "/docs/docs/commands/memory/memory-update-related",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "faq",
|
||||||
|
"path": "/docs/docs/faq",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "overview",
|
||||||
|
"path": "/docs/docs/",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/faq",
|
||||||
|
"path": "/docs/docs/workflows/faq"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/introduction",
|
||||||
|
"path": "/docs/docs/workflows/introduction",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/level-1-ultra-lightweight",
|
||||||
|
"path": "/docs/docs/workflows/level-1-ultra-lightweight",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/level-2-rapid",
|
||||||
|
"path": "/docs/docs/workflows/level-2-rapid",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/level-3-standard",
|
||||||
|
"path": "/docs/docs/workflows/level-3-standard",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/level-4-brainstorm",
|
||||||
|
"path": "/docs/docs/workflows/level-4-brainstorm",
|
||||||
|
"sidebar": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "workflows/level-5-intelligent",
|
||||||
|
"path": "/docs/docs/workflows/level-5-intelligent",
|
||||||
|
"sidebar": "docs"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"draftIds": [],
|
||||||
|
"sidebars": {
|
||||||
|
"docs": {
|
||||||
|
"link": {
|
||||||
|
"path": "/docs/docs/",
|
||||||
|
"label": "Quick Start"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"breadcrumbs": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
ccw/docs-site/.docusaurus/i18n.json
Normal file
31
ccw/docs-site/.docusaurus/i18n.json
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"defaultLocale": "en",
|
||||||
|
"locales": [
|
||||||
|
"en",
|
||||||
|
"zh"
|
||||||
|
],
|
||||||
|
"path": "i18n",
|
||||||
|
"currentLocale": "en",
|
||||||
|
"localeConfigs": {
|
||||||
|
"en": {
|
||||||
|
"label": "English",
|
||||||
|
"direction": "ltr",
|
||||||
|
"htmlLang": "en",
|
||||||
|
"calendar": "gregory",
|
||||||
|
"path": "en",
|
||||||
|
"translate": false,
|
||||||
|
"url": "https://ccw.dev",
|
||||||
|
"baseUrl": "/docs/"
|
||||||
|
},
|
||||||
|
"zh": {
|
||||||
|
"label": "中文",
|
||||||
|
"direction": "ltr",
|
||||||
|
"htmlLang": "zh",
|
||||||
|
"calendar": "gregory",
|
||||||
|
"path": "zh",
|
||||||
|
"translate": true,
|
||||||
|
"url": "https://ccw.dev",
|
||||||
|
"baseUrl": "/docs/zh/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
ccw/docs-site/.docusaurus/registry.js
Normal file
46
ccw/docs-site/.docusaurus/registry.js
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
export default {
|
||||||
|
"__comp---theme-debug-config-23-a-2ff": [() => import(/* webpackChunkName: "__comp---theme-debug-config-23-a-2ff" */ "@theme/DebugConfig"), "@theme/DebugConfig", require.resolveWeak("@theme/DebugConfig")],
|
||||||
|
"__comp---theme-debug-contentba-8-ce7": [() => import(/* webpackChunkName: "__comp---theme-debug-contentba-8-ce7" */ "@theme/DebugContent"), "@theme/DebugContent", require.resolveWeak("@theme/DebugContent")],
|
||||||
|
"__comp---theme-debug-global-dataede-0fa": [() => import(/* webpackChunkName: "__comp---theme-debug-global-dataede-0fa" */ "@theme/DebugGlobalData"), "@theme/DebugGlobalData", require.resolveWeak("@theme/DebugGlobalData")],
|
||||||
|
"__comp---theme-debug-registry-679-501": [() => import(/* webpackChunkName: "__comp---theme-debug-registry-679-501" */ "@theme/DebugRegistry"), "@theme/DebugRegistry", require.resolveWeak("@theme/DebugRegistry")],
|
||||||
|
"__comp---theme-debug-routes-946-699": [() => import(/* webpackChunkName: "__comp---theme-debug-routes-946-699" */ "@theme/DebugRoutes"), "@theme/DebugRoutes", require.resolveWeak("@theme/DebugRoutes")],
|
||||||
|
"__comp---theme-debug-site-metadata-68-e-3d4": [() => import(/* webpackChunkName: "__comp---theme-debug-site-metadata-68-e-3d4" */ "@theme/DebugSiteMetadata"), "@theme/DebugSiteMetadata", require.resolveWeak("@theme/DebugSiteMetadata")],
|
||||||
|
"__comp---theme-doc-item-178-a40": [() => import(/* webpackChunkName: "__comp---theme-doc-item-178-a40" */ "@theme/DocItem"), "@theme/DocItem", require.resolveWeak("@theme/DocItem")],
|
||||||
|
"__comp---theme-doc-roota-94-67a": [() => import(/* webpackChunkName: "__comp---theme-doc-roota-94-67a" */ "@theme/DocRoot"), "@theme/DocRoot", require.resolveWeak("@theme/DocRoot")],
|
||||||
|
"__comp---theme-doc-version-roota-7-b-5de": [() => import(/* webpackChunkName: "__comp---theme-doc-version-roota-7-b-5de" */ "@theme/DocVersionRoot"), "@theme/DocVersionRoot", require.resolveWeak("@theme/DocVersionRoot")],
|
||||||
|
"__comp---theme-docs-root-5-e-9-0b6": [() => import(/* webpackChunkName: "__comp---theme-docs-root-5-e-9-0b6" */ "@theme/DocsRoot"), "@theme/DocsRoot", require.resolveWeak("@theme/DocsRoot")],
|
||||||
|
"__props---docs-docsa-20-f19": [() => import(/* webpackChunkName: "__props---docs-docsa-20-f19" */ "@generated/docusaurus-plugin-content-docs/default/p/docs-docs-fbb.json"), "@generated/docusaurus-plugin-content-docs/default/p/docs-docs-fbb.json", require.resolveWeak("@generated/docusaurus-plugin-content-docs/default/p/docs-docs-fbb.json")],
|
||||||
|
"__props---docs-docusaurus-debug-content-344-8d5": [() => import(/* webpackChunkName: "__props---docs-docusaurus-debug-content-344-8d5" */ "@generated/docusaurus-plugin-debug/default/p/docs-docusaurus-debug-content-a52.json"), "@generated/docusaurus-plugin-debug/default/p/docs-docusaurus-debug-content-a52.json", require.resolveWeak("@generated/docusaurus-plugin-debug/default/p/docs-docusaurus-debug-content-a52.json")],
|
||||||
|
"content---docs-docs-188-f57": [() => import(/* webpackChunkName: "content---docs-docs-188-f57" */ "@site/docs/overview.mdx"), "@site/docs/overview.mdx", require.resolveWeak("@site/docs/overview.mdx")],
|
||||||
|
"content---docs-docs-commands-cli-cli-init-056-2d3": [() => import(/* webpackChunkName: "content---docs-docs-commands-cli-cli-init-056-2d3" */ "@site/docs/commands/cli/cli-init.mdx"), "@site/docs/commands/cli/cli-init.mdx", require.resolveWeak("@site/docs/commands/cli/cli-init.mdx")],
|
||||||
|
"content---docs-docs-commands-cli-codex-reviewf-1-b-532": [() => import(/* webpackChunkName: "content---docs-docs-commands-cli-codex-reviewf-1-b-532" */ "@site/docs/commands/cli/codex-review.mdx"), "@site/docs/commands/cli/codex-review.mdx", require.resolveWeak("@site/docs/commands/cli/codex-review.mdx")],
|
||||||
|
"content---docs-docs-commands-general-ccw-coordinatord-55-a04": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-ccw-coordinatord-55-a04" */ "@site/docs/commands/general/ccw-coordinator.mdx"), "@site/docs/commands/general/ccw-coordinator.mdx", require.resolveWeak("@site/docs/commands/general/ccw-coordinator.mdx")],
|
||||||
|
"content---docs-docs-commands-general-ccw-debug-97-c-2c8": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-ccw-debug-97-c-2c8" */ "@site/docs/commands/general/ccw-debug.mdx"), "@site/docs/commands/general/ccw-debug.mdx", require.resolveWeak("@site/docs/commands/general/ccw-debug.mdx")],
|
||||||
|
"content---docs-docs-commands-general-ccw-plan-04-d-aa3": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-ccw-plan-04-d-aa3" */ "@site/docs/commands/general/ccw-plan.mdx"), "@site/docs/commands/general/ccw-plan.mdx", require.resolveWeak("@site/docs/commands/general/ccw-plan.mdx")],
|
||||||
|
"content---docs-docs-commands-general-ccw-testcce-a5d": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-ccw-testcce-a5d" */ "@site/docs/commands/general/ccw-test.mdx"), "@site/docs/commands/general/ccw-test.mdx", require.resolveWeak("@site/docs/commands/general/ccw-test.mdx")],
|
||||||
|
"content---docs-docs-commands-general-ccwf-48-4f9": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-ccwf-48-4f9" */ "@site/docs/commands/general/ccw.mdx"), "@site/docs/commands/general/ccw.mdx", require.resolveWeak("@site/docs/commands/general/ccw.mdx")],
|
||||||
|
"content---docs-docs-commands-general-codex-coordinatorf-92-965": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-codex-coordinatorf-92-965" */ "@site/docs/commands/general/codex-coordinator.mdx"), "@site/docs/commands/general/codex-coordinator.mdx", require.resolveWeak("@site/docs/commands/general/codex-coordinator.mdx")],
|
||||||
|
"content---docs-docs-commands-general-flow-createfab-5a7": [() => import(/* webpackChunkName: "content---docs-docs-commands-general-flow-createfab-5a7" */ "@site/docs/commands/general/flow-create.mdx"), "@site/docs/commands/general/flow-create.mdx", require.resolveWeak("@site/docs/commands/general/flow-create.mdx")],
|
||||||
|
"content---docs-docs-commands-issue-issue-convert-to-plan-5-c-7-428": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-convert-to-plan-5-c-7-428" */ "@site/docs/commands/issue/issue-convert-to-plan.md"), "@site/docs/commands/issue/issue-convert-to-plan.md", require.resolveWeak("@site/docs/commands/issue/issue-convert-to-plan.md")],
|
||||||
|
"content---docs-docs-commands-issue-issue-discover-1-e-3-61d": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-discover-1-e-3-61d" */ "@site/docs/commands/issue/issue-discover.md"), "@site/docs/commands/issue/issue-discover.md", require.resolveWeak("@site/docs/commands/issue/issue-discover.md")],
|
||||||
|
"content---docs-docs-commands-issue-issue-executefe-8-121": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-executefe-8-121" */ "@site/docs/commands/issue/issue-execute.md"), "@site/docs/commands/issue/issue-execute.md", require.resolveWeak("@site/docs/commands/issue/issue-execute.md")],
|
||||||
|
"content---docs-docs-commands-issue-issue-from-brainstorm-2-ec-ca5": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-from-brainstorm-2-ec-ca5" */ "@site/docs/commands/issue/issue-from-brainstorm.md"), "@site/docs/commands/issue/issue-from-brainstorm.md", require.resolveWeak("@site/docs/commands/issue/issue-from-brainstorm.md")],
|
||||||
|
"content---docs-docs-commands-issue-issue-new-4-ad-afb": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-new-4-ad-afb" */ "@site/docs/commands/issue/issue-new.md"), "@site/docs/commands/issue/issue-new.md", require.resolveWeak("@site/docs/commands/issue/issue-new.md")],
|
||||||
|
"content---docs-docs-commands-issue-issue-plana-6-c-1b0": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-plana-6-c-1b0" */ "@site/docs/commands/issue/issue-plan.md"), "@site/docs/commands/issue/issue-plan.md", require.resolveWeak("@site/docs/commands/issue/issue-plan.md")],
|
||||||
|
"content---docs-docs-commands-issue-issue-queue-1-ba-06f": [() => import(/* webpackChunkName: "content---docs-docs-commands-issue-issue-queue-1-ba-06f" */ "@site/docs/commands/issue/issue-queue.md"), "@site/docs/commands/issue/issue-queue.md", require.resolveWeak("@site/docs/commands/issue/issue-queue.md")],
|
||||||
|
"content---docs-docs-commands-memory-memory-compact-7-a-1-f85": [() => import(/* webpackChunkName: "content---docs-docs-commands-memory-memory-compact-7-a-1-f85" */ "@site/docs/commands/memory/memory-compact.mdx"), "@site/docs/commands/memory/memory-compact.mdx", require.resolveWeak("@site/docs/commands/memory/memory-compact.mdx")],
|
||||||
|
"content---docs-docs-commands-memory-memory-docs-full-cli-4-cc-b15": [() => import(/* webpackChunkName: "content---docs-docs-commands-memory-memory-docs-full-cli-4-cc-b15" */ "@site/docs/commands/memory/memory-docs-full-cli.mdx"), "@site/docs/commands/memory/memory-docs-full-cli.mdx", require.resolveWeak("@site/docs/commands/memory/memory-docs-full-cli.mdx")],
|
||||||
|
"content---docs-docs-commands-memory-memory-docs-related-cli-60-e-28a": [() => import(/* webpackChunkName: "content---docs-docs-commands-memory-memory-docs-related-cli-60-e-28a" */ "@site/docs/commands/memory/memory-docs-related-cli.mdx"), "@site/docs/commands/memory/memory-docs-related-cli.mdx", require.resolveWeak("@site/docs/commands/memory/memory-docs-related-cli.mdx")],
|
||||||
|
"content---docs-docs-commands-memory-memory-load-157-920": [() => import(/* webpackChunkName: "content---docs-docs-commands-memory-memory-load-157-920" */ "@site/docs/commands/memory/memory-load.mdx"), "@site/docs/commands/memory/memory-load.mdx", require.resolveWeak("@site/docs/commands/memory/memory-load.mdx")],
|
||||||
|
"content---docs-docs-commands-memory-memory-update-full-666-28e": [() => import(/* webpackChunkName: "content---docs-docs-commands-memory-memory-update-full-666-28e" */ "@site/docs/commands/memory/memory-update-full.mdx"), "@site/docs/commands/memory/memory-update-full.mdx", require.resolveWeak("@site/docs/commands/memory/memory-update-full.mdx")],
|
||||||
|
"content---docs-docs-commands-memory-memory-update-related-611-f0a": [() => import(/* webpackChunkName: "content---docs-docs-commands-memory-memory-update-related-611-f0a" */ "@site/docs/commands/memory/memory-update-related.mdx"), "@site/docs/commands/memory/memory-update-related.mdx", require.resolveWeak("@site/docs/commands/memory/memory-update-related.mdx")],
|
||||||
|
"content---docs-docs-faqea-3-29f": [() => import(/* webpackChunkName: "content---docs-docs-faqea-3-29f" */ "@site/docs/faq.mdx"), "@site/docs/faq.mdx", require.resolveWeak("@site/docs/faq.mdx")],
|
||||||
|
"content---docs-docs-workflows-faqbcf-a47": [() => import(/* webpackChunkName: "content---docs-docs-workflows-faqbcf-a47" */ "@site/docs/workflows/faq.mdx"), "@site/docs/workflows/faq.mdx", require.resolveWeak("@site/docs/workflows/faq.mdx")],
|
||||||
|
"content---docs-docs-workflows-introduction-9-f-4-dba": [() => import(/* webpackChunkName: "content---docs-docs-workflows-introduction-9-f-4-dba" */ "@site/docs/workflows/introduction.mdx"), "@site/docs/workflows/introduction.mdx", require.resolveWeak("@site/docs/workflows/introduction.mdx")],
|
||||||
|
"content---docs-docs-workflows-level-1-ultra-lightweightc-5-a-692": [() => import(/* webpackChunkName: "content---docs-docs-workflows-level-1-ultra-lightweightc-5-a-692" */ "@site/docs/workflows/level-1-ultra-lightweight.mdx"), "@site/docs/workflows/level-1-ultra-lightweight.mdx", require.resolveWeak("@site/docs/workflows/level-1-ultra-lightweight.mdx")],
|
||||||
|
"content---docs-docs-workflows-level-2-rapid-19-b-a2f": [() => import(/* webpackChunkName: "content---docs-docs-workflows-level-2-rapid-19-b-a2f" */ "@site/docs/workflows/level-2-rapid.mdx"), "@site/docs/workflows/level-2-rapid.mdx", require.resolveWeak("@site/docs/workflows/level-2-rapid.mdx")],
|
||||||
|
"content---docs-docs-workflows-level-3-standardbdb-19a": [() => import(/* webpackChunkName: "content---docs-docs-workflows-level-3-standardbdb-19a" */ "@site/docs/workflows/level-3-standard.mdx"), "@site/docs/workflows/level-3-standard.mdx", require.resolveWeak("@site/docs/workflows/level-3-standard.mdx")],
|
||||||
|
"content---docs-docs-workflows-level-4-brainstormd-04-69a": [() => import(/* webpackChunkName: "content---docs-docs-workflows-level-4-brainstormd-04-69a" */ "@site/docs/workflows/level-4-brainstorm.mdx"), "@site/docs/workflows/level-4-brainstorm.mdx", require.resolveWeak("@site/docs/workflows/level-4-brainstorm.mdx")],
|
||||||
|
"content---docs-docs-workflows-level-5-intelligent-186-435": [() => import(/* webpackChunkName: "content---docs-docs-workflows-level-5-intelligent-186-435" */ "@site/docs/workflows/level-5-intelligent.mdx"), "@site/docs/workflows/level-5-intelligent.mdx", require.resolveWeak("@site/docs/workflows/level-5-intelligent.mdx")],
|
||||||
|
"plugin---docs-docsaba-31e": [() => import(/* webpackChunkName: "plugin---docs-docsaba-31e" */ "@generated/docusaurus-plugin-content-docs/default/__plugin.json"), "@generated/docusaurus-plugin-content-docs/default/__plugin.json", require.resolveWeak("@generated/docusaurus-plugin-content-docs/default/__plugin.json")],
|
||||||
|
"plugin---docs-docusaurus-debugb-38-c84": [() => import(/* webpackChunkName: "plugin---docs-docusaurus-debugb-38-c84" */ "@generated/docusaurus-plugin-debug/default/__plugin.json"), "@generated/docusaurus-plugin-debug/default/__plugin.json", require.resolveWeak("@generated/docusaurus-plugin-debug/default/__plugin.json")],};
|
||||||
247
ccw/docs-site/.docusaurus/routes.js
Normal file
247
ccw/docs-site/.docusaurus/routes.js
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ComponentCreator from '@docusaurus/ComponentCreator';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug', 'e58'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug/config',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug/config', '2ce'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug/content',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug/content', '11b'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug/globalData',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug/globalData', 'f13'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug/metadata',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug/metadata', 'bff'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug/registry',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug/registry', '830'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/__docusaurus/debug/routes',
|
||||||
|
component: ComponentCreator('/docs/__docusaurus/debug/routes', '13e'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs',
|
||||||
|
component: ComponentCreator('/docs/docs', '7fe'),
|
||||||
|
routes: [
|
||||||
|
{
|
||||||
|
path: '/docs/docs',
|
||||||
|
component: ComponentCreator('/docs/docs', '830'),
|
||||||
|
routes: [
|
||||||
|
{
|
||||||
|
path: '/docs/docs',
|
||||||
|
component: ComponentCreator('/docs/docs', '77f'),
|
||||||
|
routes: [
|
||||||
|
{
|
||||||
|
path: '/docs/docs/',
|
||||||
|
component: ComponentCreator('/docs/docs/', '2fa'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/cli/cli-init',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/cli/cli-init', 'c74'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/cli/codex-review',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/cli/codex-review', '937'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/ccw',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/ccw', '3fb'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/ccw-coordinator',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/ccw-coordinator', 'a90'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/ccw-debug',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/ccw-debug', '663'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/ccw-plan',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/ccw-plan', '40b'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/ccw-test',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/ccw-test', '99d'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/codex-coordinator',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/codex-coordinator', '996'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/general/flow-create',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/general/flow-create', 'd91'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-convert-to-plan',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-convert-to-plan', 'd90'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-discover',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-discover', '2a1'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-execute',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-execute', 'abb'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-from-brainstorm',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-from-brainstorm', '72b'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-new',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-new', 'c58'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-plan',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-plan', 'fd2'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/issue/issue-queue',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/issue/issue-queue', '1ce'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/memory/memory-compact',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/memory/memory-compact', '74c'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/memory/memory-docs-full-cli',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/memory/memory-docs-full-cli', '7a4'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/memory/memory-docs-related-cli',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/memory/memory-docs-related-cli', 'fb4'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/memory/memory-load',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/memory/memory-load', 'c66'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/memory/memory-update-full',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/memory/memory-update-full', 'b80'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/commands/memory/memory-update-related',
|
||||||
|
component: ComponentCreator('/docs/docs/commands/memory/memory-update-related', 'f0d'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/faq',
|
||||||
|
component: ComponentCreator('/docs/docs/faq', '4b2'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/faq',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/faq', 'f47'),
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/introduction',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/introduction', '4cb'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/level-1-ultra-lightweight',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/level-1-ultra-lightweight', '5c4'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/level-2-rapid',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/level-2-rapid', 'ad8'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/level-3-standard',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/level-3-standard', '3ea'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/level-4-brainstorm',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/level-4-brainstorm', 'f4f'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/docs/docs/workflows/level-5-intelligent',
|
||||||
|
component: ComponentCreator('/docs/docs/workflows/level-5-intelligent', '84a'),
|
||||||
|
exact: true,
|
||||||
|
sidebar: "docs"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '*',
|
||||||
|
component: ComponentCreator('*'),
|
||||||
|
},
|
||||||
|
];
|
||||||
182
ccw/docs-site/.docusaurus/routesChunkNames.json
Normal file
182
ccw/docs-site/.docusaurus/routesChunkNames.json
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
{
|
||||||
|
"/docs/__docusaurus/debug-e58": {
|
||||||
|
"__comp": "__comp---theme-debug-config-23-a-2ff",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/__docusaurus/debug/config-2ce": {
|
||||||
|
"__comp": "__comp---theme-debug-config-23-a-2ff",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/__docusaurus/debug/content-11b": {
|
||||||
|
"__comp": "__comp---theme-debug-contentba-8-ce7",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
},
|
||||||
|
"__props": "__props---docs-docusaurus-debug-content-344-8d5"
|
||||||
|
},
|
||||||
|
"/docs/__docusaurus/debug/globalData-f13": {
|
||||||
|
"__comp": "__comp---theme-debug-global-dataede-0fa",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/__docusaurus/debug/metadata-bff": {
|
||||||
|
"__comp": "__comp---theme-debug-site-metadata-68-e-3d4",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/__docusaurus/debug/registry-830": {
|
||||||
|
"__comp": "__comp---theme-debug-registry-679-501",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/__docusaurus/debug/routes-13e": {
|
||||||
|
"__comp": "__comp---theme-debug-routes-946-699",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/docs-7fe": {
|
||||||
|
"__comp": "__comp---theme-docs-root-5-e-9-0b6",
|
||||||
|
"__context": {
|
||||||
|
"plugin": "plugin---docs-docsaba-31e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/docs/docs-830": {
|
||||||
|
"__comp": "__comp---theme-doc-version-roota-7-b-5de",
|
||||||
|
"__props": "__props---docs-docsa-20-f19"
|
||||||
|
},
|
||||||
|
"/docs/docs-77f": {
|
||||||
|
"__comp": "__comp---theme-doc-roota-94-67a"
|
||||||
|
},
|
||||||
|
"/docs/docs/-2fa": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-188-f57"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/cli/cli-init-c74": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-cli-cli-init-056-2d3"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/cli/codex-review-937": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-cli-codex-reviewf-1-b-532"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/ccw-3fb": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-ccwf-48-4f9"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/ccw-coordinator-a90": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-ccw-coordinatord-55-a04"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/ccw-debug-663": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-ccw-debug-97-c-2c8"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/ccw-plan-40b": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-ccw-plan-04-d-aa3"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/ccw-test-99d": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-ccw-testcce-a5d"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/codex-coordinator-996": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-codex-coordinatorf-92-965"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/general/flow-create-d91": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-general-flow-createfab-5a7"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-convert-to-plan-d90": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-convert-to-plan-5-c-7-428"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-discover-2a1": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-discover-1-e-3-61d"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-execute-abb": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-executefe-8-121"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-from-brainstorm-72b": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-from-brainstorm-2-ec-ca5"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-new-c58": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-new-4-ad-afb"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-plan-fd2": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-plana-6-c-1b0"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/issue/issue-queue-1ce": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-issue-issue-queue-1-ba-06f"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/memory/memory-compact-74c": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-memory-memory-compact-7-a-1-f85"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/memory/memory-docs-full-cli-7a4": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-memory-memory-docs-full-cli-4-cc-b15"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/memory/memory-docs-related-cli-fb4": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-memory-memory-docs-related-cli-60-e-28a"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/memory/memory-load-c66": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-memory-memory-load-157-920"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/memory/memory-update-full-b80": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-memory-memory-update-full-666-28e"
|
||||||
|
},
|
||||||
|
"/docs/docs/commands/memory/memory-update-related-f0d": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-commands-memory-memory-update-related-611-f0a"
|
||||||
|
},
|
||||||
|
"/docs/docs/faq-4b2": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-faqea-3-29f"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/faq-f47": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-faqbcf-a47"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/introduction-4cb": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-introduction-9-f-4-dba"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/level-1-ultra-lightweight-5c4": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-level-1-ultra-lightweightc-5-a-692"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/level-2-rapid-ad8": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-level-2-rapid-19-b-a2f"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/level-3-standard-3ea": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-level-3-standardbdb-19a"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/level-4-brainstorm-f4f": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-level-4-brainstormd-04-69a"
|
||||||
|
},
|
||||||
|
"/docs/docs/workflows/level-5-intelligent-84a": {
|
||||||
|
"__comp": "__comp---theme-doc-item-178-a40",
|
||||||
|
"content": "content---docs-docs-workflows-level-5-intelligent-186-435"
|
||||||
|
}
|
||||||
|
}
|
||||||
31
ccw/docs-site/.docusaurus/site-metadata.json
Normal file
31
ccw/docs-site/.docusaurus/site-metadata.json
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"docusaurusVersion": "3.9.2",
|
||||||
|
"siteVersion": "1.0.0",
|
||||||
|
"pluginVersions": {
|
||||||
|
"docusaurus-plugin-content-docs": {
|
||||||
|
"type": "package",
|
||||||
|
"name": "@docusaurus/plugin-content-docs",
|
||||||
|
"version": "3.9.2"
|
||||||
|
},
|
||||||
|
"docusaurus-plugin-content-pages": {
|
||||||
|
"type": "package",
|
||||||
|
"name": "@docusaurus/plugin-content-pages",
|
||||||
|
"version": "3.9.2"
|
||||||
|
},
|
||||||
|
"docusaurus-plugin-debug": {
|
||||||
|
"type": "package",
|
||||||
|
"name": "@docusaurus/plugin-debug",
|
||||||
|
"version": "3.9.2"
|
||||||
|
},
|
||||||
|
"docusaurus-plugin-svgr": {
|
||||||
|
"type": "package",
|
||||||
|
"name": "@docusaurus/plugin-svgr",
|
||||||
|
"version": "3.9.2"
|
||||||
|
},
|
||||||
|
"docusaurus-theme-classic": {
|
||||||
|
"type": "package",
|
||||||
|
"name": "@docusaurus/theme-classic",
|
||||||
|
"version": "3.9.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
4
ccw/docs-site/.docusaurus/site-storage.json
Normal file
4
ccw/docs-site/.docusaurus/site-storage.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"type": "localStorage",
|
||||||
|
"namespace": ""
|
||||||
|
}
|
||||||
212
ccw/docs-site/README.md
Normal file
212
ccw/docs-site/README.md
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
# CCW Documentation Site
|
||||||
|
|
||||||
|
This is the documentation site for CCW (Claude Code Workflow), built with [Docusaurus](https://docusaurus.io/).
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install dependencies
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# Start development server (port 3001)
|
||||||
|
npm start
|
||||||
|
|
||||||
|
# Build for production
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Serve production build locally
|
||||||
|
npm serve
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
docs-site/
|
||||||
|
├── docs/ # Documentation content
|
||||||
|
│ ├── overview.mdx # Landing page
|
||||||
|
│ ├── quick-start.mdx # Getting started
|
||||||
|
│ ├── commands/ # Command documentation
|
||||||
|
│ │ ├── workflows/ # Workflow commands (14)
|
||||||
|
│ │ ├── issue/ # Issue commands (7)
|
||||||
|
│ │ ├── cli/ # CLI commands (2)
|
||||||
|
│ │ ├── memory/ # Memory commands (6)
|
||||||
|
│ │ └── general/ # General commands (7)
|
||||||
|
│ ├── workflows/ # Workflow guides
|
||||||
|
│ │ ├── introduction.mdx
|
||||||
|
│ │ ├── level-*.mdx
|
||||||
|
│ │ └── faq.mdx
|
||||||
|
│ └── faq.mdx # Main FAQ
|
||||||
|
├── i18n/ # Internationalization
|
||||||
|
│ └── zh/ # Chinese translations
|
||||||
|
├── src/
|
||||||
|
│ ├── css/
|
||||||
|
│ │ ├── custom.css # Custom styles
|
||||||
|
│ │ └── variables.css # CSS variables (CCW theme)
|
||||||
|
│ └── components/ # Custom React components
|
||||||
|
├── docusaurus.config.ts # Main configuration
|
||||||
|
├── sidebars.ts # Sidebar navigation
|
||||||
|
└── package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 Design System
|
||||||
|
|
||||||
|
The documentation uses CCW's design tokens:
|
||||||
|
|
||||||
|
- **Primary**: Blue (HSL 221, 83%, 53%)
|
||||||
|
- **Accent**: Green (HSL 142, 76%, 36%)
|
||||||
|
- **Dark Mode**: Full support with dracula syntax theme
|
||||||
|
- **Mermaid**: Workflow diagrams with light/dark themes
|
||||||
|
|
||||||
|
## 🔗 Integration with CCW Frontend
|
||||||
|
|
||||||
|
The documentation is integrated as a sub-route (`/docs`) in the main CCW frontend:
|
||||||
|
|
||||||
|
1. **Development**: Vite proxies `/docs` → `http://localhost:3001`
|
||||||
|
2. **Production**: Nginx serves both apps with `/docs` location
|
||||||
|
|
||||||
|
See `../frontend/vite.config.ts` for proxy configuration.
|
||||||
|
|
||||||
|
## 📝 Writing Documentation
|
||||||
|
|
||||||
|
### File Naming
|
||||||
|
|
||||||
|
- Use kebab-case: `workflow-lite-plan.mdx`
|
||||||
|
- Match sidebar IDs: `id: workflow-lite-plan`
|
||||||
|
|
||||||
|
### Frontmatter Template
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
title: Workflow: Lite Plan
|
||||||
|
sidebar_label: workflow:lite-plan
|
||||||
|
sidebar_position: 3
|
||||||
|
description: Lightweight in-memory planning for simple tasks
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mermaid Diagrams
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD
|
||||||
|
Start([Start]) --> Plan([Planning])
|
||||||
|
Plan --> Execute([Execution])
|
||||||
|
```
|
||||||
|
|
||||||
|
### Admonitions
|
||||||
|
|
||||||
|
```md
|
||||||
|
:::tip Pro Tip
|
||||||
|
Use this workflow for...
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::warning Warning
|
||||||
|
This feature is experimental
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::danger Caution
|
||||||
|
This operation cannot be undone
|
||||||
|
:::
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌍 Internationalization
|
||||||
|
|
||||||
|
### Adding New Translations
|
||||||
|
|
||||||
|
1. Create MDX file in `i18n/zh/docusaurus-plugin-content-docs/current/`
|
||||||
|
2. Mirror the English docs structure
|
||||||
|
3. Run: `npm run write-translations -- --locale zh`
|
||||||
|
|
||||||
|
### Translation Status
|
||||||
|
|
||||||
|
- ✅ English (EN) - Complete
|
||||||
|
- 🔄 Chinese (ZH) - Interface translated, content pending
|
||||||
|
|
||||||
|
## 🔧 Configuration
|
||||||
|
|
||||||
|
### Docusaurus Config (`docusaurus.config.ts`)
|
||||||
|
|
||||||
|
- **Presets**: Classic (docs only, no blog)
|
||||||
|
- **Themes**: Mermaid for diagrams
|
||||||
|
- **i18n**: EN (default), ZH
|
||||||
|
- **Base URL**: `/docs/`
|
||||||
|
|
||||||
|
### Sidebar Config (`sidebars.ts`)
|
||||||
|
|
||||||
|
Organized by:
|
||||||
|
1. Quick Start
|
||||||
|
2. Commands (by category)
|
||||||
|
3. Workflows (by level)
|
||||||
|
4. FAQ
|
||||||
|
|
||||||
|
## 📦 Dependencies
|
||||||
|
|
||||||
|
| Package | Version | Purpose |
|
||||||
|
|---------|---------|---------|
|
||||||
|
| @docusaurus/core | ^3.5.2 | Core framework |
|
||||||
|
| @docusaurus/preset-classic | ^3.5.2 | Default preset |
|
||||||
|
| @docusaurus/theme-mermaid | ^3.5.2 | Diagram support |
|
||||||
|
| react | ^18.3.1 | UI framework |
|
||||||
|
|
||||||
|
## 🚢 Deployment
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
Output: `build/` directory
|
||||||
|
|
||||||
|
### Deploy to Static Hosting
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Surge
|
||||||
|
npm run deploy -- --surge
|
||||||
|
|
||||||
|
# GitHub Pages
|
||||||
|
npm run deploy -- --git
|
||||||
|
|
||||||
|
# Custom server
|
||||||
|
npm run serve
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
|
### Port Already in Use
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Kill process on port 3001
|
||||||
|
npx kill-port 3001
|
||||||
|
|
||||||
|
# Or use different port
|
||||||
|
npm start -- --port 3002
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build Errors
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clear cache
|
||||||
|
npm run clear
|
||||||
|
|
||||||
|
# Reinstall dependencies
|
||||||
|
rm -rf node_modules package-lock.json
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Resources
|
||||||
|
|
||||||
|
- [Docusaurus Documentation](https://docusaurus.io/docs)
|
||||||
|
- [MDX Documentation](https://mdxjs.com/)
|
||||||
|
- [Mermaid Syntax](https://mermaid.js.org/syntax/)
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
1. Edit/add MDX files in `docs/`
|
||||||
|
2. Update `sidebars.ts` if adding new pages
|
||||||
|
3. Run `npm start` to preview
|
||||||
|
4. Test both light and dark modes
|
||||||
|
5. Check mobile responsiveness
|
||||||
|
|
||||||
|
## 📄 License
|
||||||
|
|
||||||
|
Same as CCW main project.
|
||||||
16
ccw/docs-site/build/404.html
Normal file
16
ccw/docs-site/build/404.html
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/css/styles.43777f0a.css
Normal file
1
ccw/docs-site/build/assets/css/styles.43777f0a.css
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/04db0a2e.2c353bc4.js
Normal file
1
ccw/docs-site/build/assets/js/04db0a2e.2c353bc4.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/0566a0a8.13f3324d.js
Normal file
1
ccw/docs-site/build/assets/js/0566a0a8.13f3324d.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/157db180.4fb84679.js
Normal file
1
ccw/docs-site/build/assets/js/157db180.4fb84679.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/17896441.a28ce98e.js
Normal file
1
ccw/docs-site/build/assets/js/17896441.a28ce98e.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/186dcf4e.dc0319e0.js
Normal file
1
ccw/docs-site/build/assets/js/186dcf4e.dc0319e0.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/18891827.d20470dc.js
Normal file
1
ccw/docs-site/build/assets/js/18891827.d20470dc.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/19b64556.a6163a0a.js
Normal file
1
ccw/docs-site/build/assets/js/19b64556.a6163a0a.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/1bac9067.2e1f90de.js
Normal file
1
ccw/docs-site/build/assets/js/1bac9067.2e1f90de.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/1e3006f3.6141b6ef.js
Normal file
1
ccw/docs-site/build/assets/js/1e3006f3.6141b6ef.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/2ecf8b4a.9d518d70.js
Normal file
1
ccw/docs-site/build/assets/js/2ecf8b4a.9d518d70.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/4ad7db0f.62c9b350.js
Normal file
1
ccw/docs-site/build/assets/js/4ad7db0f.62c9b350.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/4cc74730.4af80d66.js
Normal file
1
ccw/docs-site/build/assets/js/4cc74730.4af80d66.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/5c7b2278.0eaf76aa.js
Normal file
1
ccw/docs-site/build/assets/js/5c7b2278.0eaf76aa.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/5e95c892.1a07266b.js
Normal file
1
ccw/docs-site/build/assets/js/5e95c892.1a07266b.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[647],{3531(c,s,e){e.r(s),e.d(s,{default:()=>h});e(4041);var r=e(4357),a=e(7473),u=e(8582),l=e(8150),o=e(6270),d=e(1085);function h(c){return(0,d.jsx)(u.e3,{className:(0,r.A)(a.G.wrapper.docsPages),children:(0,d.jsx)(o.A,{children:(0,l.v)(c.route.routes)})})}}}]);
|
||||||
1
ccw/docs-site/build/assets/js/60eef997.a1401c2f.js
Normal file
1
ccw/docs-site/build/assets/js/60eef997.a1401c2f.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/611877e1.71e7b278.js
Normal file
1
ccw/docs-site/build/assets/js/611877e1.71e7b278.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/666bb1bf.2da41127.js
Normal file
1
ccw/docs-site/build/assets/js/666bb1bf.2da41127.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/723.b1cb938e.js
Normal file
1
ccw/docs-site/build/assets/js/723.b1cb938e.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[723],{2757(e,t,i){i.d(t,{A:()=>r});i(4041);var n=i(4357),o=i(9082),s=i(4441),a=i(1085);function r({className:e}){return(0,a.jsx)("main",{className:(0,n.A)("container margin-vert--xl",e),children:(0,a.jsx)("div",{className:"row",children:(0,a.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,a.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,a.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,a.jsx)("p",{children:(0,a.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,a.jsx)("p",{children:(0,a.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},5723(e,t,i){i.r(t),i.d(t,{default:()=>c});i(4041);var n=i(9082),o=i(8582),s=i(6270),a=i(2757),r=i(1085);function c(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.be,{title:e}),(0,r.jsx)(s.A,{children:(0,r.jsx)(a.A,{})})]})}}}]);
|
||||||
1
ccw/docs-site/build/assets/js/7a1ee27c.67535332.js
Normal file
1
ccw/docs-site/build/assets/js/7a1ee27c.67535332.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/97c6e66a.baa03fb6.js
Normal file
1
ccw/docs-site/build/assets/js/97c6e66a.baa03fb6.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/9f4ca91e.ea7dd9f3.js
Normal file
1
ccw/docs-site/build/assets/js/9f4ca91e.ea7dd9f3.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/a2065270.088080b0.js
Normal file
1
ccw/docs-site/build/assets/js/a2065270.088080b0.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/a6c3df16.fddd53e1.js
Normal file
1
ccw/docs-site/build/assets/js/a6c3df16.fddd53e1.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/a7bd4aaa.5f0b376e.js
Normal file
1
ccw/docs-site/build/assets/js/a7bd4aaa.5f0b376e.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[98],{3045(n,s,e){e.r(s),e.d(s,{default:()=>d});e(4041);var r=e(8582);function o(n,s){return`docs-${n}-${s}`}var c=e(4647),t=e(8150),i=e(6613),a=e(1085);function u(n){const{version:s}=n;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.A,{version:s.version,tag:o(s.pluginId,s.version)}),(0,a.jsx)(r.be,{children:s.noIndex&&(0,a.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:s,route:e}=n;return(0,a.jsx)(r.e3,{className:s.className,children:(0,a.jsx)(c.n,{version:s,children:(0,t.v)(e.routes)})})}function d(n){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(u,{...n}),(0,a.jsx)(l,{...n})]})}}}]);
|
||||||
1
ccw/docs-site/build/assets/js/a94703ab.5b347b84.js
Normal file
1
ccw/docs-site/build/assets/js/a94703ab.5b347b84.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/aba21aa0.dc3eeab8.js
Normal file
1
ccw/docs-site/build/assets/js/aba21aa0.dc3eeab8.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[742],{7093(c){c.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
|
||||||
1
ccw/docs-site/build/assets/js/bcf6b37c.19ccccf7.js
Normal file
1
ccw/docs-site/build/assets/js/bcf6b37c.19ccccf7.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/bdb2b105.00be57de.js
Normal file
1
ccw/docs-site/build/assets/js/bdb2b105.00be57de.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/c5a82d8d.c941bbe4.js
Normal file
1
ccw/docs-site/build/assets/js/c5a82d8d.c941bbe4.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/ccef5d0f.421f57e1.js
Normal file
1
ccw/docs-site/build/assets/js/ccef5d0f.421f57e1.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/d045285b.73fb2bfa.js
Normal file
1
ccw/docs-site/build/assets/js/d045285b.73fb2bfa.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/d550a629.41f98adf.js
Normal file
1
ccw/docs-site/build/assets/js/d550a629.41f98adf.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/ea313555.4eea9e04.js
Normal file
1
ccw/docs-site/build/assets/js/ea313555.4eea9e04.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/f1bf82ec.e2a6e8e1.js
Normal file
1
ccw/docs-site/build/assets/js/f1bf82ec.e2a6e8e1.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/f4817052.a5126a55.js
Normal file
1
ccw/docs-site/build/assets/js/f4817052.a5126a55.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/f9222419.eca02b22.js
Normal file
1
ccw/docs-site/build/assets/js/f9222419.eca02b22.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/fabaf1c8.811090ab.js
Normal file
1
ccw/docs-site/build/assets/js/fabaf1c8.811090ab.js
Normal file
File diff suppressed because one or more lines are too long
1
ccw/docs-site/build/assets/js/fe8e3dcf.0a78caef.js
Normal file
1
ccw/docs-site/build/assets/js/fe8e3dcf.0a78caef.js
Normal file
File diff suppressed because one or more lines are too long
2
ccw/docs-site/build/assets/js/main.6c671094.js
Normal file
2
ccw/docs-site/build/assets/js/main.6c671094.js
Normal file
File diff suppressed because one or more lines are too long
51
ccw/docs-site/build/assets/js/main.6c671094.js.LICENSE.txt
Normal file
51
ccw/docs-site/build/assets/js/main.6c671094.js.LICENSE.txt
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
|
||||||
|
* @license MIT */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react-dom.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react-jsx-runtime.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* scheduler.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @license React v16.13.1
|
||||||
|
* react-is.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
1
ccw/docs-site/build/assets/js/runtime~main.cbfbf29d.js
Normal file
1
ccw/docs-site/build/assets/js/runtime~main.cbfbf29d.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(()=>{"use strict";var e,a,r,t,f,c={},o={};function b(e){var a=o[e];if(void 0!==a)return a.exports;var r=o[e]={exports:{}};return c[e].call(r.exports,r,r.exports,b),r.exports}b.m=c,e=[],b.O=(a,r,t,f)=>{if(!r){var c=1/0;for(i=0;i<e.length;i++){for(var[r,t,f]=e[i],o=!0,d=0;d<r.length;d++)(!1&f||c>=f)&&Object.keys(b.O).every(e=>b.O[e](r[d]))?r.splice(d--,1):(o=!1,f<c&&(c=f));if(o){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[r,t,f]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var f=Object.create(null);b.r(f);var c={};a=a||[null,r({}),r([]),r(r)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~a.indexOf(o);o=r(o))Object.getOwnPropertyNames(o).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,b.d(f,c),f},b.d=(e,a)=>{for(var r in a)b.o(a,r)&&!b.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce((a,r)=>(b.f[r](e,a),a),[])),b.u=e=>"assets/js/"+({11:"ea313555",17:"ccef5d0f",47:"157db180",48:"a94703ab",57:"19b64556",98:"a7bd4aaa",121:"5c7b2278",142:"0566a0a8",148:"4cc74730",235:"18891827",241:"d045285b",268:"60eef997",288:"666bb1bf",368:"186dcf4e",401:"17896441",407:"611877e1",411:"d550a629",412:"1bac9067",448:"f9222419",482:"c5a82d8d",511:"bdb2b105",647:"5e95c892",725:"bcf6b37c",742:"aba21aa0",777:"fabaf1c8",814:"97c6e66a",816:"a2065270",849:"4ad7db0f",856:"2ecf8b4a",896:"f4817052",927:"04db0a2e",934:"7a1ee27c",954:"f1bf82ec",971:"fe8e3dcf",973:"9f4ca91e",975:"1e3006f3",991:"a6c3df16"}[e]||e)+"."+{11:"4eea9e04",17:"421f57e1",47:"4fb84679",48:"5b347b84",57:"a6163a0a",98:"5f0b376e",121:"0eaf76aa",142:"13f3324d",148:"4af80d66",235:"d20470dc",241:"73fb2bfa",268:"a1401c2f",288:"2da41127",368:"dc0319e0",401:"a28ce98e",407:"71e7b278",411:"41f98adf",412:"2e1f90de",448:"eca02b22",482:"c941bbe4",511:"00be57de",647:"1a07266b",723:"b1cb938e",725:"19ccccf7",742:"dc3eeab8",777:"811090ab",814:"baa03fb6",816:"088080b0",849:"62c9b350",856:"9d518d70",896:"a5126a55",927:"2c353bc4",934:"67535332",954:"e2a6e8e1",971:"0a78caef",973:"ea7dd9f3",975:"6141b6ef",991:"fddd53e1"}[e]+".js",b.miniCssF=e=>{},b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},f="ccw-docs:",b.l=(e,a,r,c)=>{if(t[e])t[e].push(a);else{var o,d;if(void 0!==r)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==f+r){o=l;break}}o||(d=!0,(o=document.createElement("script")).charset="utf-8",b.nc&&o.setAttribute("nonce",b.nc),o.setAttribute("data-webpack",f+r),o.src=e),t[e]=[a];var u=(a,r)=>{o.onerror=o.onload=null,clearTimeout(s);var f=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),f&&f.forEach(e=>e(r)),a)return a(r)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=u.bind(null,o.onerror),o.onload=u.bind(null,o.onload),d&&document.head.appendChild(o)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/docs/",b.gca=function(e){return e={17896441:"401",18891827:"235",ea313555:"11",ccef5d0f:"17","157db180":"47",a94703ab:"48","19b64556":"57",a7bd4aaa:"98","5c7b2278":"121","0566a0a8":"142","4cc74730":"148",d045285b:"241","60eef997":"268","666bb1bf":"288","186dcf4e":"368","611877e1":"407",d550a629:"411","1bac9067":"412",f9222419:"448",c5a82d8d:"482",bdb2b105:"511","5e95c892":"647",bcf6b37c:"725",aba21aa0:"742",fabaf1c8:"777","97c6e66a":"814",a2065270:"816","4ad7db0f":"849","2ecf8b4a":"856",f4817052:"896","04db0a2e":"927","7a1ee27c":"934",f1bf82ec:"954",fe8e3dcf:"971","9f4ca91e":"973","1e3006f3":"975",a6c3df16:"991"}[e]||e,b.p+b.u(e)},(()=>{var e={354:0,869:0};b.f.j=(a,r)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var f=new Promise((r,f)=>t=e[a]=[r,f]);r.push(t[2]=f);var c=b.p+b.u(a),o=new Error;b.l(c,r=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var f=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;o.message="Loading chunk "+a+" failed.\n("+f+": "+c+")",o.name="ChunkLoadError",o.type=f,o.request=c,t[1](o)}},"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,r)=>{var t,f,[c,o,d]=r,n=0;if(c.some(a=>0!==e[a])){for(t in o)b.o(o,t)&&(b.m[t]=o[t]);if(d)var i=d(b)}for(a&&a(r);n<c.length;n++)f=c[n],b.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return b.O(i)},r=globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})();
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user