sonamu 0.8.21 → 0.8.23
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/dist/api/config.d.ts +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/sonamu.d.ts +1 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +14 -19
- package/dist/cone/cone-generator.js +29 -16
- package/dist/database/base-model.js +2 -2
- package/dist/database/db.d.ts +1 -1
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +1 -1
- package/dist/syncer/syncer.js +2 -2
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +4 -1
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +1 -4
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +11 -11
- package/dist/ui-web/assets/index-BrQKU3j9.css +1 -0
- package/dist/ui-web/assets/{index-DP968oXY.js → index-DIasN3Gt.js} +47 -47
- package/dist/ui-web/index.html +2 -2
- package/package.json +3 -3
- package/src/api/config.ts +1 -1
- package/src/api/sonamu.ts +15 -20
- package/src/cone/cone-generator.ts +39 -19
- package/src/database/base-model.ts +1 -1
- package/src/database/db.ts +1 -1
- package/src/skills/AGENTS.md +11 -1
- package/src/skills/sonamu/SKILL.md +42 -149
- package/src/skills/sonamu/cdd.md +172 -517
- package/src/skills/sonamu/cone.md +3 -4
- package/src/skills/sonamu/fixture-cli.md +1 -1
- package/src/skills/sonamu/workflow.md +72 -80
- package/src/syncer/syncer.ts +1 -1
- package/src/testing/dev-test-routes.ts +3 -0
- package/src/testing/global-setup.ts +0 -4
- package/src/ui/api.ts +6 -15
- package/dist/ui-web/assets/index-B7gc0Ygb.css +0 -1
- package/src/skills/project/business-logic.md +0 -270
- package/src/skills/project/requirements.md +0 -160
|
@@ -111,7 +111,7 @@ pnpm sonamu cone gen Post --locale en
|
|
|
111
111
|
#### LLM이 참조하는 정보
|
|
112
112
|
|
|
113
113
|
1. Entity JSON 구조 (props, subsets, enums, relations)
|
|
114
|
-
2.
|
|
114
|
+
2. 도메인 규칙 파일 (`contract/**/*.contract.md`)
|
|
115
115
|
3. 기존 cone 메타데이터 (보존 모드 시)
|
|
116
116
|
|
|
117
117
|
### 2. stub entity — Entity 생성 시 자동 cone 생성
|
|
@@ -302,9 +302,8 @@ relation prop에서 참조 데이터 조회 방식을 지정합니다.
|
|
|
302
302
|
|
|
303
303
|
### LLM cone 생성 품질 높이기
|
|
304
304
|
|
|
305
|
-
1.
|
|
306
|
-
2. `
|
|
307
|
-
3. `cone gen` 실행 — LLM이 이 파일들을 컨텍스트로 사용
|
|
305
|
+
1. `contract/{domain}/{domain}.contract.md`에 도메인 규칙과 결정 근거를 상세히 기록
|
|
306
|
+
2. `cone gen` 실행 — LLM이 `contract/**/*.contract.md`를 컨텍스트로 사용
|
|
308
307
|
|
|
309
308
|
### cone 재생성이 필요한 시점
|
|
310
309
|
|
|
@@ -49,7 +49,7 @@ production/development master (실제 DB)
|
|
|
49
49
|
|
|
50
50
|
faker 기반으로 새로운 테스트 데이터를 생성합니다.
|
|
51
51
|
|
|
52
|
-
**CRITICAL: `--use-llm` 옵션은 실제 프로젝트에서 항상 사용해야 한다.** `--use-llm` 없이 생성하면 cone.note 기반 도메인 맥락이 반영되지 않아 faker 기본값만 사용되므로, 의미 없는 데이터가 생성될 수 있다. LLM이 `
|
|
52
|
+
**CRITICAL: `--use-llm` 옵션은 실제 프로젝트에서 항상 사용해야 한다.** `--use-llm` 없이 생성하면 cone.note 기반 도메인 맥락이 반영되지 않아 faker 기본값만 사용되므로, 의미 없는 데이터가 생성될 수 있다. LLM이 `contract/**/*.contract.md`를 참조해 맥락에 맞는 데이터를 생성하려면 이 옵션이 필수이다.
|
|
53
53
|
|
|
54
54
|
**CRITICAL: fixture gen을 실행하기 전에 `cone.note`가 주요 prop에 존재하는지 확인한다.** cone.note가 없으면 LLM이 맥락을 파악할 수 없어 의미 있는 데이터 생성이 불가능하다. cone.note가 부족하면 `pnpm sonamu cone generate --use-llm`으로 cone을 재생성한다.
|
|
55
55
|
|
|
@@ -30,15 +30,14 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
30
30
|
2. Sonamu skills를 읽고 `pnpm create sonamu [프로젝트명] --yes`로 프로젝트 생성
|
|
31
31
|
3. `pnpm install` 실행
|
|
32
32
|
|
|
33
|
-
### 2. 요구사항
|
|
33
|
+
### 2. 요구사항 파악 및 도메인 식별
|
|
34
34
|
|
|
35
|
-
**CRITICAL: 이 단계(Step 4~
|
|
35
|
+
**CRITICAL: 이 단계(Step 4~5)를 완료하기 전에 auth generate나 인프라 기동으로 넘어가지 않는다.**
|
|
36
36
|
|
|
37
|
-
4.
|
|
38
|
-
5. 비즈니스 로직 파악 후 **작은 단위로** 사용자에게 확인받기
|
|
37
|
+
4. 요구사항을 파악하고 도메인을 식별. 도메인별로 작은 단위로 사용자에게 확인받기
|
|
39
38
|
- 한 번에 전체를 확인하지 말고 도메인별로 나누어 확인
|
|
40
39
|
- "이 부분이 맞나요?" 식으로 구체적으로 질문
|
|
41
|
-
|
|
40
|
+
5. 식별된 도메인 목록을 사용자에게 확인받기. PHASE 1에서 도메인별 `*.contract.md`를 작성함
|
|
42
41
|
|
|
43
42
|
### 3. 설정 확인
|
|
44
43
|
|
|
@@ -77,7 +76,7 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
77
76
|
**완료 기준:**
|
|
78
77
|
|
|
79
78
|
- [ ] 프로젝트 생성 완료
|
|
80
|
-
- [ ]
|
|
79
|
+
- [ ] 도메인 목록 식별 및 사용자 승인 완료
|
|
81
80
|
- [ ] sonamu.config.ts, .env 설정 확인 및 사용자 승인 완료
|
|
82
81
|
- [ ] Docker, dev 서버 실행 중
|
|
83
82
|
- [ ] Auth 엔티티 생성 및 migration 완료
|
|
@@ -85,58 +84,46 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
85
84
|
|
|
86
85
|
---
|
|
87
86
|
|
|
88
|
-
## PHASE
|
|
87
|
+
## PHASE 1: 도메인 Logic 문서화
|
|
89
88
|
|
|
90
89
|
**참조 스킬:** cdd.md
|
|
91
90
|
|
|
92
|
-
**CRITICAL: 이 PHASE가 완료되기 전에 엔티티 설계(PHASE
|
|
91
|
+
**CRITICAL: 이 PHASE가 완료되기 전에 엔티티 설계(PHASE 2)를 시작하지 않는다.**
|
|
93
92
|
|
|
94
|
-
### 7.
|
|
93
|
+
### 7. 도메인별 `*.contract.md` 작성
|
|
95
94
|
|
|
96
|
-
20. `
|
|
97
|
-
- `requirements.md`, `business-logic.md` 기반으로 작성
|
|
98
|
-
- 전체 프로젝트 Overview, 하위 도메인 목록, Domain Glossary, User Roles, Business Rules, Edge Cases 포함
|
|
99
|
-
- `content`는 Markdown 한 줄씩 `string[]`로 작성
|
|
100
|
-
21. 사용자에게 보고 후 승인 대기
|
|
101
|
-
|
|
102
|
-
### 8. 도메인별 contract 작성
|
|
103
|
-
|
|
104
|
-
22. `business-logic.md`에서 도메인을 식별하고 도메인 목록을 사용자에게 확인받기
|
|
105
|
-
23. 도메인별로 `packages/api/contract/{domain}/main.contract.json` 작성
|
|
95
|
+
20. PHASE 0에서 확인된 도메인별로 `contract/{domain}/{domain}.contract.md` 작성
|
|
106
96
|
- 도메인 폴더명은 영문 소문자 (예: `auth`, `organization`, `research`)
|
|
107
|
-
-
|
|
108
|
-
-
|
|
97
|
+
- 도메인 규칙, 상태 전이, 권한, Edge Cases 등 코드만으로 파악하기 어려운 결정 근거 포함
|
|
98
|
+
- 처음부터 완벽할 필요 없음 — 사용자와 대화하면서 점진적으로 정리
|
|
99
|
+
21. 도메인별로 작성 후 사용자에게 확인받기 (도메인별로 하나씩)
|
|
109
100
|
|
|
110
|
-
|
|
101
|
+
**`*.contract.md` 형식:**
|
|
111
102
|
|
|
112
|
-
|
|
103
|
+
```markdown
|
|
104
|
+
# {도메인} 비즈니스 로직
|
|
113
105
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- 사용자 검토 및 수정 반영
|
|
121
|
-
- 모든 spec 검토 완료 후에만 다음 PHASE로 진행
|
|
106
|
+
## 규칙
|
|
107
|
+
- 규칙과 결정 근거
|
|
108
|
+
|
|
109
|
+
## 워크플로우
|
|
110
|
+
1. ...
|
|
111
|
+
```
|
|
122
112
|
|
|
123
113
|
**완료 기준:**
|
|
124
114
|
|
|
125
|
-
- [ ] `
|
|
126
|
-
- [ ]
|
|
127
|
-
- [ ] 모든 domain spec 파일 작성 완료
|
|
128
|
-
- [ ] 사용자 spec 검토 완료
|
|
129
|
-
- [ ] `pnpm cdd test` 실행 시 MISSING 0, NO_MATCH 0 확인
|
|
115
|
+
- [ ] 모든 도메인의 `contract/{domain}/{domain}.contract.md` 작성 완료
|
|
116
|
+
- [ ] 사용자 도메인별 확인 완료
|
|
130
117
|
|
|
131
118
|
---
|
|
132
119
|
|
|
133
|
-
## PHASE
|
|
120
|
+
## PHASE 2: 엔티티 설계
|
|
134
121
|
|
|
135
122
|
**참조 스킬:** entity-basic.md, entity-relations.md
|
|
136
123
|
|
|
137
|
-
**전제 조건:** PHASE
|
|
124
|
+
**전제 조건:** PHASE 1 완료 (모든 도메인 `*.contract.md` 사용자 확인 완료)
|
|
138
125
|
|
|
139
|
-
###
|
|
126
|
+
### 8. 엔티티 설계
|
|
140
127
|
|
|
141
128
|
20. 사용자 요구사항에 맞는 엔티티 설계
|
|
142
129
|
- 설계하면서 사용자에게 비즈니스 로직에 맞는지 **지속적으로 디테일하게** 확인받을 것
|
|
@@ -156,22 +143,22 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
156
143
|
|
|
157
144
|
---
|
|
158
145
|
|
|
159
|
-
## PHASE
|
|
146
|
+
## PHASE 3: 엔티티 생성 및 마이그레이션
|
|
160
147
|
|
|
161
148
|
**참조 스킬:** entity-basic.md, entity-validation-checklist.md, migration.md
|
|
162
149
|
|
|
163
|
-
###
|
|
150
|
+
### 9. 엔티티 생성
|
|
164
151
|
|
|
165
152
|
22. 설계에 따라 **batch로** entity.json 생성
|
|
166
153
|
23. biome check, type check
|
|
167
154
|
24. 문제 없이 빌드되는지 확인
|
|
168
155
|
|
|
169
|
-
###
|
|
156
|
+
### 10. 마이그레이션
|
|
170
157
|
|
|
171
158
|
25. 사용자에게 Sonamu UI와 CLI 중 어떤 방식으로 migration을 진행할지 확인 후 실행
|
|
172
159
|
26. 실제 테이블이 생성되었는지 확인
|
|
173
160
|
|
|
174
|
-
###
|
|
161
|
+
### 11. Cone 및 Scaffolding
|
|
175
162
|
|
|
176
163
|
**참조 스킬:** cone.md
|
|
177
164
|
|
|
@@ -205,44 +192,47 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
205
192
|
|
|
206
193
|
---
|
|
207
194
|
|
|
208
|
-
## PHASE
|
|
195
|
+
## PHASE 4: 테스트 및 API 구현
|
|
196
|
+
|
|
197
|
+
**참조 스킬:** testing.md, testing-devrunner.md, naite.md, cdd.md
|
|
209
198
|
|
|
210
|
-
|
|
199
|
+
### 12. AC 구체화 및 Claim 구성
|
|
211
200
|
|
|
212
|
-
|
|
201
|
+
**AC(수락 기준)는 테스트 파일의 describe/test 이름이다.** 별도 문서로 관리하지 않는다.
|
|
213
202
|
|
|
214
|
-
33.
|
|
215
|
-
|
|
216
|
-
|
|
203
|
+
33. `contract/**/*.contract.md`와 실제 코드를 참고하여 도메인별 AC 목록 초안 작성
|
|
204
|
+
- **항상 User 관련 테스트가 우선**
|
|
205
|
+
34. 사용자와 논의하며 `pnpm cdd ac add`로 테스트 스켈레톤 생성
|
|
206
|
+
35. `pnpm cdd ac list`로 확정된 AC 목록 확인
|
|
207
|
+
36. Claim을 `tmp/claims/`에 YAML로 작성 (`surface` → `implement` 순)
|
|
208
|
+
- 상세 Claim 형식은 cdd.md 참조
|
|
217
209
|
|
|
218
|
-
###
|
|
210
|
+
### 13. Claim 실행 (반복)
|
|
219
211
|
|
|
220
|
-
각
|
|
212
|
+
각 Claim마다:
|
|
221
213
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
38. **model의 API 구현**
|
|
214
|
+
37. **AC 작성 + 구현 교차 반복** (AC 하나 → 구현 → 다음 AC → 구현)
|
|
215
|
+
38. biome check, type check
|
|
225
216
|
39. **`pnpm sonamu test`로 테스트 돌려보기**
|
|
226
217
|
- dev 서버가 올라가있지 않으면 올린 뒤 실행
|
|
227
218
|
|
|
228
|
-
###
|
|
219
|
+
### 14. 전체 검증
|
|
229
220
|
|
|
230
|
-
40. 모든
|
|
221
|
+
40. 모든 Claim 완료 후 전체 biome check, type check 및 빌드 확인
|
|
231
222
|
41. **`pnpm sonamu test`로 전체 테스트 실행**
|
|
232
223
|
|
|
233
224
|
**완료 기준:**
|
|
234
225
|
|
|
235
|
-
- [ ]
|
|
236
|
-
- [ ] 모든
|
|
237
|
-
- [ ] 모든
|
|
226
|
+
- [ ] 모든 도메인 AC 정의 완료 (테스트 파일에 스켈레톤으로 존재)
|
|
227
|
+
- [ ] 모든 Claim 실행 완료
|
|
228
|
+
- [ ] 모든 테스트 통과
|
|
238
229
|
- [ ] 전체 biome check, type check, build 통과
|
|
239
|
-
- [ ] 전체 테스트 통과
|
|
240
230
|
|
|
241
231
|
---
|
|
242
232
|
|
|
243
|
-
## PHASE
|
|
233
|
+
## PHASE 5: Fixture 생성
|
|
244
234
|
|
|
245
|
-
###
|
|
235
|
+
### 15. Fixture 생성
|
|
246
236
|
|
|
247
237
|
42. 사용자에게 fixture 생성할지 확인
|
|
248
238
|
43. 모든 엔티티의 prop에 `cone.note`가 존재하는지 체크
|
|
@@ -254,7 +244,7 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
254
244
|
- `pnpm sonamu fixture gen --include User,Account,Session --count 10 --use-llm`
|
|
255
245
|
- **CRITICAL**: User.id string PK를 위한 `users_id_seq`가 생성되어 있어야 함 (PHASE 0 Step 18-19에서 설정)
|
|
256
246
|
- 상세 내용은 `auth-migration.md` "Better-auth 엔티티 Fixture 생성" 섹션 참조
|
|
257
|
-
46. 승인하면
|
|
247
|
+
46. 승인하면 Claim 단위로 fixture 생성 (LLM 사용 필수)
|
|
258
248
|
- `--use-llm` 옵션은 반드시 사용 (cone.note 기반 도메인 맥락 반영 필수)
|
|
259
249
|
47. 실제 DB에 생성되었는지 사용자에게 확인 요청
|
|
260
250
|
48. **`pnpm sonamu test`로 전체 테스트 재실행**
|
|
@@ -271,21 +261,19 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
271
261
|
|
|
272
262
|
---
|
|
273
263
|
|
|
274
|
-
## PHASE
|
|
264
|
+
## PHASE 6: Frontend 개발
|
|
275
265
|
|
|
276
266
|
**참조 스킬:** frontend.md
|
|
277
267
|
|
|
278
|
-
###
|
|
268
|
+
### 16. Frontend 계획
|
|
279
269
|
|
|
280
270
|
49. Frontend 개발 진행할지 사용자에게 확인
|
|
281
|
-
50. 승인 후
|
|
282
|
-
51. `.claude/skills/project/frontend-plan.md`에 기록
|
|
283
|
-
52. `architecture.md`에 frontend-plan.md 링크 추가
|
|
271
|
+
50. 승인 후 도메인별 Frontend 개발 계획을 `contract/{domain}/{domain}.contract.md`에 추가하거나 사용자와 구두로 확인
|
|
284
272
|
|
|
285
|
-
###
|
|
273
|
+
### 17. Batch별 Frontend 개발 (반복)
|
|
286
274
|
|
|
287
|
-
|
|
288
|
-
|
|
275
|
+
51. batch 대로 조금씩 진행하며 **사용자에게 확인 요청**
|
|
276
|
+
52. 사용자가 브라우저에서 확인 후 Claude Code에게 피드백
|
|
289
277
|
- "확인했다"
|
|
290
278
|
- "로직대로 된다"
|
|
291
279
|
- "이 부분이 잘 안 된다"
|
|
@@ -293,7 +281,6 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
293
281
|
|
|
294
282
|
**완료 기준:**
|
|
295
283
|
|
|
296
|
-
- [ ] frontend-plan.md 기록 완료
|
|
297
284
|
- [ ] 모든 batch의 Frontend 구현 완료
|
|
298
285
|
- [ ] 사용자 확인 및 피드백 반영 완료
|
|
299
286
|
|
|
@@ -301,17 +288,21 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
301
288
|
|
|
302
289
|
## 프로젝트 문서 구조
|
|
303
290
|
|
|
304
|
-
워크플로우 진행 중 다음 문서들이
|
|
291
|
+
워크플로우 진행 중 다음 문서들이 생성된다:
|
|
305
292
|
|
|
306
293
|
```
|
|
294
|
+
contract/
|
|
295
|
+
└── {domain}/
|
|
296
|
+
└── {domain}.contract.md # PHASE 1: 도메인 규칙 + 결정 근거 (영구 문서)
|
|
297
|
+
|
|
307
298
|
.claude/skills/project/
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
├── test-plan.md # PHASE 3: batch별 테스트 계획
|
|
312
|
-
└── frontend-plan.md # PHASE 5: batch별 Frontend 개발 계획
|
|
299
|
+
└── architecture.md # PHASE 2: 엔티티 설계안
|
|
300
|
+
|
|
301
|
+
tmp/claims/ # PHASE 4: 실행 중 Claim YAML (완료 후 폐기)
|
|
313
302
|
```
|
|
314
303
|
|
|
304
|
+
**Ground truth는 코드다.** `*.contract.md`는 코드 결정의 근거를 기록하는 문서이지 선행 정의서가 아니다. 코드와 `*.contract.md`가 충돌하면 코드를 우선한다.
|
|
305
|
+
|
|
315
306
|
---
|
|
316
307
|
|
|
317
308
|
## 핵심 원칙
|
|
@@ -320,6 +311,7 @@ description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Fro
|
|
|
320
311
|
2. **테스트는 `pnpm sonamu test`** — `pnpm test`는 CI용
|
|
321
312
|
3. **순서를 지킬 것** — 단계를 건너뛰지 않음
|
|
322
313
|
4. **사용자에게 자주 확인** — 추측하지 말고 질문
|
|
323
|
-
5. **
|
|
314
|
+
5. **Claim 단위로 작업** — 한 번에 모든 것을 하지 않음
|
|
324
315
|
6. **User 관련이 항상 우선** — 테스트, API, Frontend 모두
|
|
325
|
-
7.
|
|
316
|
+
7. **Ground truth는 코드** — `*.contract.md`는 근거 기록, 코드와 충돌 시 코드 우선
|
|
317
|
+
8. **신규는 contract→Claim→AC→implement, 변경은 code→Claim→contract 갱신**
|
package/src/syncer/syncer.ts
CHANGED
|
@@ -283,7 +283,7 @@ export class Syncer {
|
|
|
283
283
|
|
|
284
284
|
async autoloadWorkflows() {
|
|
285
285
|
this.workflows = await loadWorkflows();
|
|
286
|
-
await Sonamu.workflows
|
|
286
|
+
await Sonamu.workflows.synchronize(this.workflows);
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
async autoloadSSRRoutes(): Promise<void> {
|
|
@@ -200,7 +200,10 @@ export async function registerDevTestRoutes(
|
|
|
200
200
|
};
|
|
201
201
|
manager.addEventListener(listener);
|
|
202
202
|
|
|
203
|
+
let cleaned = false;
|
|
203
204
|
const cleanup = () => {
|
|
205
|
+
if (cleaned) return;
|
|
206
|
+
cleaned = true;
|
|
204
207
|
clearInterval(heartbeatTimer);
|
|
205
208
|
manager.removeEventListener(listener);
|
|
206
209
|
};
|
package/src/ui/api.ts
CHANGED
|
@@ -1087,12 +1087,15 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1087
1087
|
|
|
1088
1088
|
// Tasks API
|
|
1089
1089
|
server.get("/api/tasks/status", async () => {
|
|
1090
|
-
|
|
1090
|
+
try {
|
|
1091
|
+
Sonamu.workflows;
|
|
1092
|
+
return { active: true };
|
|
1093
|
+
} catch {
|
|
1094
|
+
return { active: false };
|
|
1095
|
+
}
|
|
1091
1096
|
});
|
|
1092
1097
|
|
|
1093
1098
|
server.get("/api/tasks/workflowDefinitions", async () => {
|
|
1094
|
-
if (!Sonamu.workflows)
|
|
1095
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1096
1099
|
const definitions = Sonamu.workflows.workflowDefinitions;
|
|
1097
1100
|
return { definitions };
|
|
1098
1101
|
});
|
|
@@ -1109,8 +1112,6 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1109
1112
|
createdBefore?: string;
|
|
1110
1113
|
};
|
|
1111
1114
|
}>("/api/tasks/workflowRuns", async (request) => {
|
|
1112
|
-
if (!Sonamu.workflows)
|
|
1113
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1114
1115
|
const backend = Sonamu.workflows.backend;
|
|
1115
1116
|
const { limit, after, before, order, status, workflowName, createdAfter, createdBefore } =
|
|
1116
1117
|
request.query;
|
|
@@ -1129,8 +1130,6 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1129
1130
|
server.get<{
|
|
1130
1131
|
Params: { id: string };
|
|
1131
1132
|
}>("/api/tasks/workflowRuns/:id", async (request) => {
|
|
1132
|
-
if (!Sonamu.workflows)
|
|
1133
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1134
1133
|
const backend = Sonamu.workflows.backend;
|
|
1135
1134
|
const workflowRun = await backend.getWorkflowRun({
|
|
1136
1135
|
workflowRunId: request.params.id,
|
|
@@ -1144,8 +1143,6 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1144
1143
|
server.post<{
|
|
1145
1144
|
Params: { id: string };
|
|
1146
1145
|
}>("/api/tasks/workflowRuns/:id/cancel", async (request) => {
|
|
1147
|
-
if (!Sonamu.workflows)
|
|
1148
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1149
1146
|
const backend = Sonamu.workflows.backend;
|
|
1150
1147
|
return backend.cancelWorkflowRun({
|
|
1151
1148
|
workflowRunId: request.params.id,
|
|
@@ -1155,8 +1152,6 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1155
1152
|
server.post<{
|
|
1156
1153
|
Params: { id: string };
|
|
1157
1154
|
}>("/api/tasks/workflowRuns/:id/pause", async (request) => {
|
|
1158
|
-
if (!Sonamu.workflows)
|
|
1159
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1160
1155
|
const backend = Sonamu.workflows.backend;
|
|
1161
1156
|
return backend.pauseWorkflowRun({
|
|
1162
1157
|
workflowRunId: request.params.id,
|
|
@@ -1166,8 +1161,6 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1166
1161
|
server.post<{
|
|
1167
1162
|
Params: { id: string };
|
|
1168
1163
|
}>("/api/tasks/workflowRuns/:id/resume", async (request) => {
|
|
1169
|
-
if (!Sonamu.workflows)
|
|
1170
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1171
1164
|
const backend = Sonamu.workflows.backend;
|
|
1172
1165
|
return backend.resumeWorkflowRun({
|
|
1173
1166
|
workflowRunId: request.params.id,
|
|
@@ -1182,8 +1175,6 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
|
|
|
1182
1175
|
before?: string;
|
|
1183
1176
|
};
|
|
1184
1177
|
}>("/api/tasks/workflowRuns/:id/steps", async (request) => {
|
|
1185
|
-
if (!Sonamu.workflows)
|
|
1186
|
-
throw new Error("Workflows not initialized (database not configured)");
|
|
1187
1178
|
const backend = Sonamu.workflows.backend;
|
|
1188
1179
|
const { limit, after, before } = request.query;
|
|
1189
1180
|
return backend.listStepAttempts({
|