oh-my-mango 0.0.13 → 0.0.14
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/src/index.d.ts.map +1 -1
- package/dist/src/index.js +57 -229
- package/dist/src/index.js.map +1 -1
- package/dist/src/permissions.d.ts +23 -0
- package/dist/src/permissions.d.ts.map +1 -0
- package/dist/src/permissions.js +37 -0
- package/dist/src/permissions.js.map +1 -0
- package/dist/src/tools/call-mango.d.ts +19 -0
- package/dist/src/tools/call-mango.d.ts.map +1 -0
- package/dist/src/tools/call-mango.js +68 -0
- package/dist/src/tools/call-mango.js.map +1 -0
- package/package.json +1 -1
- package/dist/src/tools/call-build-mango.d.ts +0 -11
- package/dist/src/tools/call-build-mango.d.ts.map +0 -1
- package/dist/src/tools/call-build-mango.js +0 -14
- package/dist/src/tools/call-build-mango.js.map +0 -1
- package/dist/src/tools/call-issue-mango.d.ts +0 -11
- package/dist/src/tools/call-issue-mango.d.ts.map +0 -1
- package/dist/src/tools/call-issue-mango.js +0 -14
- package/dist/src/tools/call-issue-mango.js.map +0 -1
- package/dist/src/tools/call-pr-mango.d.ts +0 -11
- package/dist/src/tools/call-pr-mango.d.ts.map +0 -1
- package/dist/src/tools/call-pr-mango.js +0 -14
- package/dist/src/tools/call-pr-mango.js.map +0 -1
- package/dist/src/tools/call-research-mango.d.ts +0 -14
- package/dist/src/tools/call-research-mango.d.ts.map +0 -1
- package/dist/src/tools/call-research-mango.js +0 -17
- package/dist/src/tools/call-research-mango.js.map +0 -1
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAsOlD,QAAA,MAAM,MAAM,EAAE,MAkEb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { remind_list, remind_read, remind_search, remind_info, remind_find, } from "./tools/remind";
|
|
2
2
|
import { find_file, find_content, find_recent } from "./tools/find";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { createCallIssueMango } from "./tools/call-issue-mango";
|
|
6
|
-
import { createCallPrMango } from "./tools/call-pr-mango";
|
|
3
|
+
import { createCallMango } from "./tools/call-mango";
|
|
4
|
+
// TODO
|
|
7
5
|
const PR_MANGO_PROMPT = `# PR 망고
|
|
8
6
|
|
|
9
7
|
브랜치/PR 생성 및 작업 관리를 담당하는 서브에이전트입니다.
|
|
@@ -65,85 +63,39 @@ const PR_MANGO_PROMPT = `# PR 망고
|
|
|
65
63
|
- 커밋 내역 요약
|
|
66
64
|
- 검증 결과
|
|
67
65
|
`;
|
|
68
|
-
|
|
66
|
+
// TODO
|
|
67
|
+
const ISSUE_MANGO_PROMPT = `#행동 지침
|
|
69
68
|
|
|
70
|
-
|
|
69
|
+
**맥락과 핵심 문제를 전달받아, 이슈를 관리하는 것이 목표입니다.**
|
|
71
70
|
|
|
72
|
-
##
|
|
73
|
-
|
|
74
|
-
망고로부터 맥락과 핵심 문제를 전달받아:
|
|
75
|
-
1. 이슈 타입 판단 (task/story/report)
|
|
76
|
-
2. 이슈 제목 및 내용 작성
|
|
77
|
-
3. 이슈 생성 (담당자 등록 필수)
|
|
78
|
-
4. plan.md 내용 작성
|
|
79
|
-
5. 결과를 망고에게 보고
|
|
71
|
+
## 이슈 생성
|
|
80
72
|
|
|
81
|
-
|
|
73
|
+
### 유형
|
|
82
74
|
|
|
83
|
-
### 타입
|
|
84
75
|
- **task**: 기술 작업 (버그 수정, 기능 구현 등)
|
|
85
76
|
- **story**: 내부 개발자의 아이디어/예상 요구
|
|
86
77
|
- **report**: 외부 사용자의 제보/문의/요청
|
|
87
78
|
|
|
88
|
-
###
|
|
89
|
-
\`{type}: {제목}\`
|
|
90
|
-
|
|
91
|
-
### 본문 형식
|
|
92
|
-
배경/맥락과 해결해야 할 것을 목록으로 간결하게 작성
|
|
93
|
-
|
|
94
|
-
### 생성 명령
|
|
95
|
-
\`gh issue create --title "{type}: {제목}" --body "{본문}" --assignee {담당자}\`
|
|
96
|
-
|
|
97
|
-
## plan.md 양식
|
|
98
|
-
|
|
99
|
-
\`\`\`markdown
|
|
100
|
-
# {작업 제목}
|
|
101
|
-
|
|
102
|
-
## 배경
|
|
103
|
-
- {왜 필요한지, 관련 이슈/PR}
|
|
104
|
-
|
|
105
|
-
## 작업
|
|
106
|
-
- [ ] {작업 1}
|
|
107
|
-
- [ ] {작업 2}
|
|
108
|
-
|
|
109
|
-
## 검증
|
|
110
|
-
- {어떻게 확인할지}
|
|
111
|
-
\`\`\`
|
|
79
|
+
### 절차
|
|
112
80
|
|
|
113
|
-
|
|
81
|
+
\`gh issue create --title "{유형}: {제목}" --body "{본문}" --assignee {담당자}\`
|
|
114
82
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
83
|
+
1. 가장 적합한 이슈 유형을 판단합니다.
|
|
84
|
+
2. 제목은 핵심 문제를 한 문장으로 요약하여 작성합니다.
|
|
85
|
+
3. 본문은 전달 받은 맥락을 간결하게 정리하여 작성합니다.
|
|
86
|
+
4. 담당자까지 잘 지정하여 이슈를 생성합니다.
|
|
87
|
+
5. 생성된 이슈 번호와 URL을 보고합니다.
|
|
118
88
|
`;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
이슈, 계획 문서, 브랜치, PR에 대한 검토/생성/보고를 담당하는 서브에이전트입니다.
|
|
122
|
-
|
|
123
|
-
## 역할
|
|
124
|
-
|
|
125
|
-
메인 망고로부터 계획 수립 단계를 위임받아:
|
|
126
|
-
1. 이슈 검토/생성
|
|
127
|
-
2. plan.md 검토/생성
|
|
128
|
-
3. 브랜치 검토/생성
|
|
129
|
-
4. PR 검토/생성
|
|
130
|
-
5. 결과를 메인 망고에게 보고
|
|
131
|
-
|
|
132
|
-
## 이슈 컨벤션
|
|
89
|
+
// TODO
|
|
90
|
+
const PLAN_MANGO_PROMPT = `# 행동 지침
|
|
133
91
|
|
|
134
|
-
|
|
135
|
-
- **task**: 기술 작업 (버그 수정, 기능 구현 등)
|
|
136
|
-
- **story**: 내부 개발자의 아이디어/예상 요구
|
|
137
|
-
- **report**: 외부 사용자의 제보/문의/요청
|
|
92
|
+
**해결할 문제를 명확하게 이해하고, 목표 달성에 필요한 조건들을 기준으로 체계적인 계획을 수립하는 것이 목표입니다.**
|
|
138
93
|
|
|
139
|
-
|
|
140
|
-
\`{type}: {제목}\`
|
|
94
|
+
## 필수 지침
|
|
141
95
|
|
|
142
|
-
|
|
143
|
-
배경/맥락과 해결해야 할 것을 목록으로 간결하게 작성
|
|
96
|
+
- **문제 이해**: 해결할 문제와 목표를 명확히 파악합니다.
|
|
144
97
|
|
|
145
|
-
|
|
146
|
-
\`gh issue create --title "{type}: {제목}" --body "{본문}" --assignee {담당자}\`
|
|
98
|
+
## 역할
|
|
147
99
|
|
|
148
100
|
## plan.md 양식
|
|
149
101
|
|
|
@@ -168,54 +120,17 @@ const PLAN_MANGO_PROMPT = `# 플랜 망고
|
|
|
168
120
|
|
|
169
121
|
### 생성 명령
|
|
170
122
|
\`gh issue develop {이슈번호} --checkout --name "{형식}"\`
|
|
171
|
-
|
|
172
|
-
## PR 컨벤션
|
|
173
|
-
|
|
174
|
-
### 제목 형식
|
|
175
|
-
\`[#{이슈번호}] {유저} ({YYYY-MM-DD})\`
|
|
176
|
-
|
|
177
|
-
### 본문
|
|
178
|
-
이슈 연결 필수: \`Closes #{이슈번호}\`
|
|
179
|
-
|
|
180
|
-
### 생성 명령
|
|
181
|
-
\`gh pr create --title "{제목}" --body "{본문}" --assignee {담당자}\`
|
|
182
|
-
|
|
183
|
-
## 보고 형식
|
|
184
|
-
|
|
185
|
-
작업 완료 후 메인 망고에게 보고:
|
|
186
|
-
- 이슈 번호 및 URL (생성/기존)
|
|
187
|
-
- plan.md 내용 요약
|
|
188
|
-
- 브랜치명
|
|
189
|
-
- PR 번호 및 URL
|
|
190
123
|
`;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
개별 작업 단위의 진행/검증/보고/기록을 담당하는 서브에이전트입니다.
|
|
194
|
-
|
|
195
|
-
## 역할
|
|
196
|
-
|
|
197
|
-
메인 망고로부터 작업 진행 단계를 위임받아:
|
|
198
|
-
1. plan.md 작업 항목 순차 진행
|
|
199
|
-
2. 각 작업 완료 후 검증
|
|
200
|
-
3. 검증 성공 시 커밋
|
|
201
|
-
4. 검증 실패 시 롤백 후 재시도 또는 보고
|
|
202
|
-
5. 모든 작업 완료 후 결과를 메인 망고에게 보고
|
|
203
|
-
|
|
204
|
-
## 작업 진행 규칙
|
|
124
|
+
// TODO
|
|
125
|
+
const BUILD_MANGO_PROMPT = `# 행동 지침
|
|
205
126
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
- 이전 작업 검증 완료 후 다음 작업 진행
|
|
127
|
+
**요구사항을 만족하는 최적의 결과물을 생성하고, 철저히 검증하는 것이 목표입니다.**
|
|
128
|
+
|
|
129
|
+
## 필수 지침
|
|
210
130
|
|
|
211
|
-
|
|
212
|
-
- 빌드, 린트, 타입, 테스트 등 정적 검증 진행
|
|
213
|
-
- 테스트 환경 구성이 가능하다면 실제 동작 및 예상 동작 등 동적 검증 진행
|
|
131
|
+
- **요구사항 이해**: 작업의 요구사항과 목표를 명확히 파악합니다.
|
|
214
132
|
|
|
215
|
-
|
|
216
|
-
1. 변경 사항 롤백
|
|
217
|
-
2. 원인 분석
|
|
218
|
-
3. 재시도 또는 메인 망고에게 보고
|
|
133
|
+
개별 작업 단위의 진행/검증/보고/기록을 담당하는 서브에이전트입니다.
|
|
219
134
|
|
|
220
135
|
## 커밋 컨벤션
|
|
221
136
|
|
|
@@ -255,93 +170,34 @@ const BUILD_MANGO_PROMPT = `# 빌드 망고
|
|
|
255
170
|
- 검증 결과
|
|
256
171
|
- 발생한 이슈 (있는 경우)
|
|
257
172
|
`;
|
|
258
|
-
const COACH_MANGO_PROMPT = `#
|
|
259
|
-
|
|
260
|
-
plan.md 기반 실행 오케스트레이션을 담당하는 서브에이전트입니다.
|
|
261
|
-
|
|
262
|
-
## 역할
|
|
263
|
-
|
|
264
|
-
메인 망고로부터 plan.md를 전달받아:
|
|
265
|
-
1. plan.md 파싱 및 작업 목록 추출
|
|
266
|
-
2. 작업별 담당 망고에게 순차 위임
|
|
267
|
-
3. 각 작업 완료 후 검증 체크리스트 확인
|
|
268
|
-
4. 모든 작업 완료 후 최종 검증
|
|
269
|
-
5. 결과를 메인 망고에게 보고
|
|
270
|
-
|
|
271
|
-
## 사용 가능 도구
|
|
272
|
-
|
|
273
|
-
### 3계층 망고 호출
|
|
274
|
-
- call_build_mango: 코드 작업 (구현, 수정, 리팩토링)
|
|
275
|
-
- call_issue_mango: 이슈 생성/수정
|
|
276
|
-
- call_pr_mango: PR 생성/머지
|
|
277
|
-
|
|
278
|
-
### 공통 망고 호출
|
|
279
|
-
- call_research_mango: 정보 조사/탐색
|
|
280
|
-
|
|
281
|
-
## 워크플로우
|
|
282
|
-
|
|
283
|
-
### 1. plan.md 파싱
|
|
284
|
-
- 작업 섹션에서 체크리스트 추출
|
|
285
|
-
- 검증 섹션에서 자동/수동 검증 항목 추출
|
|
286
|
-
|
|
287
|
-
### 2. 순차 위임
|
|
288
|
-
- 작업 순서대로 담당 망고 호출
|
|
289
|
-
- 이전 작업 완료 확인 후 다음 작업 진행
|
|
290
|
-
- 실패 시 롤백 후 메인 망고에게 보고
|
|
173
|
+
const COACH_MANGO_PROMPT = `# 행동 지침
|
|
291
174
|
|
|
292
|
-
|
|
293
|
-
- 자동 검증: 빌드 망고에게 위임 (빌드, 린트, 테스트)
|
|
294
|
-
- 수동 검증: 체크리스트 항목을 메인 망고에게 확인 요청
|
|
295
|
-
- 예: 버전 업데이트 여부, 머지 방식 등
|
|
175
|
+
**전문가들과의 협력을 통해 계획을 실행하고, 완벽한 결과를 도출하는 것이 목표입니다.**
|
|
296
176
|
|
|
297
|
-
|
|
298
|
-
- 완료된 작업 목록
|
|
299
|
-
- 검증 결과 (자동/수동 구분)
|
|
300
|
-
- 발생한 이슈 및 해결 방법
|
|
301
|
-
|
|
302
|
-
## 주의 사항
|
|
177
|
+
## 필수 지침
|
|
303
178
|
|
|
304
|
-
-
|
|
305
|
-
-
|
|
306
|
-
-
|
|
179
|
+
- **목표 파악**: 계획의 목표를 이해하고, 의도에 부합하는 결과가 무엇인지 명확히 합니다.
|
|
180
|
+
- **전략 수립**: 실행, 검토, 검증, 기록, 보고가 필요한 지점들을 확실히 파악하여 전략을 세웁니다.
|
|
181
|
+
- **확실한 검증**: 활용할 수 있는 검증 수단, 방식을 적극적으로 모색하여 검증 계획을 수립합니다.
|
|
182
|
+
- **완전성 확보**: 검토 및 검증 절차를 거친 실행 결과만 업무에 영향을 미치도록 보장합니다.
|
|
183
|
+
- **품질 보증**: 담당 전문가가 최소한의 기본 검증을 수행하도록 하여 실행 결과의 최소 품질을 보호합니다.
|
|
184
|
+
- **원만한 협력**: 각 단계에 적합한 전문가를 선정하여 실행하며, 원활한 소통을 유지합니다.
|
|
185
|
+
- **검토 및 검증**: 실행 결과가 올바른지 검토하고, 확실하게 검증하며, 필요시 재작업을 요청합니다.
|
|
186
|
+
- **적극적 보고**: 아주 약간이라도 모호한 상황이 발생하면 명확한 설명과 함께 보고합니다.
|
|
187
|
+
- **투명한 기록**: 단계 실행이 완료되면 결과를, 필요시 과정까지 포함하여, 기록하거나 보고합니다.
|
|
307
188
|
`;
|
|
308
|
-
const RESEARCH_MANGO_PROMPT = `#
|
|
309
|
-
|
|
310
|
-
정보 조사 및 탐색을 전담하는 서브에이전트입니다.
|
|
311
|
-
|
|
312
|
-
## 역할
|
|
189
|
+
const RESEARCH_MANGO_PROMPT = `# 행동 지침
|
|
313
190
|
|
|
314
|
-
|
|
315
|
-
1. 과거 세션 기록 조회/검색
|
|
316
|
-
2. 파일 시스템 탐색
|
|
317
|
-
3. 수집한 정보를 정리하여 보고
|
|
191
|
+
**요청의 실제 의도를 파악하고, 정확하면서 유용한 정보를 수집하여 제공하는 것이 목표입니다.**
|
|
318
192
|
|
|
319
|
-
##
|
|
320
|
-
|
|
321
|
-
### 세션 조회 (remind_*)
|
|
322
|
-
- remind_list: 세션 목록 조회
|
|
323
|
-
- remind_read: 세션 메시지 읽기
|
|
324
|
-
- remind_search: 세션 메시지 검색
|
|
325
|
-
- remind_info: 세션 메타데이터 조회
|
|
326
|
-
- remind_find: 세션 이름으로 검색
|
|
327
|
-
|
|
328
|
-
### 파일 탐색 (find_*)
|
|
329
|
-
- find_file: 파일명 패턴 검색
|
|
330
|
-
- find_content: 파일 내용 검색
|
|
331
|
-
- find_recent: 최근 수정 파일 조회
|
|
332
|
-
|
|
333
|
-
## 제한 사항
|
|
334
|
-
- 읽기 전용: 파일 수정/생성 불가
|
|
335
|
-
- 정보 수집만: 직접적인 작업 수행 불가
|
|
336
|
-
- 보고 의무: 수집한 정보는 반드시 요청자에게 보고
|
|
337
|
-
|
|
338
|
-
## 보고 형식
|
|
193
|
+
## 필수 지침
|
|
339
194
|
|
|
340
|
-
|
|
341
|
-
-
|
|
342
|
-
-
|
|
343
|
-
- 관련
|
|
344
|
-
-
|
|
195
|
+
- **의도 파악**: 표면적 질문이 아닌 실제로 알고 싶은 것을 파악합니다.
|
|
196
|
+
- **전략 수립**: 유용한 정보를 수집할 수 있을 것으로 기대되는 수단을 선정하고, 효과적인 탐색 방법을 계획합니다.
|
|
197
|
+
- **효율적 탐색**: 가능성이 가장 높은 방식으로 탐색을 시작하여 필요시 확장합니다.
|
|
198
|
+
- **맥락 연결**: 핵심 정보 이외에도 관련 내용들을 연결지어 풍부한 맥락을 제공합니다.
|
|
199
|
+
- **명확한 보고**: 출처, 생성 시점, 추정 여부 등 신뢰성 판단에 도움이 되는 정보도 함께 제공합니다.
|
|
200
|
+
- **한계 인정**: 정보 탐색이 어려운 경우, 솔직하게 보고하고, 다른 접근법에 대한 제안을 포함합니다.
|
|
345
201
|
`;
|
|
346
202
|
const MANGO_PROMPT = `# 행동 지침
|
|
347
203
|
|
|
@@ -352,46 +208,13 @@ const MANGO_PROMPT = `# 행동 지침
|
|
|
352
208
|
- **문제 구체화**: 구체적인 상황과 궁극적인 목표를 파악하는 것이 가장 중요합니다.
|
|
353
209
|
- **문제 해결**: 문제가 충분히 구체화되었다면 필요한 정보 또는 해결책을 제공합니다.
|
|
354
210
|
- **분할 정복**: 큰 문제를 여러 작은 문제로 나누고, 적합한 수단들을 적극 활용하여 문제를 해결합니다.
|
|
355
|
-
- **전문 분야 집중**: **실행이 필요한 작업은 직접 수행하지 않고, 반드시 적합한 서브에이전트에게 위임**합니다.
|
|
356
|
-
- **임의 조치 금지**: **적합한 서브에이전트가 없다면, 반드시 사용자 허가를 받은 후에 실행**합니다.
|
|
357
211
|
- **맞춤형 질문**: 사용자의 의도를 구체화할 수 있는 맞춤형 질문을 제공하여 의도를 명확히 합니다.
|
|
358
212
|
- **진실 추구**: 정확하고 신뢰할 수 있는 정보를 제공하며, 출처가 명확하지 않은 정보는 사용하지 않습니다.
|
|
359
213
|
- **명확한 소통**: 모든 답변은 명확하고 간결하게 하며, 100% 확신할 수 없다면 유의사항과 함께 안내합니다.
|
|
360
214
|
- **한계 인지**: 모르는 내용에 대해서는 솔직하게 인정하고, 추가 정보를 요청하거나 다른 방법을 제안합니다.
|
|
361
|
-
|
|
362
|
-
## 워크플로우
|
|
363
|
-
|
|
364
|
-
### 1. 문제 정의
|
|
365
|
-
|
|
366
|
-
사용자와의 대화를 통해 문제를 구체화합니다.
|
|
367
|
-
|
|
368
|
-
- 문제 구체화
|
|
369
|
-
- 해결책 모색
|
|
370
|
-
- 분할 정복 구조 제안
|
|
371
|
-
|
|
372
|
-
**실제 기록은 생성하지 않습니다.**
|
|
373
|
-
사용자가 "진행해" 또는 "실행해"라고 명시하면 다음 단계로 진행합니다.
|
|
374
|
-
|
|
375
|
-
### 2. 계획 수립
|
|
376
|
-
|
|
377
|
-
플랜 망고에게 위임합니다.
|
|
378
|
-
- 검토 받을 내용 준비 → 사용자 검토 → 승인 시 실행
|
|
379
|
-
|
|
380
|
-
### 3. 작업 진행
|
|
381
|
-
|
|
382
|
-
빌드 망고에게 위임합니다.
|
|
383
|
-
- 검토 받을 내용 준비 → 사용자 검토 → 승인 시 실행
|
|
384
|
-
|
|
385
|
-
### 4. 검증 및 완료
|
|
386
|
-
|
|
387
|
-
작업 결과를 검증하고 사용자에게 보고합니다.
|
|
388
215
|
`;
|
|
389
216
|
const plugin = async (ctx) => {
|
|
390
217
|
console.log("[oh-my-mango] initialized");
|
|
391
|
-
const call_research_mango = createCallResearchMango(ctx);
|
|
392
|
-
const call_build_mango = createCallBuildMango(ctx);
|
|
393
|
-
const call_issue_mango = createCallIssueMango(ctx);
|
|
394
|
-
const call_pr_mango = createCallPrMango(ctx);
|
|
395
218
|
return {
|
|
396
219
|
config: async (config) => {
|
|
397
220
|
config.agent = {
|
|
@@ -400,36 +223,43 @@ const plugin = async (ctx) => {
|
|
|
400
223
|
prompt: MANGO_PROMPT,
|
|
401
224
|
description: "oh-my-mango 기본 에이전트",
|
|
402
225
|
mode: "primary",
|
|
226
|
+
permission: { call_mango_plan: "deny", call_mango_coach: "deny" },
|
|
403
227
|
},
|
|
404
228
|
"issue-mango": {
|
|
405
229
|
prompt: ISSUE_MANGO_PROMPT,
|
|
406
230
|
description: "이슈 생성 및 계획 수립 서브에이전트",
|
|
407
231
|
mode: "subagent",
|
|
232
|
+
permission: { call_mango_plan: "deny", call_mango_coach: "deny" },
|
|
408
233
|
},
|
|
409
234
|
"plan-mango": {
|
|
410
235
|
prompt: PLAN_MANGO_PROMPT,
|
|
411
236
|
description: "이슈, 계획 문서, 브랜치, PR 검토/생성/보고 서브에이전트",
|
|
412
237
|
mode: "subagent",
|
|
238
|
+
permission: { call_mango_plan: "allow", call_mango_coach: "deny" },
|
|
413
239
|
},
|
|
414
240
|
"build-mango": {
|
|
415
241
|
prompt: BUILD_MANGO_PROMPT,
|
|
416
242
|
description: "개별 작업 단위 진행/검증/보고/기록 서브에이전트",
|
|
417
243
|
mode: "subagent",
|
|
244
|
+
permission: { call_mango_plan: "deny", call_mango_coach: "deny" },
|
|
418
245
|
},
|
|
419
246
|
"coach-mango": {
|
|
420
247
|
prompt: COACH_MANGO_PROMPT,
|
|
421
248
|
description: "plan.md 기반 실행 오케스트레이션 서브에이전트",
|
|
422
249
|
mode: "subagent",
|
|
250
|
+
permission: { call_mango_plan: "deny", call_mango_coach: "allow" },
|
|
423
251
|
},
|
|
424
252
|
"pr-mango": {
|
|
425
253
|
prompt: PR_MANGO_PROMPT,
|
|
426
254
|
description: "브랜치/PR 생성 및 작업 관리 서브에이전트",
|
|
427
255
|
mode: "subagent",
|
|
256
|
+
permission: { call_mango_plan: "deny", call_mango_coach: "deny" },
|
|
428
257
|
},
|
|
429
258
|
"research-mango": {
|
|
430
259
|
prompt: RESEARCH_MANGO_PROMPT,
|
|
431
260
|
description: "정보 조사 및 탐색 전담 서브에이전트",
|
|
432
261
|
mode: "subagent",
|
|
262
|
+
permission: { call_mango_plan: "deny", call_mango_coach: "deny" },
|
|
433
263
|
},
|
|
434
264
|
};
|
|
435
265
|
config.default_agent = "mango";
|
|
@@ -443,10 +273,8 @@ const plugin = async (ctx) => {
|
|
|
443
273
|
find_file,
|
|
444
274
|
find_content,
|
|
445
275
|
find_recent,
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
call_issue_mango,
|
|
449
|
-
call_pr_mango,
|
|
276
|
+
call_mango_plan: createCallMango(ctx, "plan-mango"),
|
|
277
|
+
call_mango_coach: createCallMango(ctx, "coach-mango"),
|
|
450
278
|
},
|
|
451
279
|
};
|
|
452
280
|
};
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 에이전트 호출 권한 시스템
|
|
3
|
+
*
|
|
4
|
+
* - 망고(1계층): opencode의 Task 도구로 서브에이전트(plan-mango, coach-mango 등) 호출
|
|
5
|
+
* - 관리 계층(plan-mango, coach-mango): call_mango 도구로 실행/어댑터 계층 호출
|
|
6
|
+
* - 실행/어댑터 계층: 다른 에이전트 호출 불가
|
|
7
|
+
*/
|
|
8
|
+
export type AgentId = 'mango' | 'plan-mango' | 'coach-mango' | 'research-mango' | 'build-mango' | 'issue-mango' | 'pr-mango';
|
|
9
|
+
export declare const CALL_PERMISSIONS: Record<AgentId, AgentId[]>;
|
|
10
|
+
/**
|
|
11
|
+
* 호출 권한 검증
|
|
12
|
+
* @param caller 호출하는 에이전트
|
|
13
|
+
* @param target 호출 대상 에이전트
|
|
14
|
+
* @returns 호출 가능 여부
|
|
15
|
+
*/
|
|
16
|
+
export declare function canCall(caller: AgentId, target: AgentId): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 호출 가능한 대상 목록 반환
|
|
19
|
+
* @param caller 호출하는 에이전트
|
|
20
|
+
* @returns 호출 가능한 에이전트 목록
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCallableTargets(caller: AgentId): AgentId[];
|
|
23
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,MAAM,MAAM,OAAO,GACf,OAAO,GACP,YAAY,GACZ,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,UAAU,CAAC;AAIf,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAQvD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAGjE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,CAE7D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 에이전트 호출 권한 시스템
|
|
3
|
+
*
|
|
4
|
+
* - 망고(1계층): opencode의 Task 도구로 서브에이전트(plan-mango, coach-mango 등) 호출
|
|
5
|
+
* - 관리 계층(plan-mango, coach-mango): call_mango 도구로 실행/어댑터 계층 호출
|
|
6
|
+
* - 실행/어댑터 계층: 다른 에이전트 호출 불가
|
|
7
|
+
*/
|
|
8
|
+
// 호출 가능 대상 정의
|
|
9
|
+
// key: 호출하는 에이전트, value: 호출 가능한 대상 에이전트 목록
|
|
10
|
+
export const CALL_PERMISSIONS = {
|
|
11
|
+
'mango': [], // opencode Task 도구로 서브에이전트 호출, call_mango 사용 안함
|
|
12
|
+
'plan-mango': ['research-mango', 'build-mango', 'issue-mango', 'pr-mango'],
|
|
13
|
+
'coach-mango': ['research-mango', 'build-mango', 'issue-mango', 'pr-mango'],
|
|
14
|
+
'research-mango': [], // 실행 계층, 호출 불가
|
|
15
|
+
'build-mango': [], // 실행 계층, 호출 불가
|
|
16
|
+
'issue-mango': [], // 어댑터 계층, 호출 불가
|
|
17
|
+
'pr-mango': [], // 어댑터 계층, 호출 불가
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* 호출 권한 검증
|
|
21
|
+
* @param caller 호출하는 에이전트
|
|
22
|
+
* @param target 호출 대상 에이전트
|
|
23
|
+
* @returns 호출 가능 여부
|
|
24
|
+
*/
|
|
25
|
+
export function canCall(caller, target) {
|
|
26
|
+
const allowedTargets = CALL_PERMISSIONS[caller];
|
|
27
|
+
return allowedTargets?.includes(target) ?? false;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 호출 가능한 대상 목록 반환
|
|
31
|
+
* @param caller 호출하는 에이전트
|
|
32
|
+
* @returns 호출 가능한 에이전트 목록
|
|
33
|
+
*/
|
|
34
|
+
export function getCallableTargets(caller) {
|
|
35
|
+
return CALL_PERMISSIONS[caller] ?? [];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,cAAc;AACd,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,OAAO,EAAE,EAAE,EAAE,gDAAgD;IAC7D,YAAY,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;IAC1E,aAAa,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;IAC3E,gBAAgB,EAAE,EAAE,EAAE,eAAe;IACrC,aAAa,EAAE,EAAE,EAAE,eAAe;IAClC,aAAa,EAAE,EAAE,EAAE,gBAAgB;IACnC,UAAU,EAAE,EAAE,EAAE,gBAAgB;CACjC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,MAAe,EAAE,MAAe;IACtD,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
+
import { type AgentId } from "../permissions";
|
|
3
|
+
/**
|
|
4
|
+
* ctx와 callerAgent를 받아서 call_mango 도구를 생성하는 팩토리 함수
|
|
5
|
+
* @param ctx MCP 컨텍스트
|
|
6
|
+
* @param callerAgent 호출하는 에이전트 ID
|
|
7
|
+
*/
|
|
8
|
+
export declare function createCallMango(ctx: PluginInput, callerAgent: AgentId): {
|
|
9
|
+
description: string;
|
|
10
|
+
args: {
|
|
11
|
+
agent: import("zod").ZodEnum<{}>;
|
|
12
|
+
prompt: import("zod").ZodString;
|
|
13
|
+
};
|
|
14
|
+
execute(args: {
|
|
15
|
+
agent: never;
|
|
16
|
+
prompt: string;
|
|
17
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=call-mango.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-mango.d.ts","sourceRoot":"","sources":["../../../src/tools/call-mango.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AA8B1E;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO;;;;;;;;;;EA6CrE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { callAgent } from "../utils/call-agent";
|
|
3
|
+
import { canCall, getCallableTargets } from "../permissions";
|
|
4
|
+
/**
|
|
5
|
+
* 에이전트별 한글 설명
|
|
6
|
+
*
|
|
7
|
+
* plan-mango용 call_mango_plan 도구:
|
|
8
|
+
* - call_mango_plan 도구를 사용하여 실행/어댑터 계층 에이전트를 호출합니다
|
|
9
|
+
* - 호출 가능 대상: research-mango, build-mango, issue-mango, pr-mango
|
|
10
|
+
*
|
|
11
|
+
* coach-mango용 call_mango_coach 도구:
|
|
12
|
+
* - call_mango_coach 도구를 사용하여 실행/어댑터 계층 에이전트를 호출합니다
|
|
13
|
+
* - 호출 가능 대상: research-mango, build-mango, issue-mango, pr-mango
|
|
14
|
+
*/
|
|
15
|
+
const AGENT_DESCRIPTIONS = {
|
|
16
|
+
"research-mango": "리서치 망고에게 정보 조사/탐색 요청",
|
|
17
|
+
"build-mango": "빌드 망고에게 코드 작업 요청",
|
|
18
|
+
"issue-mango": "이슈 망고에게 이슈 생성/수정 요청",
|
|
19
|
+
"pr-mango": "PR 망고에게 PR 생성/머지 요청",
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 동적으로 호출 가능한 에이전트 목록을 enum으로 생성
|
|
23
|
+
*/
|
|
24
|
+
function createAgentEnum(callableTargets) {
|
|
25
|
+
return callableTargets.reduce((acc, target) => {
|
|
26
|
+
acc[target] = target;
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* ctx와 callerAgent를 받아서 call_mango 도구를 생성하는 팩토리 함수
|
|
32
|
+
* @param ctx MCP 컨텍스트
|
|
33
|
+
* @param callerAgent 호출하는 에이전트 ID
|
|
34
|
+
*/
|
|
35
|
+
export function createCallMango(ctx, callerAgent) {
|
|
36
|
+
const callableTargets = getCallableTargets(callerAgent);
|
|
37
|
+
// 호출 가능한 대상이 없는 경우 빈 도구 반환
|
|
38
|
+
if (callableTargets.length === 0) {
|
|
39
|
+
return tool({
|
|
40
|
+
description: "호출 권한이 없습니다",
|
|
41
|
+
args: {
|
|
42
|
+
agent: tool.schema.enum([]).describe("호출할 에이전트 (권한 없음)"),
|
|
43
|
+
prompt: tool.schema.string().describe("작업 요청 내용"),
|
|
44
|
+
},
|
|
45
|
+
execute: async () => {
|
|
46
|
+
return `Error: ${callerAgent}는 다른 에이전트를 호출할 권한이 없습니다.`;
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// 동적으로 agent enum 생성
|
|
51
|
+
const agentEnum = createAgentEnum(callableTargets);
|
|
52
|
+
return tool({
|
|
53
|
+
description: `다른 망고 에이전트에게 작업 요청 (${callerAgent}용)`,
|
|
54
|
+
args: {
|
|
55
|
+
agent: tool.schema.enum(Object.keys(agentEnum)).describe(`호출할 에이전트: ${callableTargets.map(target => `${target} (${AGENT_DESCRIPTIONS[target] || "작업 요청"})`).join(", ")}`),
|
|
56
|
+
prompt: tool.schema.string().describe("작업 요청 내용"),
|
|
57
|
+
},
|
|
58
|
+
execute: async ({ agent, prompt }, toolContext) => {
|
|
59
|
+
// 권한 검증
|
|
60
|
+
if (!canCall(callerAgent, agent)) {
|
|
61
|
+
return `Error: ${callerAgent}는 ${agent}를 호출할 권한이 없습니다.`;
|
|
62
|
+
}
|
|
63
|
+
// 에이전트 호출
|
|
64
|
+
return await callAgent(ctx, { sessionID: toolContext.sessionID }, agent, prompt);
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=call-mango.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-mango.js","sourceRoot":"","sources":["../../../src/tools/call-mango.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAgB,MAAM,gBAAgB,CAAA;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,kBAAkB,GAA2B;IACjD,gBAAgB,EAAE,sBAAsB;IACxC,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,qBAAqB;IACpC,UAAU,EAAE,qBAAqB;CAClC,CAAA;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,eAA0B;IACjD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;QACpB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAA4B,CAAC,CAAA;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAgB,EAAE,WAAoB;IACpE,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAEvD,2BAA2B;IAC3B,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;YACV,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACxD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;aAClD;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,OAAO,UAAU,WAAW,0BAA0B,CAAA;YACxD,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;IAElD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,uBAAuB,WAAW,IAAI;QACnD,IAAI,EAAE;YACJ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CACtD,aAAa,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACxC,GAAG,MAAM,KAAK,kBAAkB,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,CACvD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf;YACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SAClD;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE;YAChD,QAAQ;YACR,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAgB,CAAC,EAAE,CAAC;gBAC5C,OAAO,UAAU,WAAW,KAAK,KAAK,iBAAiB,CAAA;YACzD,CAAC;YAED,UAAU;YACV,OAAO,MAAM,SAAS,CACpB,GAAG,EACH,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EACpC,KAAK,EACL,MAAM,CACP,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
export declare function createCallBuildMango(ctx: PluginInput): {
|
|
3
|
-
description: string;
|
|
4
|
-
args: {
|
|
5
|
-
prompt: import("zod").ZodString;
|
|
6
|
-
};
|
|
7
|
-
execute(args: {
|
|
8
|
-
prompt: string;
|
|
9
|
-
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=call-build-mango.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-build-mango.d.ts","sourceRoot":"","sources":["../../../src/tools/call-build-mango.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAItD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW;;;;;;;;EAepD"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { callAgent } from "../utils/call-agent";
|
|
3
|
-
export function createCallBuildMango(ctx) {
|
|
4
|
-
return tool({
|
|
5
|
-
description: "빌드 망고에게 코드 작업 요청",
|
|
6
|
-
args: {
|
|
7
|
-
prompt: tool.schema.string().describe("작업 요청 내용"),
|
|
8
|
-
},
|
|
9
|
-
execute: async ({ prompt }, toolContext) => {
|
|
10
|
-
return await callAgent(ctx, { sessionID: toolContext.sessionID }, "build-mango", prompt);
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=call-build-mango.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-build-mango.js","sourceRoot":"","sources":["../../../src/tools/call-build-mango.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SAClD;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE;YACzC,OAAO,MAAM,SAAS,CACpB,GAAG,EACH,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EACpC,aAAa,EACb,MAAM,CACP,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
export declare function createCallIssueMango(ctx: PluginInput): {
|
|
3
|
-
description: string;
|
|
4
|
-
args: {
|
|
5
|
-
prompt: import("zod").ZodString;
|
|
6
|
-
};
|
|
7
|
-
execute(args: {
|
|
8
|
-
prompt: string;
|
|
9
|
-
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=call-issue-mango.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-issue-mango.d.ts","sourceRoot":"","sources":["../../../src/tools/call-issue-mango.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAItD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW;;;;;;;;EAepD"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { callAgent } from "../utils/call-agent";
|
|
3
|
-
export function createCallIssueMango(ctx) {
|
|
4
|
-
return tool({
|
|
5
|
-
description: "이슈 망고에게 이슈 생성/수정 요청",
|
|
6
|
-
args: {
|
|
7
|
-
prompt: tool.schema.string().describe("작업 요청 내용"),
|
|
8
|
-
},
|
|
9
|
-
execute: async ({ prompt }, toolContext) => {
|
|
10
|
-
return await callAgent(ctx, { sessionID: toolContext.sessionID }, "issue-mango", prompt);
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=call-issue-mango.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-issue-mango.js","sourceRoot":"","sources":["../../../src/tools/call-issue-mango.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SAClD;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE;YACzC,OAAO,MAAM,SAAS,CACpB,GAAG,EACH,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EACpC,aAAa,EACb,MAAM,CACP,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
export declare function createCallPrMango(ctx: PluginInput): {
|
|
3
|
-
description: string;
|
|
4
|
-
args: {
|
|
5
|
-
prompt: import("zod").ZodString;
|
|
6
|
-
};
|
|
7
|
-
execute(args: {
|
|
8
|
-
prompt: string;
|
|
9
|
-
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=call-pr-mango.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-pr-mango.d.ts","sourceRoot":"","sources":["../../../src/tools/call-pr-mango.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAItD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW;;;;;;;;EAejD"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { callAgent } from "../utils/call-agent";
|
|
3
|
-
export function createCallPrMango(ctx) {
|
|
4
|
-
return tool({
|
|
5
|
-
description: "PR 망고에게 PR 생성/머지 요청",
|
|
6
|
-
args: {
|
|
7
|
-
prompt: tool.schema.string().describe("작업 요청 내용"),
|
|
8
|
-
},
|
|
9
|
-
execute: async ({ prompt }, toolContext) => {
|
|
10
|
-
return await callAgent(ctx, { sessionID: toolContext.sessionID }, "pr-mango", prompt);
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=call-pr-mango.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-pr-mango.js","sourceRoot":"","sources":["../../../src/tools/call-pr-mango.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SAClD;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE;YACzC,OAAO,MAAM,SAAS,CACpB,GAAG,EACH,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EACpC,UAAU,EACV,MAAM,CACP,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
/**
|
|
3
|
-
* ctx를 받아서 call_research_mango 도구를 생성하는 팩토리 함수
|
|
4
|
-
*/
|
|
5
|
-
export declare function createCallResearchMango(ctx: PluginInput): {
|
|
6
|
-
description: string;
|
|
7
|
-
args: {
|
|
8
|
-
prompt: import("zod").ZodString;
|
|
9
|
-
};
|
|
10
|
-
execute(args: {
|
|
11
|
-
prompt: string;
|
|
12
|
-
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=call-research-mango.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-research-mango.d.ts","sourceRoot":"","sources":["../../../src/tools/call-research-mango.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAItD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW;;;;;;;;EAevD"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { callAgent } from "../utils/call-agent";
|
|
3
|
-
/**
|
|
4
|
-
* ctx를 받아서 call_research_mango 도구를 생성하는 팩토리 함수
|
|
5
|
-
*/
|
|
6
|
-
export function createCallResearchMango(ctx) {
|
|
7
|
-
return tool({
|
|
8
|
-
description: "리서치 망고에게 정보 조사/탐색 요청",
|
|
9
|
-
args: {
|
|
10
|
-
prompt: tool.schema.string().describe("조사 요청 내용"),
|
|
11
|
-
},
|
|
12
|
-
execute: async ({ prompt }, toolContext) => {
|
|
13
|
-
return await callAgent(ctx, { sessionID: toolContext.sessionID }, "research-mango", prompt);
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=call-research-mango.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-research-mango.js","sourceRoot":"","sources":["../../../src/tools/call-research-mango.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAgB;IACtD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SAClD;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE;YACzC,OAAO,MAAM,SAAS,CACpB,GAAG,EACH,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EACpC,gBAAgB,EAChB,MAAM,CACP,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|