maskweaver 0.9.3 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +279 -325
- package/README.md +109 -113
- package/assets/commands/meta/commands.json +34 -34
- package/assets/commands/weave-agents.md +12 -52
- package/assets/commands/weave-approve.md +12 -51
- package/assets/commands/weave-archive.md +21 -0
- package/assets/commands/weave-build.md +20 -89
- package/assets/commands/weave-craft.md +22 -43
- package/assets/commands/weave-help.md +37 -106
- package/assets/commands/weave-init.md +26 -108
- package/assets/commands/weave-interview.md +13 -111
- package/assets/commands/weave-map.md +13 -99
- package/assets/commands/weave-prepare.md +23 -69
- package/assets/commands/weave-refine-plan.md +26 -59
- package/assets/commands/weave-repair.md +22 -70
- package/assets/commands/weave-status.md +22 -155
- package/assets/commands/weave-troubleshoot.md +11 -47
- package/assets/commands/weave-verify.md +23 -44
- package/assets/commands/weave-worktree.md +27 -69
- package/dist/cli/doctor.js +5 -21
- package/dist/cli/install.d.ts +0 -8
- package/dist/cli/install.js +0 -39
- package/dist/context/config.d.ts +0 -22
- package/dist/context/config.js +0 -28
- package/dist/context/feature.d.ts +0 -39
- package/dist/context/feature.js +0 -77
- package/dist/context/files.d.ts +0 -13
- package/dist/context/files.js +1 -24
- package/dist/context/index.d.ts +0 -7
- package/dist/context/index.js +0 -12
- package/dist/context/project.d.ts +0 -21
- package/dist/context/project.js +0 -30
- package/dist/context/types.d.ts +0 -48
- package/dist/context/types.js +0 -12
- package/dist/context/utils.d.ts +0 -18
- package/dist/context/utils.js +0 -27
- package/dist/core/engine/promptBuilder.d.ts +0 -17
- package/dist/core/engine/promptBuilder.js +0 -28
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.js +0 -9
- package/dist/core/loader/MaskLoader.d.ts +0 -23
- package/dist/core/loader/MaskLoader.js +0 -29
- package/dist/core/schema/types.d.ts +0 -47
- package/dist/core/schema/types.js +0 -6
- package/dist/core/schema/validator.d.ts +0 -14
- package/dist/core/schema/validator.js +0 -18
- package/dist/i18n/index.d.ts +0 -18
- package/dist/i18n/index.js +4 -23
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -8
- package/dist/lib.d.ts +0 -5
- package/dist/lib.js +0 -12
- package/dist/memory/chunking.d.ts +0 -22
- package/dist/memory/chunking.js +2 -37
- package/dist/memory/core.d.ts +0 -29
- package/dist/memory/core.js +1 -52
- package/dist/memory/index.d.ts +0 -5
- package/dist/memory/index.js +0 -10
- package/dist/memory/indexer.d.ts +0 -21
- package/dist/memory/indexer.js +0 -44
- package/dist/memory/providers/examples.d.ts +0 -5
- package/dist/memory/providers/examples.js +4 -64
- package/dist/memory/providers/factory.d.ts +0 -44
- package/dist/memory/providers/factory.js +0 -46
- package/dist/memory/providers/index.d.ts +0 -26
- package/dist/memory/providers/index.js +0 -28
- package/dist/memory/providers/ollama.d.ts +0 -6
- package/dist/memory/providers/ollama.js +1 -8
- package/dist/memory/providers/openai.d.ts +0 -6
- package/dist/memory/providers/openai.js +1 -8
- package/dist/memory/providers/openrouter.d.ts +0 -6
- package/dist/memory/providers/openrouter.js +0 -8
- package/dist/memory/providers/text-only.d.ts +0 -13
- package/dist/memory/providers/text-only.js +0 -17
- package/dist/memory/providers/types.d.ts +0 -39
- package/dist/memory/providers/types.js +0 -7
- package/dist/memory/providers/voyage.d.ts +0 -22
- package/dist/memory/providers/voyage.js +1 -24
- package/dist/memory/search/hybrid.d.ts +0 -12
- package/dist/memory/search/hybrid.js +1 -22
- package/dist/memory/store/sqlite.d.ts +0 -72
- package/dist/memory/store/sqlite.js +4 -127
- package/dist/plugin/config/index.d.ts +0 -112
- package/dist/plugin/config/index.js +0 -115
- package/dist/plugin/index.d.ts +0 -13
- package/dist/plugin/index.js +1 -124
- package/dist/plugin/tools/command-registry.d.ts +0 -6
- package/dist/plugin/tools/command-registry.js +0 -14
- package/dist/plugin/tools/context.d.ts +0 -12
- package/dist/plugin/tools/context.js +0 -58
- package/dist/plugin/tools/maskSave.d.ts +0 -3
- package/dist/plugin/tools/maskSave.js +0 -3
- package/dist/plugin/tools/memoryGet.d.ts +0 -3
- package/dist/plugin/tools/memoryGet.js +0 -3
- package/dist/plugin/tools/memoryIndexer.d.ts +0 -3
- package/dist/plugin/tools/memoryIndexer.js +0 -10
- package/dist/plugin/tools/memorySearch.d.ts +0 -31
- package/dist/plugin/tools/memorySearch.js +0 -79
- package/dist/plugin/tools/memoryWrite.d.ts +0 -8
- package/dist/plugin/tools/memoryWrite.js +0 -32
- package/dist/plugin/tools/retrospect.d.ts +0 -3
- package/dist/plugin/tools/retrospect.js +0 -3
- package/dist/plugin/tools/slashcommand.d.ts +0 -11
- package/dist/plugin/tools/slashcommand.js +0 -38
- package/dist/plugin/tools/squad.d.ts +0 -12
- package/dist/plugin/tools/squad.js +11 -83
- package/dist/plugin/tools/weave.d.ts +0 -6
- package/dist/plugin/tools/weave.js +0 -78
- package/dist/plugin/types.d.ts +0 -20
- package/dist/plugin/types.js +0 -7
- package/dist/retrospect/index.d.ts +0 -7
- package/dist/retrospect/index.js +0 -9
- package/dist/retrospect/mask-save.d.ts +0 -12
- package/dist/retrospect/mask-save.js +1 -80
- package/dist/retrospect/retrospect.d.ts +0 -18
- package/dist/retrospect/retrospect.js +0 -63
- package/dist/retrospect/strategies/base.d.ts +0 -15
- package/dist/retrospect/strategies/base.js +0 -7
- package/dist/retrospect/strategies/deep.d.ts +0 -12
- package/dist/retrospect/strategies/deep.js +0 -24
- package/dist/retrospect/strategies/index.d.ts +0 -12
- package/dist/retrospect/strategies/index.js +0 -12
- package/dist/retrospect/strategies/quick.d.ts +0 -12
- package/dist/retrospect/strategies/quick.js +0 -19
- package/dist/retrospect/strategies/standard.d.ts +0 -12
- package/dist/retrospect/strategies/standard.js +0 -15
- package/dist/retrospect/types.d.ts +0 -7
- package/dist/retrospect/types.js +0 -7
- package/dist/shared/config.d.ts +0 -105
- package/dist/shared/config.js +0 -33
- package/dist/shared/errors.d.ts +0 -18
- package/dist/shared/errors.js +0 -19
- package/dist/shared/generate-agents.d.ts +0 -69
- package/dist/shared/generate-agents.js +2 -86
- package/dist/shared/image.d.ts +0 -67
- package/dist/shared/image.js +6 -104
- package/dist/shared/index.d.ts +0 -5
- package/dist/shared/index.js +0 -7
- package/dist/shared/model-registry.d.ts +0 -72
- package/dist/shared/model-registry.js +5 -95
- package/dist/shared/types.d.ts +0 -15
- package/dist/shared/types.js +0 -3
- package/dist/shared-context/dag.d.ts +0 -105
- package/dist/shared-context/dag.js +3 -114
- package/dist/shared-context/index.d.ts +0 -5
- package/dist/shared-context/index.js +0 -15
- package/dist/shared-context/logger.d.ts +0 -37
- package/dist/shared-context/logger.js +0 -41
- package/dist/shared-context/parallel-executor.d.ts +0 -54
- package/dist/shared-context/parallel-executor.js +4 -56
- package/dist/shared-context/session.d.ts +0 -56
- package/dist/shared-context/session.js +0 -47
- package/dist/shared-context/squad.d.ts +0 -68
- package/dist/shared-context/squad.js +0 -63
- package/dist/shared-context/storage.d.ts +0 -132
- package/dist/shared-context/storage.js +0 -116
- package/dist/shared-context/task.d.ts +0 -120
- package/dist/shared-context/task.js +0 -152
- package/dist/shared-context/test/dag.test.js +9 -14
- package/dist/shared-context/test/logger.test.d.ts +0 -8
- package/dist/shared-context/test/logger.test.js +0 -52
- package/dist/shared-context/test/session.test.d.ts +0 -7
- package/dist/shared-context/test/session.test.js +0 -63
- package/dist/shared-context/test/squad.test.d.ts +0 -10
- package/dist/shared-context/test/squad.test.js +2 -68
- package/dist/shared-context/test/storage.test.d.ts +0 -8
- package/dist/shared-context/test/storage.test.js +0 -68
- package/dist/shared-context/test/task.test.d.ts +0 -7
- package/dist/shared-context/test/task.test.js +0 -54
- package/dist/shared-context/test/watchdog.test.d.ts +0 -7
- package/dist/shared-context/test/watchdog.test.js +3 -58
- package/dist/shared-context/types.d.ts +0 -215
- package/dist/shared-context/types.js +0 -125
- package/dist/shared-context/watchdog.d.ts +0 -127
- package/dist/shared-context/watchdog.js +0 -148
- package/dist/shared-context/worktree.d.ts +0 -68
- package/dist/shared-context/worktree.js +2 -34
- package/dist/verify/budget.d.ts +0 -29
- package/dist/verify/budget.js +0 -34
- package/dist/verify/critical-files.d.ts +0 -17
- package/dist/verify/critical-files.js +0 -37
- package/dist/verify/escalation.d.ts +0 -20
- package/dist/verify/escalation.js +0 -22
- package/dist/verify/index.d.ts +0 -5
- package/dist/verify/index.js +0 -11
- package/dist/verify/prompts.d.ts +0 -20
- package/dist/verify/prompts.js +0 -20
- package/dist/verify/types.d.ts +0 -26
- package/dist/verify/types.js +1 -12
- package/dist/verify/verifier.d.ts +0 -29
- package/dist/verify/verifier.js +0 -54
- package/dist/version.d.ts +1 -16
- package/dist/version.js +1 -16
- package/dist/weave/bridge.d.ts +0 -35
- package/dist/weave/bridge.js +0 -51
- package/dist/weave/environment/detector.d.ts +0 -6
- package/dist/weave/environment/detector.js +4 -45
- package/dist/weave/environment/index.d.ts +0 -19
- package/dist/weave/environment/index.js +1 -39
- package/dist/weave/environment/issues.d.ts +0 -35
- package/dist/weave/environment/issues.js +0 -59
- package/dist/weave/git.d.ts +0 -8
- package/dist/weave/git.js +0 -8
- package/dist/weave/index.d.ts +0 -13
- package/dist/weave/index.js +2 -28
- package/dist/weave/knowledge/global.d.ts +0 -39
- package/dist/weave/knowledge/global.js +2 -78
- package/dist/weave/loop.js +0 -3
- package/dist/weave/orchestrator.d.ts +0 -69
- package/dist/weave/orchestrator.js +1 -101
- package/dist/weave/phase-manager.d.ts +0 -64
- package/dist/weave/phase-manager.js +0 -89
- package/dist/weave/security/secret-scan.d.ts +0 -14
- package/dist/weave/security/secret-scan.js +0 -19
- package/dist/weave/stages/build.js +0 -15
- package/dist/weave/stages/execute.d.ts +0 -42
- package/dist/weave/stages/execute.js +4 -86
- package/dist/weave/stages/handoff.d.ts +0 -7
- package/dist/weave/stages/handoff.js +0 -43
- package/dist/weave/stages/index.d.ts +0 -3
- package/dist/weave/stages/index.js +0 -3
- package/dist/weave/stages/intake.d.ts +0 -8
- package/dist/weave/stages/intake.js +5 -65
- package/dist/weave/stages/map.d.ts +0 -1
- package/dist/weave/stages/openspec.d.ts +0 -1
- package/dist/weave/stages/plan.d.ts +0 -11
- package/dist/weave/stages/plan.js +1 -53
- package/dist/weave/stages/refine.d.ts +0 -7
- package/dist/weave/stages/refine.js +0 -7
- package/dist/weave/stages/research.d.ts +0 -6
- package/dist/weave/stages/research.js +0 -6
- package/dist/weave/stages/spec.d.ts +0 -12
- package/dist/weave/stages/spec.js +0 -17
- package/dist/weave/types.d.ts +0 -20
- package/dist/weave/types.js +0 -5
- package/dist/weave/verification/commands.d.ts +0 -12
- package/dist/weave/verification/commands.js +0 -19
- package/dist/weave/verification/index.d.ts +0 -6
- package/dist/weave/verification/index.js +1 -19
- package/dist/weave/verification/playwright.d.ts +0 -47
- package/dist/weave/verification/playwright.js +1 -90
- package/dist/weave/worktree.d.ts +0 -16
- package/dist/weave/worktree.js +0 -23
- package/dist/weave/yaml-repair.d.ts +0 -39
- package/dist/weave/yaml-repair.js +13 -116
- package/package.json +1 -1
|
@@ -1,155 +1,22 @@
|
|
|
1
|
-
---
|
|
2
|
-
description:
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /weave-status
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
1. .opencode/weave/state.yaml 읽기 → active_plan 확인
|
|
25
|
-
2. .opencode/weave/plans/ 디렉토리의 모든 .yaml 파일 목록 확인
|
|
26
|
-
3. 각 플랜 파일 읽어서 상태 집계
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
**state.yaml이 없는 경우**:
|
|
30
|
-
```markdown
|
|
31
|
-
📋 Weave가 초기화되지 않았습니다.
|
|
32
|
-
|
|
33
|
-
시작하려면: `/weave-init`
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**플랜이 하나도 없는 경우**:
|
|
37
|
-
```markdown
|
|
38
|
-
📋 아직 플랜이 없습니다.
|
|
39
|
-
|
|
40
|
-
새 플랜을 만들려면: `/weave-design [docs-path]`
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## 출력: 전체 개요 (`/weave-status`)
|
|
46
|
-
|
|
47
|
-
```markdown
|
|
48
|
-
## 📊 Weave 상태
|
|
49
|
-
|
|
50
|
-
### 활성 플랜: `emotion-diary`
|
|
51
|
-
**감정 일기 앱** — 진행률 40%
|
|
52
|
-
|
|
53
|
-
[████████░░░░░░░░░░░░] 2/5
|
|
54
|
-
|
|
55
|
-
| Phase | 이름 | 상태 | 마스크 |
|
|
56
|
-
|-------|------|------|--------|
|
|
57
|
-
| P1 | 감정 선택 UI | ✅ 완료 (2.5h) | kent-beck, dan-abramov |
|
|
58
|
-
| P2 | 감정 저장 | 🔄 진행 중 | kent-beck |
|
|
59
|
-
| P3 | 히스토리 뷰 | ⏳ 대기 | |
|
|
60
|
-
| P4 | 통계 시각화 | ⏳ 대기 | |
|
|
61
|
-
| P5 | 테마 설정 | ⏳ 대기 | |
|
|
62
|
-
|
|
63
|
-
**다음**: `/weave-craft P2`
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
### 전체 플랜 목록
|
|
68
|
-
|
|
69
|
-
| 플랜 | 프로젝트 | 상태 | 진행률 |
|
|
70
|
-
|------|---------|------|--------|
|
|
71
|
-
| 📌 `emotion-diary` | 감정 일기 앱 | active | 40% (2/5) |
|
|
72
|
-
| `todo-app` | Todo 앱 | paused | 60% (3/5) |
|
|
73
|
-
| `auth-module` | 인증 모듈 | completed | 100% (4/4) |
|
|
74
|
-
|
|
75
|
-
플랜 전환: `/weave-switch [플랜이름]`
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 출력: 특정 플랜 상세 (`/weave-status {plan-name}`)
|
|
81
|
-
|
|
82
|
-
```markdown
|
|
83
|
-
## 📊 플랜: `todo-app`
|
|
84
|
-
|
|
85
|
-
**Todo 앱** — 상태: paused — 진행률 60%
|
|
86
|
-
|
|
87
|
-
[████████████░░░░░░░░] 3/5
|
|
88
|
-
|
|
89
|
-
### 비전
|
|
90
|
-
사용자가 간단하게 할 일을 관리할 수 있는 웹 앱
|
|
91
|
-
|
|
92
|
-
### Phases
|
|
93
|
-
| Phase | 이름 | 상태 | 소요 시간 | 마스크 |
|
|
94
|
-
|-------|------|------|----------|--------|
|
|
95
|
-
| P1 | 기본 UI | ✅ 완료 | 2h | dan-abramov |
|
|
96
|
-
| P2 | CRUD API | ✅ 완료 | 3h | martin-fowler |
|
|
97
|
-
| P3 | 필터/정렬 | ✅ 완료 | 1.5h | kent-beck |
|
|
98
|
-
| P4 | 드래그 정렬 | ⏳ 대기 | | |
|
|
99
|
-
| P5 | PWA 지원 | ⏳ 대기 | | |
|
|
100
|
-
|
|
101
|
-
### 아키텍처
|
|
102
|
-
- Frontend: React + TypeScript
|
|
103
|
-
- Backend: Express.js
|
|
104
|
-
- Database: SQLite
|
|
105
|
-
|
|
106
|
-
이 플랜으로 전환: `/weave-switch todo-app`
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## 출력: 특정 Phase 상세 (`/weave-status P2`)
|
|
112
|
-
|
|
113
|
-
활성 플랜의 해당 Phase를 상세 표시:
|
|
114
|
-
|
|
115
|
-
```markdown
|
|
116
|
-
## Phase P2: 감정 저장
|
|
117
|
-
|
|
118
|
-
**플랜**: `emotion-diary`
|
|
119
|
-
**상태**: 🔄 진행 중
|
|
120
|
-
**시작**: 2026-02-06 10:30
|
|
121
|
-
**경과**: 1.5시간
|
|
122
|
-
|
|
123
|
-
### 사용된 마스크
|
|
124
|
-
- Kent Beck
|
|
125
|
-
|
|
126
|
-
### 발생한 이슈
|
|
127
|
-
- 1회 재시도: JSON 직렬화 오류 → 해결됨
|
|
128
|
-
|
|
129
|
-
### 다음
|
|
130
|
-
`/weave-craft P2` — 계속 진행
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## 상태 아이콘
|
|
136
|
-
|
|
137
|
-
| 아이콘 | 상태 |
|
|
138
|
-
|--------|------|
|
|
139
|
-
| ✅ | 완료 (completed) |
|
|
140
|
-
| 🔄 | 진행 중 (in_progress) |
|
|
141
|
-
| ⏳ | 대기 (pending) |
|
|
142
|
-
| 🚫 | 차단됨 (의존성 미완료) |
|
|
143
|
-
| 📌 | 활성 플랜 표시 |
|
|
144
|
-
| ⏸️ | 일시정지 (paused) |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 플랜 상태 종류
|
|
149
|
-
|
|
150
|
-
| 상태 | 의미 |
|
|
151
|
-
|------|------|
|
|
152
|
-
| `active` | 현재 작업 중인 플랜 |
|
|
153
|
-
| `paused` | 일시 중단 (다른 플랜 작업 중) |
|
|
154
|
-
| `completed` | 모든 Phase 완료 |
|
|
155
|
-
| `archived` | 보관됨 (목록에서 숨김, --all로 표시) |
|
|
1
|
+
---
|
|
2
|
+
description: View plans, active phase, and progress
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-status
|
|
6
|
+
|
|
7
|
+
Show the current Weave state.
|
|
8
|
+
|
|
9
|
+
Use the `weave` tool:
|
|
10
|
+
|
|
11
|
+
```txt
|
|
12
|
+
weave command=status
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## What It Reports
|
|
16
|
+
|
|
17
|
+
- Whether Weave has been initialized.
|
|
18
|
+
- Active plan and available plans.
|
|
19
|
+
- Phase status and next recommended action.
|
|
20
|
+
- Blocked, paused, completed, or archived work.
|
|
21
|
+
|
|
22
|
+
Use this when resuming a project, switching plans, or checking whether a build or phase still needs verification.
|
|
@@ -1,57 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Search global knowledge for solutions or record a new one
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /weave-troubleshoot
|
|
5
|
+
# /weave-troubleshoot
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Search prior solution knowledge for an error, or record a new solution.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Use the `weave` tool:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## 사용법
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# 해결책 검색
|
|
19
|
-
/weave-troubleshoot "Cannot find module 'xyz'"
|
|
20
|
-
|
|
21
|
-
# 새 해결책 기록
|
|
22
|
-
/weave-troubleshoot --record error="..." solution="..."
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 입력
|
|
28
|
-
|
|
29
|
-
```yaml
|
|
30
|
-
error: "..." # (검색 시 필수) 검색할 에러 메시지
|
|
31
|
-
record: true # (선택) 기록 모드 활성화
|
|
32
|
-
solution: "..." # (record 시 필수) 기록할 해결책
|
|
33
|
-
context: "..." # (선택) 추가 맥락
|
|
11
|
+
```txt
|
|
12
|
+
weave command=troubleshoot error="Cannot find module 'xyz'"
|
|
13
|
+
weave command=troubleshoot record=true error="..." solution="..." context="..."
|
|
34
14
|
```
|
|
35
15
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## 출력 예시
|
|
16
|
+
## Modes
|
|
39
17
|
|
|
40
|
-
|
|
18
|
+
- Search mode: provide `error`.
|
|
19
|
+
- Record mode: set `record=true` and provide `solution`.
|
|
41
20
|
|
|
42
|
-
|
|
43
|
-
## 💡 유사한 해결책 발견
|
|
44
|
-
|
|
45
|
-
### 1. (exact, 점수: 95%)
|
|
46
|
-
**상황**: Cannot find module 'react'
|
|
47
|
-
**해결책**: npm install react react-dom
|
|
48
|
-
**효과성**: ⭐⭐⭐⭐⭐
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### 기록
|
|
52
|
-
|
|
53
|
-
```markdown
|
|
54
|
-
✅ 트러블슈팅 솔루션이 기록되었습니다 (ID: 42)
|
|
55
|
-
|
|
56
|
-
다음에 비슷한 에러가 발생하면 자동으로 이 해결책을 제안합니다.
|
|
57
|
-
```
|
|
21
|
+
Record only solutions that were actually validated. Prefer the exact command, config change, or code path that fixed the issue.
|
|
@@ -1,44 +1,23 @@
|
|
|
1
|
-
---
|
|
2
|
-
description:
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /weave-verify
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
weave command=verify
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
프로젝트 타입 힌트를 주고 싶으면:
|
|
28
|
-
|
|
29
|
-
```txt
|
|
30
|
-
weave command=verify projectType="go"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
빠르게(typecheck+tests만) 돌리려면:
|
|
34
|
-
|
|
35
|
-
```txt
|
|
36
|
-
weave command=verify verifyMode="quick"
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 결과
|
|
42
|
-
|
|
43
|
-
- PASS면 `✅ Verification passed.`
|
|
44
|
-
- FAIL이면 실패한 레이어와 로그(tail)를 출력합니다
|
|
1
|
+
---
|
|
2
|
+
description: Run build and test verification for the current worktree
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-verify
|
|
6
|
+
|
|
7
|
+
Run project-appropriate build and test checks in the current worktree.
|
|
8
|
+
|
|
9
|
+
Use the `weave` tool:
|
|
10
|
+
|
|
11
|
+
```txt
|
|
12
|
+
weave command=verify
|
|
13
|
+
weave command=verify verifyMode=quick
|
|
14
|
+
weave command=verify projectType="go"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Behavior
|
|
18
|
+
|
|
19
|
+
- Detects common project types from files in the project root.
|
|
20
|
+
- Recommends or runs build/test commands for Node, Go, Rust, Python, .NET, and similar stacks.
|
|
21
|
+
- Reports command output and failure tails so the next action is clear.
|
|
22
|
+
|
|
23
|
+
Verification evidence matters more than workflow metadata. Treat failing builds/tests as blockers unless the failure is clearly unrelated and already known.
|
|
@@ -1,69 +1,27 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: git
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /weave-worktree
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
```txt
|
|
30
|
-
weave command=worktree worktreeAction=list
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### 3) 경로 확인(열기)
|
|
34
|
-
|
|
35
|
-
```txt
|
|
36
|
-
weave command=worktree worktreeAction=open name="feature-login"
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
해당 폴더로 이동한 뒤, 평소처럼 진행하면 됩니다:
|
|
40
|
-
|
|
41
|
-
```txt
|
|
42
|
-
/weave-prepare docs/
|
|
43
|
-
weave craft P1
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### 4) 병합 가이드
|
|
47
|
-
|
|
48
|
-
```txt
|
|
49
|
-
weave command=worktree worktreeAction=merge name="feature-login"
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 5) worktree 제거
|
|
53
|
-
|
|
54
|
-
```txt
|
|
55
|
-
weave command=worktree worktreeAction=remove name="feature-login"
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
브랜치까지 삭제하려면:
|
|
59
|
-
|
|
60
|
-
```txt
|
|
61
|
-
weave command=worktree worktreeAction=remove name="feature-login" deleteBranch=true
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 주의(권장 정책)
|
|
67
|
-
|
|
68
|
-
- 같은 파일/설정(package-lock, tsconfig 등)을 동시에 바꾸는 작업은 병렬 worktree라도 merge conflict 가능성이 큽니다
|
|
69
|
-
- DB 마이그레이션/스키마 변경은 원칙적으로 순차 진행을 권장합니다
|
|
1
|
+
---
|
|
2
|
+
description: Manage git worktrees for parallel phase or feature work
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-worktree
|
|
6
|
+
|
|
7
|
+
Manage git worktrees so multiple phases or features can be worked on in separate directories.
|
|
8
|
+
|
|
9
|
+
Use the `weave` tool:
|
|
10
|
+
|
|
11
|
+
```txt
|
|
12
|
+
weave command=worktree worktreeAction=create name="feature-login"
|
|
13
|
+
weave command=worktree worktreeAction=list
|
|
14
|
+
weave command=worktree worktreeAction=open name="feature-login"
|
|
15
|
+
weave command=worktree worktreeAction=merge name="feature-login"
|
|
16
|
+
weave command=worktree worktreeAction=remove name="feature-login"
|
|
17
|
+
weave command=worktree worktreeAction=remove name="feature-login" deleteBranch=true
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Policy
|
|
21
|
+
|
|
22
|
+
- Use worktrees for independent phases or features that can progress in parallel.
|
|
23
|
+
- Avoid parallel worktrees when multiple tasks will edit the same lockfile, schema, generated artifact, or central config.
|
|
24
|
+
- Bootstrap Weave artifacts into the new worktree so the user does not need to run `/weave-init` again.
|
|
25
|
+
- Merge from the main worktree, resolve conflicts, then run integration verification once.
|
|
26
|
+
|
|
27
|
+
This command explains git behavior without hiding it: each worktree has its own directory and branch, but merge conflicts are still possible when the same files change.
|
package/dist/cli/doctor.js
CHANGED
|
@@ -3,9 +3,6 @@ import * as path from "node:path";
|
|
|
3
3
|
import * as os from "node:os";
|
|
4
4
|
import { spawnSync } from "node:child_process";
|
|
5
5
|
import { VERSION } from "../version.js";
|
|
6
|
-
// ============================================================================
|
|
7
|
-
// Constants
|
|
8
|
-
// ============================================================================
|
|
9
6
|
const MIN_OPENCODE_VERSION = "1.0.0";
|
|
10
7
|
const PLUGIN_NAME = "maskweaver";
|
|
11
8
|
const colors = {
|
|
@@ -18,9 +15,6 @@ const colors = {
|
|
|
18
15
|
blue: "\x1b[34m",
|
|
19
16
|
cyan: "\x1b[36m",
|
|
20
17
|
};
|
|
21
|
-
// ============================================================================
|
|
22
|
-
// Utilities
|
|
23
|
-
// ============================================================================
|
|
24
18
|
function icon(status) {
|
|
25
19
|
switch (status) {
|
|
26
20
|
case "pass": return `${colors.green}✓${colors.reset}`;
|
|
@@ -56,9 +50,6 @@ function compareVersions(current, minimum) {
|
|
|
56
50
|
}
|
|
57
51
|
return true;
|
|
58
52
|
}
|
|
59
|
-
// ============================================================================
|
|
60
|
-
// Checks
|
|
61
|
-
// ============================================================================
|
|
62
53
|
function checkOpenCodeVersion() {
|
|
63
54
|
try {
|
|
64
55
|
const result = spawnSync("opencode", ["--version"], {
|
|
@@ -107,7 +98,6 @@ function checkPluginRegistration() {
|
|
|
107
98
|
const projectConfig = path.join(projectDir, "opencode.json");
|
|
108
99
|
let foundIn = "";
|
|
109
100
|
let legacyEntry = "";
|
|
110
|
-
// Check global
|
|
111
101
|
if (fs.existsSync(globalConfig)) {
|
|
112
102
|
try {
|
|
113
103
|
const config = JSON.parse(fs.readFileSync(globalConfig, "utf-8"));
|
|
@@ -120,9 +110,8 @@ function checkPluginRegistration() {
|
|
|
120
110
|
}
|
|
121
111
|
}
|
|
122
112
|
}
|
|
123
|
-
catch {
|
|
113
|
+
catch { }
|
|
124
114
|
}
|
|
125
|
-
// Check project
|
|
126
115
|
if (!foundIn && fs.existsSync(projectConfig)) {
|
|
127
116
|
try {
|
|
128
117
|
const config = JSON.parse(fs.readFileSync(projectConfig, "utf-8"));
|
|
@@ -135,7 +124,7 @@ function checkPluginRegistration() {
|
|
|
135
124
|
}
|
|
136
125
|
}
|
|
137
126
|
}
|
|
138
|
-
catch {
|
|
127
|
+
catch { }
|
|
139
128
|
}
|
|
140
129
|
if (foundIn && legacyEntry) {
|
|
141
130
|
return {
|
|
@@ -203,7 +192,7 @@ function checkMasksDirectory() {
|
|
|
203
192
|
location = label;
|
|
204
193
|
}
|
|
205
194
|
}
|
|
206
|
-
catch {
|
|
195
|
+
catch { }
|
|
207
196
|
}
|
|
208
197
|
}
|
|
209
198
|
if (count > 0) {
|
|
@@ -230,7 +219,7 @@ function checkAgentFiles() {
|
|
|
230
219
|
const files = fs.readdirSync(dir).filter((f) => f.endsWith(".md"));
|
|
231
220
|
count += files.length;
|
|
232
221
|
}
|
|
233
|
-
catch {
|
|
222
|
+
catch { }
|
|
234
223
|
}
|
|
235
224
|
}
|
|
236
225
|
if (count > 0) {
|
|
@@ -257,7 +246,7 @@ function checkCommandFiles() {
|
|
|
257
246
|
const files = fs.readdirSync(dir).filter((f) => f.endsWith(".md"));
|
|
258
247
|
count += files.length;
|
|
259
248
|
}
|
|
260
|
-
catch {
|
|
249
|
+
catch { }
|
|
261
250
|
}
|
|
262
251
|
}
|
|
263
252
|
if (count > 0) {
|
|
@@ -276,7 +265,6 @@ function checkCommandFiles() {
|
|
|
276
265
|
}
|
|
277
266
|
function checkGdcIntegration() {
|
|
278
267
|
const projectDir = getProjectDir();
|
|
279
|
-
// Check for GDC-related files in .opencode
|
|
280
268
|
const weaveDir = path.join(projectDir, "weave");
|
|
281
269
|
if (fs.existsSync(weaveDir)) {
|
|
282
270
|
return {
|
|
@@ -285,7 +273,6 @@ function checkGdcIntegration() {
|
|
|
285
273
|
message: "weave/ 디렉토리 있음",
|
|
286
274
|
};
|
|
287
275
|
}
|
|
288
|
-
// Check for AGENTS.md (used by /init-deep)
|
|
289
276
|
const agentsMd = path.join(process.cwd(), "AGENTS.md");
|
|
290
277
|
if (fs.existsSync(agentsMd)) {
|
|
291
278
|
return {
|
|
@@ -301,9 +288,6 @@ function checkGdcIntegration() {
|
|
|
301
288
|
hint: "/weave init 으로 초기화하세요",
|
|
302
289
|
};
|
|
303
290
|
}
|
|
304
|
-
// ============================================================================
|
|
305
|
-
// Doctor Command
|
|
306
|
-
// ============================================================================
|
|
307
291
|
export function runDoctor() {
|
|
308
292
|
const results = [
|
|
309
293
|
checkOpenCodeVersion(),
|
package/dist/cli/install.d.ts
CHANGED
|
@@ -1,10 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Maskweaver CLI Installer
|
|
4
|
-
*
|
|
5
|
-
* Commands:
|
|
6
|
-
* - maskweaver install - Register plugin in opencode.json
|
|
7
|
-
* - maskweaver uninstall - Remove plugin from opencode.json
|
|
8
|
-
* - maskweaver status - Show current installation status
|
|
9
|
-
*/
|
|
10
2
|
export {};
|
package/dist/cli/install.js
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Maskweaver CLI Installer
|
|
4
|
-
*
|
|
5
|
-
* Commands:
|
|
6
|
-
* - maskweaver install - Register plugin in opencode.json
|
|
7
|
-
* - maskweaver uninstall - Remove plugin from opencode.json
|
|
8
|
-
* - maskweaver status - Show current installation status
|
|
9
|
-
*/
|
|
10
2
|
import { Command } from "commander";
|
|
11
3
|
import * as fs from "node:fs";
|
|
12
4
|
import * as path from "node:path";
|
|
@@ -14,14 +6,10 @@ import * as os from "node:os";
|
|
|
14
6
|
import { VERSION } from "../version.js";
|
|
15
7
|
import { runDoctor, printDoctorReport } from "./doctor.js";
|
|
16
8
|
import { writeDefaultRuntimeConfig, writeDefaultPluginConfig } from "../shared/generate-agents.js";
|
|
17
|
-
// ============================================================================
|
|
18
|
-
// Constants
|
|
19
|
-
// ============================================================================
|
|
20
9
|
const PLUGIN_NAME = "maskweaver";
|
|
21
10
|
const LEGACY_PLUGIN_NAMES = ["maskweaver/plugin", "@maskweaver/plugin"];
|
|
22
11
|
const ALL_PLUGIN_NAMES = [PLUGIN_NAME, ...LEGACY_PLUGIN_NAMES];
|
|
23
12
|
const CONFIG_NAME = "opencode.json";
|
|
24
|
-
// ANSI Colors
|
|
25
13
|
const colors = {
|
|
26
14
|
reset: "\x1b[0m",
|
|
27
15
|
bright: "\x1b[1m",
|
|
@@ -34,9 +22,6 @@ const colors = {
|
|
|
34
22
|
cyan: "\x1b[36m",
|
|
35
23
|
white: "\x1b[37m",
|
|
36
24
|
};
|
|
37
|
-
// ============================================================================
|
|
38
|
-
// Utilities
|
|
39
|
-
// ============================================================================
|
|
40
25
|
function log(message, color) {
|
|
41
26
|
const colorCode = color ? colors[color] : "";
|
|
42
27
|
console.log(`${colorCode}${message}${colors.reset}`);
|
|
@@ -112,9 +97,6 @@ function normalizePluginEntries(config) {
|
|
|
112
97
|
config.plugin = [...preserved, PLUGIN_NAME];
|
|
113
98
|
return { migratedFrom, changed: true };
|
|
114
99
|
}
|
|
115
|
-
// ============================================================================
|
|
116
|
-
// Commands
|
|
117
|
-
// ============================================================================
|
|
118
100
|
async function installPlugin(options) {
|
|
119
101
|
const isLocal = options.local || false;
|
|
120
102
|
const configPath = getConfigPath(isLocal);
|
|
@@ -126,9 +108,7 @@ async function installPlugin(options) {
|
|
|
126
108
|
info(`설정 파일: ${configPath}`);
|
|
127
109
|
log("");
|
|
128
110
|
try {
|
|
129
|
-
// Read or create config
|
|
130
111
|
let config = readConfig(configPath);
|
|
131
|
-
// Initialize plugin array if not exists
|
|
132
112
|
if (!config.plugin) {
|
|
133
113
|
config.plugin = [];
|
|
134
114
|
}
|
|
@@ -140,20 +120,16 @@ async function installPlugin(options) {
|
|
|
140
120
|
log("");
|
|
141
121
|
return;
|
|
142
122
|
}
|
|
143
|
-
// Check if already installed
|
|
144
123
|
if (config.plugin.includes(PLUGIN_NAME)) {
|
|
145
124
|
warning(`플러그인이 이미 설치되어 있습니다.`);
|
|
146
125
|
info(`현재 ${scope} 설정에 등록되어 있습니다: ${PLUGIN_NAME}`);
|
|
147
126
|
log("");
|
|
148
127
|
return;
|
|
149
128
|
}
|
|
150
|
-
// Add plugin
|
|
151
129
|
config.plugin.push(PLUGIN_NAME);
|
|
152
|
-
// Save config
|
|
153
130
|
writeConfig(configPath, config);
|
|
154
131
|
let createdRuntimeConfig = false;
|
|
155
132
|
let createdPluginConfig = false;
|
|
156
|
-
// Auto-create local maskweaver.config.json if not exists
|
|
157
133
|
if (isLocal) {
|
|
158
134
|
const runtimeCreated = writeDefaultRuntimeConfig(process.cwd());
|
|
159
135
|
if (runtimeCreated) {
|
|
@@ -202,7 +178,6 @@ async function uninstallPlugin(options) {
|
|
|
202
178
|
info(`설정 파일: ${configPath}`);
|
|
203
179
|
log("");
|
|
204
180
|
try {
|
|
205
|
-
// Read config
|
|
206
181
|
if (!fs.existsSync(configPath)) {
|
|
207
182
|
warning(`설정 파일이 존재하지 않습니다.`);
|
|
208
183
|
info(`플러그인이 설치되어 있지 않습니다.`);
|
|
@@ -210,19 +185,15 @@ async function uninstallPlugin(options) {
|
|
|
210
185
|
return;
|
|
211
186
|
}
|
|
212
187
|
let config = readConfig(configPath);
|
|
213
|
-
// Check if installed
|
|
214
188
|
if (!isPluginInstalled(config)) {
|
|
215
189
|
warning(`플러그인이 설치되어 있지 않습니다.`);
|
|
216
190
|
log("");
|
|
217
191
|
return;
|
|
218
192
|
}
|
|
219
|
-
// Remove plugin
|
|
220
193
|
config.plugin = config.plugin.filter((p) => !ALL_PLUGIN_NAMES.includes(p));
|
|
221
|
-
// Save config
|
|
222
194
|
writeConfig(configPath, config);
|
|
223
195
|
success(`플러그인이 성공적으로 제거되었습니다.`);
|
|
224
196
|
log("");
|
|
225
|
-
// Cleanup notice
|
|
226
197
|
log(`📋 정리 안내`, "bright");
|
|
227
198
|
log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`, "dim");
|
|
228
199
|
log("");
|
|
@@ -258,7 +229,6 @@ async function showStatus(options) {
|
|
|
258
229
|
log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`, "dim");
|
|
259
230
|
log("");
|
|
260
231
|
try {
|
|
261
|
-
// Check global installation
|
|
262
232
|
const globalPath = getConfigPath(false);
|
|
263
233
|
const globalConfig = readConfig(globalPath);
|
|
264
234
|
const globalInstalled = isPluginInstalled(globalConfig);
|
|
@@ -272,7 +242,6 @@ async function showStatus(options) {
|
|
|
272
242
|
log(` ❌ 미설치`, "dim");
|
|
273
243
|
}
|
|
274
244
|
log("");
|
|
275
|
-
// Check local installation
|
|
276
245
|
const localPath = getConfigPath(true);
|
|
277
246
|
const localConfig = fs.existsSync(localPath) ? readConfig(localPath) : {};
|
|
278
247
|
const localInstalled = isPluginInstalled(localConfig);
|
|
@@ -286,7 +255,6 @@ async function showStatus(options) {
|
|
|
286
255
|
log(` ❌ 미설치`, "dim");
|
|
287
256
|
}
|
|
288
257
|
log("");
|
|
289
|
-
// Show plugin info
|
|
290
258
|
if (globalInstalled || localInstalled) {
|
|
291
259
|
log(`ℹ️ 플러그인 정보:`, "cyan");
|
|
292
260
|
log(` 이름: ${PLUGIN_NAME}`, "dim");
|
|
@@ -299,7 +267,6 @@ async function showStatus(options) {
|
|
|
299
267
|
}
|
|
300
268
|
log("");
|
|
301
269
|
}
|
|
302
|
-
// Installation hint
|
|
303
270
|
if (!globalInstalled && !localInstalled) {
|
|
304
271
|
log(`설치하려면:`, "yellow");
|
|
305
272
|
log(` maskweaver install # 전역 설치`, "dim");
|
|
@@ -313,9 +280,6 @@ async function showStatus(options) {
|
|
|
313
280
|
process.exit(1);
|
|
314
281
|
}
|
|
315
282
|
}
|
|
316
|
-
// ============================================================================
|
|
317
|
-
// CLI Program
|
|
318
|
-
// ============================================================================
|
|
319
283
|
const program = new Command();
|
|
320
284
|
program
|
|
321
285
|
.name("maskweaver")
|
|
@@ -355,13 +319,10 @@ program
|
|
|
355
319
|
printDoctorReport(report);
|
|
356
320
|
process.exit(report.failed > 0 ? 1 : 0);
|
|
357
321
|
});
|
|
358
|
-
// Default action: show help
|
|
359
322
|
program.action(() => {
|
|
360
323
|
program.help();
|
|
361
324
|
});
|
|
362
|
-
// Parse command line arguments
|
|
363
325
|
program.parse(process.argv);
|
|
364
|
-
// Show help if no command provided
|
|
365
326
|
if (!process.argv.slice(2).length) {
|
|
366
327
|
program.help();
|
|
367
328
|
}
|